| ... | ... | 
                  @@ -1,3 +1,7 @@  | 
              
| 1 | 
                  +0.1611  | 
              |
| 2 | 
                  + renamed update tag to update_param  | 
              |
| 3 | 
                  + renamed insert tag to insert_param  | 
              |
| 4 | 
                  + renamed sql_builder to query_builder  | 
              |
| 1 | 5 | 
                  0.1610  | 
              
| 2 | 6 | 
                  added filter_check attribute.  | 
              
| 3 | 7 | 
                  0.1609  | 
              
| ... | ... | 
                  @@ -24,7 +24,7 @@ __PACKAGE__->register_filter(  | 
              
| 24 | 24 | 
                  );  | 
              
| 25 | 25 | 
                   | 
              
| 26 | 26 | 
                  __PACKAGE__->attr(result_class => 'DBIx::Custom::Result');  | 
              
| 27 | 
                  -__PACKAGE__->attr(sql_builder  => sub {DBIx::Custom::QueryBuilder->new});
                 | 
              |
| 27 | 
                  +__PACKAGE__->attr(query_builder  => sub {DBIx::Custom::QueryBuilder->new});
                 | 
              |
| 28 | 28 | 
                   | 
              
| 29 | 29 | 
                  __PACKAGE__->attr(cache => 1);  | 
              
| 30 | 30 | 
                   __PACKAGE__->attr(cache_method => sub {
                 | 
              
| ... | ... | 
                  @@ -107,7 +107,7 @@ sub insert {
                 | 
              
| 107 | 107 | 
                  my @insert_keys = keys %$param;  | 
              
| 108 | 108 | 
                   | 
              
| 109 | 109 | 
                  # Templte for insert  | 
              
| 110 | 
                  -    my $source = "insert into $table {insert "
                 | 
              |
| 110 | 
                  +    my $source = "insert into $table {insert_param "
                 | 
              |
| 111 | 111 | 
                                  . join(' ', @insert_keys) . '}';
                 | 
              
| 112 | 112 | 
                  $source .= " $append" if $append;  | 
              
| 113 | 113 | 
                   | 
              
| ... | ... | 
                  @@ -149,7 +149,7 @@ sub update {
                 | 
              
| 149 | 149 | 
                  if !@where_keys && !$allow_update_all;  | 
              
| 150 | 150 | 
                   | 
              
| 151 | 151 | 
                  # Update clause  | 
              
| 152 | 
                  -    my $update_clause = '{update ' . join(' ', @update_keys) . '}';
                 | 
              |
| 152 | 
                  +    my $update_clause = '{update_param ' . join(' ', @update_keys) . '}';
                 | 
              |
| 153 | 153 | 
                   | 
              
| 154 | 154 | 
                  # Where clause  | 
              
| 155 | 155 | 
                  my $where_clause = '';  | 
              
| ... | ... | 
                  @@ -339,7 +339,7 @@ sub create_query {
                 | 
              
| 339 | 339 | 
                       unless ($query) {
                 | 
              
| 340 | 340 | 
                   | 
              
| 341 | 341 | 
                  # Create SQL object  | 
              
| 342 | 
                  - my $builder = $self->sql_builder;  | 
              |
| 342 | 
                  + my $builder = $self->query_builder;  | 
              |
| 343 | 343 | 
                   | 
              
| 344 | 344 | 
                  # Create query  | 
              
| 345 | 345 | 
                           $query = eval{$builder->build_query($source)};
                 | 
              
| ... | ... | 
                  @@ -489,7 +489,7 @@ DBIx::Custom - DBI interface, having hash parameter binding and filtering system  | 
              
| 489 | 489 | 
                   | 
              
| 490 | 490 | 
                  =cut  | 
              
| 491 | 491 | 
                   | 
              
| 492 | 
                  -our $VERSION = '0.1610';  | 
              |
| 492 | 
                  +our $VERSION = '0.1611';  | 
              |
| 493 | 493 | 
                   | 
              
| 494 | 494 | 
                  =head1 STABILITY  | 
              
| 495 | 495 | 
                   | 
              
| ... | ... | 
                  @@ -501,25 +501,25 @@ Method name and implementations will be changed for a while.  | 
              
| 501 | 501 | 
                  Connect to the database.  | 
              
| 502 | 502 | 
                   | 
              
| 503 | 503 | 
                  use DBIx::Custom;  | 
              
| 504 | 
                  - my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=books",  | 
              |
| 504 | 
                  + my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname",  | 
              |
| 505 | 505 | 
                  user => 'ken', password => '!LFKD%$&');  | 
              
| 506 | 506 | 
                   | 
              
| 507 | 507 | 
                  Insert, update, and delete  | 
              
| 508 | 508 | 
                   | 
              
| 509 | 509 | 
                  # Insert  | 
              
| 510 | 510 | 
                  $dbi->insert(table => 'books',  | 
              
| 511 | 
                  -                 param  => {title => 'perl', author => 'Ken'},
                 | 
              |
| 511 | 
                  +                 param  => {title => 'Perl', author => 'Ken'},
                 | 
              |
| 512 | 512 | 
                                    filter => {title => 'encode_utf8'});
                 | 
              
| 513 | 513 | 
                   | 
              
| 514 | 514 | 
                  # Update  | 
              
| 515 | 515 | 
                  $dbi->update(table => 'books',  | 
              
| 516 | 
                  -                 param  => {title => 'aaa', author => 'Ken'}, 
                 | 
              |
| 516 | 
                  +                 param  => {title => 'Perl', author => 'Ken'}, 
                 | 
              |
| 517 | 517 | 
                                    where  => {id => 5},
                 | 
              
| 518 | 518 | 
                                    filter => {title => 'encode_utf8'});
                 | 
              
| 519 | 519 | 
                   | 
              
| 520 | 520 | 
                  # Update all  | 
              
| 521 | 521 | 
                  $dbi->update_all(table => 'books',  | 
              
| 522 | 
                  -                     param  => {title => 'aaa'},
                 | 
              |
| 522 | 
                  +                     param  => {title => 'Perl'},
                 | 
              |
| 523 | 523 | 
                                        filter => {title => 'encode_utf8'});
                 | 
              
| 524 | 524 | 
                   | 
              
| 525 | 525 | 
                  # Delete  | 
              
| ... | ... | 
                  @@ -595,7 +595,7 @@ Fetch row.  | 
              
| 595 | 595 | 
                   | 
              
| 596 | 596 | 
                  }  | 
              
| 597 | 597 | 
                   | 
              
| 598 | 
                  -=head1 DESCRIPTION  | 
              |
| 598 | 
                  +=head1 DESCRIPTIONS  | 
              |
| 599 | 599 | 
                   | 
              
| 600 | 600 | 
                  =head2 1. Features  | 
              
| 601 | 601 | 
                   | 
              
| ... | ... | 
                  @@ -616,33 +616,37 @@ to execute SQL easily.  | 
              
| 616 | 616 | 
                  L<DBIx::Custom> respects SQL. SQL is very complex and not beautiful,  | 
              
| 617 | 617 | 
                  but de-facto standard,  | 
              
| 618 | 618 | 
                  so all people learing database know it.  | 
              
| 619 | 
                  -If you know SQL,  | 
              |
| 620 | 
                  -you learn a little thing to do your works, using L<DBIx::Custom>  | 
              |
| 619 | 
                  +If you already know SQL,  | 
              |
| 620 | 
                  +you learn a little thing to use L<DBIx::Custom>.  | 
              |
| 621 | 621 | 
                   | 
              
| 622 | 
                  -=head2 1. Connect to the database  | 
              |
| 622 | 
                  +=head2 2. Connect to the database  | 
              |
| 623 | 623 | 
                   | 
              
| 624 | 624 | 
                  C<connect()> method create a new L<DBIx::Custom>  | 
              
| 625 | 625 | 
                  object and connect to the database.  | 
              
| 626 | 626 | 
                   | 
              
| 627 | 627 | 
                  use DBIx::Custom;  | 
              
| 628 | 
                  - my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=books",  | 
              |
| 628 | 
                  + my $dbi = DBIx::Custom->connect(data_source => "dbi:mysql:database=dbname",  | 
              |
| 629 | 629 | 
                  user => 'ken', password => '!LFKD%$&');  | 
              
| 630 | 630 | 
                   | 
              
| 631 | 
                  -If database is SQLite, use L<DBIx::Custom::SQLite>. you connect database easy way.  | 
              |
| 631 | 
                  +If database is SQLite, use L<DBIx::Custom::SQLite> instead.  | 
              |
| 632 | 
                  +you connect database easily.  | 
              |
| 632 | 633 | 
                   | 
              
| 633 | 634 | 
                  use DBIx::Custom::SQLite;  | 
              
| 634 | 
                  - my $dbi = DBIx::Custom->connect(database => 'books');  | 
              |
| 635 | 
                  + my $dbi = DBIx::Custom::SQLite->connect(database => 'dbname');  | 
              |
| 635 | 636 | 
                   | 
              
| 636 | 637 | 
                  If database is MySQL, use L<DBIx::Costom::MySQL>.  | 
              
| 637 | 638 | 
                   | 
              
| 638 | 639 | 
                  use DBIx::Custom::MySQL;  | 
              
| 639 | 
                  - my $dbi = DBIx::Custom->connect(database => 'books',  | 
              |
| 640 | 
                  - user => 'ken', password => '!LFKD%$&');  | 
              |
| 640 | 
                  + my $dbi = DBIx::Custom::MySQL->connect(  | 
              |
| 641 | 
                  + database => 'dbname',  | 
              |
| 642 | 
                  + user => 'ken',  | 
              |
| 643 | 
                  + password => '!LFKD%$&'  | 
              |
| 644 | 
                  + );  | 
              |
| 641 | 645 | 
                   | 
              
| 642 | 
                  -=head2 2. Suger methods  | 
              |
| 646 | 
                  +=head2 3. Suger methods  | 
              |
| 643 | 647 | 
                   | 
              
| 644 | 648 | 
                  L<DBIx::Custom> has suger methods, such as C<insert()>, C<update()>,  | 
              
| 645 | 
                  -C<delete()> and C<select()>. If you want to do small works,  | 
              |
| 649 | 
                  +C<delete()> or C<select()>. If you want to do small works,  | 
              |
| 646 | 650 | 
                  You don't have to create SQL statements.  | 
              
| 647 | 651 | 
                   | 
              
| 648 | 652 | 
                  =head3 insert()  | 
              
| ... | ... | 
                  @@ -650,35 +654,35 @@ You don't have to create SQL statements.  | 
              
| 650 | 654 | 
                  Execute insert statement.  | 
              
| 651 | 655 | 
                   | 
              
| 652 | 656 | 
                  $dbi->insert(table => 'books',  | 
              
| 653 | 
                  -                 param  => {title => 'perl', author => 'Ken'});
                 | 
              |
| 657 | 
                  +                 param  => {title => 'Perl', author => 'Ken'});
                 | 
              |
| 654 | 658 | 
                   | 
              
| 655 | 659 | 
                  The following SQL is executed.  | 
              
| 656 | 660 | 
                   | 
              
| 657 | 661 | 
                  insert into (title, author) values (?, ?);  | 
              
| 658 | 662 | 
                   | 
              
| 659 | 
                  -The values of C<title> and C<author> is embedded into placeholders.  | 
              |
| 663 | 
                  +The values of C<title> and C<author> is embedded into the placeholders.  | 
              |
| 660 | 664 | 
                   | 
              
| 661 | 
                  -C<append> and C<filter> argument can be specified  | 
              |
| 662 | 
                  -to C<insert()> method if you need.  | 
              |
| 665 | 
                  +C<append> and C<filter> argument can be specified.  | 
              |
| 666 | 
                  +See also "METHODS" section.  | 
              |
| 663 | 667 | 
                   | 
              
| 664 | 668 | 
                  =head3 update()  | 
              
| 665 | 669 | 
                   | 
              
| 666 | 670 | 
                  Execute update statement.  | 
              
| 667 | 671 | 
                   | 
              
| 668 | 672 | 
                  $dbi->update(table => 'books',  | 
              
| 669 | 
                  -                 param  => {title => 'aaa', author => 'Ken'}, 
                 | 
              |
| 673 | 
                  +                 param  => {title => 'Perl', author => 'Ken'}, 
                 | 
              |
| 670 | 674 | 
                                    where  => {id => 5});
                 | 
              
| 671 | 675 | 
                   | 
              
| 672 | 676 | 
                  The following SQL is executed.  | 
              
| 673 | 677 | 
                   | 
              
| 674 | 678 | 
                  update books set title = ?, author = ?;  | 
              
| 675 | 679 | 
                   | 
              
| 676 | 
                  -The values of C<title> and C<author> is embedded into placeholders.  | 
              |
| 680 | 
                  +The values of C<title> and C<author> is embedded into the placeholders.  | 
              |
| 677 | 681 | 
                   | 
              
| 678 | 
                  -C<append> and C<filter> argument can be specified  | 
              |
| 679 | 
                  -to C<update()> method if you need.  | 
              |
| 682 | 
                  +C<append> and C<filter> argument can be specified.  | 
              |
| 683 | 
                  +See also "METHOD" section.  | 
              |
| 680 | 684 | 
                   | 
              
| 681 | 
                  -If you want to update all rows, use C<update_all()> method instead.  | 
              |
| 685 | 
                  +If you want to update all rows, use C<update_all()> method.  | 
              |
| 682 | 686 | 
                   | 
              
| 683 | 687 | 
                  =head3 delete()  | 
              
| 684 | 688 | 
                   | 
              
| ... | ... | 
                  @@ -693,10 +697,10 @@ The following SQL is executed.  | 
              
| 693 | 697 | 
                   | 
              
| 694 | 698 | 
                  The value of C<id> is embedded into the placehodler.  | 
              
| 695 | 699 | 
                   | 
              
| 696 | 
                  -C<append> and C<filter> argument can be specified  | 
              |
| 697 | 
                  -to C<delete()> method if you need.  | 
              |
| 700 | 
                  +C<append> and C<filter> argument can be specified.  | 
              |
| 701 | 
                  +see also "METHODS" section.  | 
              |
| 698 | 702 | 
                   | 
              
| 699 | 
                  -If you want to delete all rows, use C<delete_all()> method instead.  | 
              |
| 703 | 
                  +If you want to delete all rows, use C<delete_all()> method.  | 
              |
| 700 | 704 | 
                   | 
              
| 701 | 705 | 
                  =head3 select()  | 
              
| 702 | 706 | 
                   | 
              
| ... | ... | 
                  @@ -709,7 +713,7 @@ The following SQL is executed.  | 
              
| 709 | 713 | 
                  select * from books;  | 
              
| 710 | 714 | 
                   | 
              
| 711 | 715 | 
                  the result of C<select()> method is L<DBIx::Custom::Result> object.  | 
              
| 712 | 
                  -You can fetch row.  | 
              |
| 716 | 
                  +You can fetch a row by C<fetch()> method.  | 
              |
| 713 | 717 | 
                   | 
              
| 714 | 718 | 
                       while (my $row = $result->fetch) {
                 | 
              
| 715 | 719 | 
                  my $title = $row->[0];  | 
              
| ... | ... | 
                  @@ -717,20 +721,21 @@ You can fetch row.  | 
              
| 717 | 721 | 
                  }  | 
              
| 718 | 722 | 
                   | 
              
| 719 | 723 | 
                  L<DBIx::Custom::Result> has various methods to fetch row.  | 
              
| 720 | 
                  -See "3. Fetch row".  | 
              |
| 724 | 
                  +See "4. Fetch row".  | 
              |
| 721 | 725 | 
                   | 
              
| 722 | 
                  -Specify C<column> and C<where> arguments.  | 
              |
| 726 | 
                  +C<column> and C<where> arguments specified.  | 
              |
| 723 | 727 | 
                   | 
              
| 724 | 728 | 
                  my $result = $dbi->select(  | 
              
| 725 | 729 | 
                  table => 'books',  | 
              
| 726 | 730 | 
                  column => [qw/author title/],  | 
              
| 727 | 
                  -        where  => {author => 'Ken'});
                 | 
              |
| 731 | 
                  +        where  => {author => 'Ken'}
                 | 
              |
| 732 | 
                  + );  | 
              |
| 728 | 733 | 
                   | 
              
| 729 | 734 | 
                  The following SQL is executed.  | 
              
| 730 | 735 | 
                   | 
              
| 731 | 736 | 
                  select author, title from books where author = ?;  | 
              
| 732 | 737 | 
                   | 
              
| 733 | 
                  -the value of C<author> is embdded into placeholder.  | 
              |
| 738 | 
                  +the value of C<author> is embdded into the placeholder.  | 
              |
| 734 | 739 | 
                   | 
              
| 735 | 740 | 
                  If you want to join tables, specify C<relation> argument.  | 
              
| 736 | 741 | 
                   | 
              
| ... | ... | 
                  @@ -742,13 +747,12 @@ If you want to join tables, specify C<relation> argument.  | 
              
| 742 | 747 | 
                   | 
              
| 743 | 748 | 
                  The following SQL is executed.  | 
              
| 744 | 749 | 
                   | 
              
| 745 | 
                  - select books.name as book_name from books  | 
              |
| 750 | 
                  + select books.name as book_name from books, rental  | 
              |
| 746 | 751 | 
                  where books.id = rental.book_id;  | 
              
| 747 | 752 | 
                   | 
              
| 748 | 
                  -C<append> argument add a string to the end of SQL statement.  | 
              |
| 749 | 
                  -You can add "order by" or "limit" cluase.  | 
              |
| 753 | 
                  +If you want to add some string to the end of SQL statement,  | 
              |
| 754 | 
                  +use C<append> argument.  | 
              |
| 750 | 755 | 
                   | 
              
| 751 | 
                  - # Select, more complex  | 
              |
| 752 | 756 | 
                  my $result = $dbi->select(  | 
              
| 753 | 757 | 
                  table => 'books',  | 
              
| 754 | 758 | 
                           where  => {author => 'Ken'},
                 | 
              
| ... | ... | 
                  @@ -759,13 +763,15 @@ The following SQL is executed.  | 
              
| 759 | 763 | 
                   | 
              
| 760 | 764 | 
                  select * books where author = ? order by price limit 5;  | 
              
| 761 | 765 | 
                   | 
              
| 762 | 
                  -C<filter> argument can be specified to filter parameters  | 
              |
| 763 | 
                  -if you need.  | 
              |
| 766 | 
                  +C<filter> argument can be specified.  | 
              |
| 767 | 
                  +see also "METHODS" section.  | 
              |
| 764 | 768 | 
                   | 
              
| 765 | 
                  -=head2 3. Fetch row  | 
              |
| 769 | 
                  +=head2 4. Fetch row  | 
              |
| 766 | 770 | 
                   | 
              
| 767 | 771 | 
                  C<select()> method return L<DBIx::Custom::Result> object.  | 
              
| 768 | 772 | 
                  You can fetch row by various methods.  | 
              
| 773 | 
                  +Note that in this section, array means array reference,  | 
              |
| 774 | 
                  +and hash meanse hash reference.  | 
              |
| 769 | 775 | 
                   | 
              
| 770 | 776 | 
                  Fetch row into array.  | 
              
| 771 | 777 | 
                   | 
              
| ... | ... | 
                  @@ -820,15 +826,15 @@ Fetch all rows into array of hash  | 
              
| 820 | 826 | 
                   | 
              
| 821 | 827 | 
                  my $rows = $result->fetch_hash_all;  | 
              
| 822 | 828 | 
                   | 
              
| 823 | 
                  -If you want to access raw statement handle of L<DBI>, use C<sth()> attribute.  | 
              |
| 829 | 
                  +If you want to access statement handle of L<DBI>, use C<sth()> attribute.  | 
              |
| 824 | 830 | 
                   | 
              
| 825 | 831 | 
                  my $sth = $result->sth;  | 
              
| 826 | 832 | 
                   | 
              
| 827 | 
                  -=head2 4. Hash parameter binding  | 
              |
| 833 | 
                  +=head2 5. Hash parameter binding  | 
              |
| 828 | 834 | 
                   | 
              
| 829 | 835 | 
                  L<DBIx::Custom> provides hash parameter binding.  | 
              
| 830 | 836 | 
                   | 
              
| 831 | 
                  -At frist, I show normal way of parameter binding.  | 
              |
| 837 | 
                  +At frist, I show normal parameter binding.  | 
              |
| 832 | 838 | 
                   | 
              
| 833 | 839 | 
                  use DBI;  | 
              
| 834 | 840 | 
                  my $dbh = DBI->connect(...);  | 
              
| ... | ... | 
                  @@ -838,10 +844,10 @@ At frist, I show normal way of parameter binding.  | 
              
| 838 | 844 | 
                       $sth->execute('Ken', '%Perl%');
                 | 
              
| 839 | 845 | 
                   | 
              
| 840 | 846 | 
                  This is very good way because database system can enable SQL caching,  | 
              
| 841 | 
                  -and parameter is quoted automatically, it is secure.  | 
              |
| 847 | 
                  +and parameter is quoted automatically. this is secure.  | 
              |
| 842 | 848 | 
                   | 
              
| 843 | 849 | 
                  L<DBIx::Custom> hash parameter binding system improve  | 
              
| 844 | 
                  -normal parameter binding way to specify hash parameter.  | 
              |
| 850 | 
                  +normal parameter binding to use hash parameter.  | 
              |
| 845 | 851 | 
                   | 
              
| 846 | 852 | 
                  my $result = $dbi->execute(  | 
              
| 847 | 853 | 
                           "select * from books where {= author} and {like title};"
                 | 
              
| ... | ... | 
                  @@ -849,15 +855,12 @@ normal parameter binding way to specify hash parameter.  | 
              
| 849 | 855 | 
                  );  | 
              
| 850 | 856 | 
                   | 
              
| 851 | 857 | 
                  This is same as the normal way, execpt that the parameter is hash.  | 
              
| 852 | 
                  -{= author} is called C<tag>. tag is expand to placeholder string internally.
                 | 
              |
| 858 | 
                  +{= author} and {like title} is called C<tag>.
                 | 
              |
| 859 | 
                  +tag is expand to placeholder string internally.  | 
              |
| 853 | 860 | 
                   | 
              
| 854 | 861 | 
                       select * from books where {= author} and {like title}
                 | 
              
| 855 | 862 | 
                  -> select * from books where author = ? and title like ?;  | 
              
| 856 | 863 | 
                   | 
              
| 857 | 
                  -The following tags is available.  | 
              |
| 858 | 
                  -  | 
              |
| 859 | 
                  -=head1 Tags  | 
              |
| 860 | 
                  -  | 
              |
| 861 | 864 | 
                  The following tags is available.  | 
              
| 862 | 865 | 
                   | 
              
| 863 | 866 | 
                  [TAG] [REPLACED]  | 
              
| ... | ... | 
                  @@ -873,8 +876,8 @@ The following tags is available.  | 
              
| 873 | 876 | 
                       {like NAME}            ->   NAME like ?
                 | 
              
| 874 | 877 | 
                       {in NAME COUNT}        ->   NAME in [?, ?, ..]
                 | 
              
| 875 | 878 | 
                   | 
              
| 876 | 
                  -    {insert NAME1 NAME2}   ->   (NAME1, NAME2) values (?, ?)
                 | 
              |
| 877 | 
                  -    {update NAME1 NAME2}   ->   set NAME1 = ?, NAME2 = ?
                 | 
              |
| 879 | 
                  +    {insert_param NAME1 NAME2}   ->   (NAME1, NAME2) values (?, ?)
                 | 
              |
| 880 | 
                  +    {update_param NAME1 NAME2}   ->   set NAME1 = ?, NAME2 = ?
                 | 
              |
| 878 | 881 | 
                   | 
              
| 879 | 882 | 
                  See also L<DBIx::Custom::QueryBuilder>.  | 
              
| 880 | 883 | 
                   | 
              
| ... | ... | 
                  @@ -884,7 +887,7 @@ You can change this tag.  | 
              
| 884 | 887 | 
                       $dbi->query_builder->start_tag('|');
                 | 
              
| 885 | 888 | 
                       $dbi->query_builder->end_tag('|');
                 | 
              
| 886 | 889 | 
                   | 
              
| 887 | 
                  -=head2 5. Filtering  | 
              |
| 890 | 
                  +=head2 6. Filtering  | 
              |
| 888 | 891 | 
                   | 
              
| 889 | 892 | 
                  Usually, Perl string is kept as internal string.  | 
              
| 890 | 893 | 
                  If you want to save the string to database, You must encode the string.  | 
              
| ... | ... | 
                  @@ -910,13 +913,16 @@ You can specify these filters to C<filter> argument of C<execute()> method.  | 
              
| 910 | 913 | 
                           filter => {author => 'to_upper_case, title => 'encode_utf8'}
                 | 
              
| 911 | 914 | 
                  );  | 
              
| 912 | 915 | 
                   | 
              
| 913 | 
                  -you can also specify filter in suger methods, such as select(), update(), update_all,  | 
              |
| 914 | 
                  -delete(), delete_all(), select().  | 
              |
| 916 | 
                  +C<filter> argument can be specified to suger methods, such as  | 
              |
| 917 | 
                  +C<insert()>, C<update()>, C<update_all>,  | 
              |
| 918 | 
                  +C<delete()>, C<delete_all()>, C<select()>.  | 
              |
| 915 | 919 | 
                   | 
              
| 920 | 
                  + # insert(), having filter argument  | 
              |
| 916 | 921 | 
                  $dbi->insert(table => 'books',  | 
              
| 917 | 
                  -                 param  => {title => 'perl', author => 'Ken'},
                 | 
              |
| 922 | 
                  +                 param  => {title => 'Perl', author => 'Ken'},
                 | 
              |
| 918 | 923 | 
                                    filter => {title => 'encode_utf8'});
                 | 
              
| 919 | 
                  -  | 
              |
| 924 | 
                  +  | 
              |
| 925 | 
                  + # select(), having filter argument  | 
              |
| 920 | 926 | 
                  my $result = $dbi->select(  | 
              
| 921 | 927 | 
                  table => 'books',  | 
              
| 922 | 928 | 
                  column => [qw/author title/],  | 
              
| ... | ... | 
                  @@ -929,20 +935,20 @@ Filter works each parmeter, but you prepare default filter for all parameters.  | 
              
| 929 | 935 | 
                   | 
              
| 930 | 936 | 
                       $dbi->default_bind_filter('encode_utf8');
                 | 
              
| 931 | 937 | 
                   | 
              
| 932 | 
                  -C<filter()> argument overwrites the filter specified by C<default_bind_filter()>.  | 
              |
| 938 | 
                  +C<filter()> argument overwrites this default filter.  | 
              |
| 933 | 939 | 
                   | 
              
| 934 | 940 | 
                       $dbi->default_bind_filter('encode_utf8');
                 | 
              
| 935 | 941 | 
                  $dbi->insert(  | 
              
| 936 | 942 | 
                  table => 'books',  | 
              
| 937 | 
                  -        param  => {title => 'perl', author => 'Ken', price => 1000},
                 | 
              |
| 943 | 
                  +        param  => {title => 'Perl', author => 'Ken', price => 1000},
                 | 
              |
| 938 | 944 | 
                           filter => {author => 'to_upper_case', price => undef}
                 | 
              
| 939 | 945 | 
                  );  | 
              
| 940 | 946 | 
                   | 
              
| 941 | 
                  -This is same as the following one.  | 
              |
| 947 | 
                  +This is same as the following example.  | 
              |
| 942 | 948 | 
                   | 
              
| 943 | 949 | 
                  $dbi->insert(  | 
              
| 944 | 950 | 
                  table => 'books',  | 
              
| 945 | 
                  -        param  => {title => 'perl', author => 'Ken', price => 1000},
                 | 
              |
| 951 | 
                  +        param  => {title => 'Perl', author => 'Ken', price => 1000},
                 | 
              |
| 946 | 952 | 
                           filter => {title => 'encode_uft8' author => 'to_upper_case'}
                 | 
              
| 947 | 953 | 
                  );  | 
              
| 948 | 954 | 
                   | 
              
| ... | ... | 
                  @@ -951,12 +957,13 @@ You can also specify filter when the row is fetched. This is reverse of bind fil  | 
              
| 951 | 957 | 
                  my $result = $dbi->select(table => 'books');  | 
              
| 952 | 958 | 
                       $result->filter({title => 'decode_utf8', author => 'to_upper_case'});
                 | 
              
| 953 | 959 | 
                   | 
              
| 954 | 
                  -you can specify C<default_fetch_filter()>.  | 
              |
| 960 | 
                  +Filter works each column value, but you prepare a default filter  | 
              |
| 961 | 
                  +for all clumn value.  | 
              |
| 955 | 962 | 
                   | 
              
| 956 | 963 | 
                       $dbi->default_fetch_filter('decode_utf8');
                 | 
              
| 957 | 964 | 
                   | 
              
| 958 | 
                  -C<DBIx::Custom::Result::filter()> overwrites the filter specified  | 
              |
| 959 | 
                  -by C<default_fetch_filter()>  | 
              |
| 965 | 
                  +C<filter()> method of L<DBIx::Custom::Result>  | 
              |
| 966 | 
                  +overwrites this default filter.  | 
              |
| 960 | 967 | 
                   | 
              
| 961 | 968 | 
                       $dbi->default_fetch_filter('decode_utf8');
                 | 
              
| 962 | 969 | 
                  my $result = $dbi->select(  | 
              
| ... | ... | 
                  @@ -973,21 +980,27 @@ This is same as the following one.  | 
              
| 973 | 980 | 
                  );  | 
              
| 974 | 981 | 
                       $result->filter({title => 'decode_utf8', author => 'to_upper_case'});
                 | 
              
| 975 | 982 | 
                   | 
              
| 976 | 
                  -In fetch filter, column name must be lower case even if column conatain upper case charactor. This is requirment not to depend database systems.  | 
              |
| 983 | 
                  +Note that in fetch filter, column names must be lower case  | 
              |
| 984 | 
                  +even if the column name conatains upper case charactors.  | 
              |
| 985 | 
                  +This is requirment not to depend database systems.  | 
              |
| 977 | 986 | 
                   | 
              
| 978 | 
                  -=head2 6. Performance  | 
              |
| 987 | 
                  +=head2 7. Performance  | 
              |
| 979 | 988 | 
                   | 
              
| 980 | 989 | 
                  =head3 Disable filter checking  | 
              
| 981 | 990 | 
                   | 
              
| 982 | 
                  -C<filter_check> is 1 by defaut. This is useful in debug.  | 
              |
| 991 | 
                  +Filter checking is executed by default.  | 
              |
| 992 | 
                  +This is done to check right filter name is specified,  | 
              |
| 993 | 
                  +but sometimes damage performance.  | 
              |
| 983 | 994 | 
                   | 
              
| 984 | 
                  -This filter check maybe damege performance.  | 
              |
| 985 | 
                  -If you require performance, set C<filter_check> to 0.  | 
              |
| 995 | 
                  +If you disable this filter checking,  | 
              |
| 996 | 
                  +Set C<filter_check> attribute to 0.  | 
              |
| 986 | 997 | 
                   | 
              
| 987 | 
                  -=head3 Using execute() method instead suger methods  | 
              |
| 998 | 
                  + $dbi->filter_check(0);  | 
              |
| 988 | 999 | 
                   | 
              
| 989 | 
                  -If you execute insert statement by using select() method,  | 
              |
| 990 | 
                  -you sometimes can't meet performance requirment.  | 
              |
| 1000 | 
                  +=head3 Use execute() method instead suger methods  | 
              |
| 1001 | 
                  +  | 
              |
| 1002 | 
                  +If you execute insert statement by C<insert()> method,  | 
              |
| 1003 | 
                  +you sometimes can't get required performance.  | 
              |
| 991 | 1004 | 
                   | 
              
| 992 | 1005 | 
                  C<insert()> method is a little slow because SQL statement and statement handle  | 
              
| 993 | 1006 | 
                  is created every time.  | 
              
| ... | ... | 
                  @@ -995,14 +1008,9 @@ is created every time.  | 
              
| 995 | 1008 | 
                  In that case, you can prepare a query by C<create_query()> method.  | 
              
| 996 | 1009 | 
                   | 
              
| 997 | 1010 | 
                  my $query = $dbi->create_query(  | 
              
| 998 | 
                  -        "insert into books {insert title author};"
                 | 
              |
| 1011 | 
                  +        "insert into books {insert_param title author};"
                 | 
              |
| 999 | 1012 | 
                  );  | 
              
| 1000 | 1013 | 
                   | 
              
| 1001 | 
                  - # (In the case of update statement)  | 
              |
| 1002 | 
                  - my $query = $dbi->create_query(  | 
              |
| 1003 | 
                  -        "update books {update author};";
                 | 
              |
| 1004 | 
                  - );  | 
              |
| 1005 | 
                  -  | 
              |
| 1006 | 1014 | 
                  Execute query repeatedly  | 
              
| 1007 | 1015 | 
                   | 
              
| 1008 | 1016 | 
                  my $inputs = [  | 
              
| ... | ... | 
                  @@ -1051,7 +1059,7 @@ otherwise, called to get cache.  | 
              
| 1051 | 1059 | 
                  }  | 
              
| 1052 | 1060 | 
                  });  | 
              
| 1053 | 1061 | 
                   | 
              
| 1054 | 
                  -=head2 7. More features  | 
              |
| 1062 | 
                  +=head2 8. More features  | 
              |
| 1055 | 1063 | 
                   | 
              
| 1056 | 1064 | 
                  =head3 Get DBI object  | 
              
| 1057 | 1065 | 
                   | 
              
| ... | ... | 
                  @@ -1155,12 +1163,12 @@ Default filter when row is fetched.  | 
              
| 1155 | 1163 | 
                  Result class for select statement.  | 
              
| 1156 | 1164 | 
                  Default to L<DBIx::Custom::Result>.  | 
              
| 1157 | 1165 | 
                   | 
              
| 1158 | 
                  -=head2 C<sql_builder>  | 
              |
| 1166 | 
                  +=head2 C<query_builder>  | 
              |
| 1159 | 1167 | 
                   | 
              
| 1160 | 
                  - my $sql_class = $dbi->sql_builder;  | 
              |
| 1161 | 
                  - $dbi = $dbi->sql_builder(DBIx::Custom::QueryBuilder->new);  | 
              |
| 1168 | 
                  + my $sql_class = $dbi->query_builder;  | 
              |
| 1169 | 
                  + $dbi = $dbi->query_builder(DBIx::Custom::QueryBuilder->new);  | 
              |
| 1162 | 1170 | 
                   | 
              
| 1163 | 
                  -SQL builder. sql_builder must be  | 
              |
| 1171 | 
                  +SQL builder. C<query_builder()> must be  | 
              |
| 1164 | 1172 | 
                  the instance of L<DBIx::Custom::QueryBuilder> subclass.  | 
              
| 1165 | 1173 | 
                  Default to L<DBIx::Custom::QueryBuilder> object.  | 
              
| 1166 | 1174 | 
                   | 
              
| ... | ... | 
                  @@ -1359,7 +1367,7 @@ B<Example:>  | 
              
| 1359 | 1367 | 
                  appned => 'for update'  | 
              
| 1360 | 1368 | 
                  );  | 
              
| 1361 | 1369 | 
                   | 
              
| 1362 | 
                  - # select books.name as book_name from books, rental  | 
              |
| 1370 | 
                  + # select books.name as book_name from books, rental  | 
              |
| 1363 | 1371 | 
                  # where books.id = rental.book_id;  | 
              
| 1364 | 1372 | 
                  my $result = $dbi->select(  | 
              
| 1365 | 1373 | 
                  table => ['books', 'rental'],  | 
              
| ... | ... | 
                  @@ -11,17 +11,17 @@ use DBIx::Custom::QueryBuilder::TagProcessors;  | 
              
| 11 | 11 | 
                   | 
              
| 12 | 12 | 
                   __PACKAGE__->dual_attr('tag_processors', default => sub { {} }, inherit => 'hash_copy');
                 | 
              
| 13 | 13 | 
                  __PACKAGE__->register_tag_processor(  | 
              
| 14 | 
                  - '?' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_placeholder_tag,  | 
              |
| 15 | 
                  - '=' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_equal_tag,  | 
              |
| 16 | 
                  - '<>' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_not_equal_tag,  | 
              |
| 17 | 
                  - '>' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_greater_than_tag,  | 
              |
| 18 | 
                  - '<' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_lower_than_tag,  | 
              |
| 19 | 
                  - '>=' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_greater_than_equal_tag,  | 
              |
| 20 | 
                  - '<=' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_lower_than_equal_tag,  | 
              |
| 21 | 
                  - 'like' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_like_tag,  | 
              |
| 22 | 
                  - 'in' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_in_tag,  | 
              |
| 23 | 
                  - 'insert' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_insert_tag,  | 
              |
| 24 | 
                  - 'update' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_update_tag  | 
              |
| 14 | 
                  + '?' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_placeholder_tag,  | 
              |
| 15 | 
                  + '=' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_equal_tag,  | 
              |
| 16 | 
                  + '<>' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_not_equal_tag,  | 
              |
| 17 | 
                  + '>' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_greater_than_tag,  | 
              |
| 18 | 
                  + '<' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_lower_than_tag,  | 
              |
| 19 | 
                  + '>=' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_greater_than_equal_tag,  | 
              |
| 20 | 
                  + '<=' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_lower_than_equal_tag,  | 
              |
| 21 | 
                  + 'like' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_like_tag,  | 
              |
| 22 | 
                  + 'in' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_in_tag,  | 
              |
| 23 | 
                  + 'insert_param' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_insert_param_tag,  | 
              |
| 24 | 
                  + 'update_param' => \&DBIx::Custom::QueryBuilder::TagProcessors::expand_update_param_tag  | 
              |
| 25 | 25 | 
                  );  | 
              
| 26 | 26 | 
                   | 
              
| 27 | 27 | 
                   __PACKAGE__->attr(tag_start => '{');
                 | 
              
| ... | ... | 
                  @@ -324,12 +324,12 @@ In tag.  | 
              
| 324 | 324 | 
                   | 
              
| 325 | 325 | 
                  =head2 C<insert>  | 
              
| 326 | 326 | 
                   | 
              
| 327 | 
                  -Insert tag.  | 
              |
| 327 | 
                  +Insert parameter tag.  | 
              |
| 328 | 328 | 
                   | 
              
| 329 | 
                  -    {insert NAME1 NAME2}   ->   (NAME1, NAME2) values (?, ?)
                 | 
              |
| 329 | 
                  +    {insert_param NAME1 NAME2}   ->   (NAME1, NAME2) values (?, ?)
                 | 
              |
| 330 | 330 | 
                   | 
              
| 331 | 331 | 
                  =head2 C<update>  | 
              
| 332 | 332 | 
                   | 
              
| 333 | 
                  -Updata tag.  | 
              |
| 333 | 
                  +Updata parameter tag.  | 
              |
| 334 | 334 | 
                   | 
              
| 335 | 
                  -    {update NAME1 NAME2}   ->   set NAME1 = ?, NAME2 = ?
                 | 
              |
| 335 | 
                  +    {update_param NAME1 NAME2}   ->   set NAME1 = ?, NAME2 = ?
                 | 
              
| ... | ... | 
                  @@ -55,10 +55,10 @@ sub expand_in_tag {
                 | 
              
| 55 | 55 | 
                  return [$s, $columns];  | 
              
| 56 | 56 | 
                  }  | 
              
| 57 | 57 | 
                   | 
              
| 58 | 
                  -sub expand_insert_tag {
                 | 
              |
| 58 | 
                  +sub expand_insert_param_tag {
                 | 
              |
| 59 | 59 | 
                  my @columns = @_;  | 
              
| 60 | 60 | 
                   | 
              
| 61 | 
                  - # Part of insert statement  | 
              |
| 61 | 
                  + # Insert parameters  | 
              |
| 62 | 62 | 
                       my $s = '(';
                 | 
              
| 63 | 63 | 
                  $s .= "$_, " for @columns;  | 
              
| 64 | 64 | 
                  $s =~ s/, $//;  | 
              
| ... | ... | 
                  @@ -71,10 +71,10 @@ sub expand_insert_tag {
                 | 
              
| 71 | 71 | 
                  return [$s, \@columns];  | 
              
| 72 | 72 | 
                  }  | 
              
| 73 | 73 | 
                   | 
              
| 74 | 
                  -sub expand_update_tag {
                 | 
              |
| 74 | 
                  +sub expand_update_param_tag {
                 | 
              |
| 75 | 75 | 
                  my @columns = @_;  | 
              
| 76 | 76 | 
                   | 
              
| 77 | 
                  - # Part of update statement  | 
              |
| 77 | 
                  + # Update paramters  | 
              |
| 78 | 78 | 
                  my $s = 'set ';  | 
              
| 79 | 79 | 
                  $s .= "$_ = ?, " for @columns;  | 
              
| 80 | 80 | 
                  $s =~ s/, $//;  | 
              
| ... | ... | 
                  @@ -148,12 +148,12 @@ same as the count of column names.  | 
              
| 148 | 148 | 
                   | 
              
| 149 | 149 | 
                       ('NAME', 3)  -> ['NAME in (?, ?, ?)', ['NAME', 'NAME', 'NAME']]
                 | 
              
| 150 | 150 | 
                   | 
              
| 151 | 
                  -=head2 C<expand_insert_tag>  | 
              |
| 151 | 
                  +=head2 C<expand_insert_param_tag>  | 
              |
| 152 | 152 | 
                   | 
              
| 153 | 153 | 
                       ('NAME1', 'NAME2')
                 | 
              
| 154 | 154 | 
                  -> ['(NAME1, NAME2) values (?, ?, ?)', ['NAME1', 'NAME2']]  | 
              
| 155 | 155 | 
                   | 
              
| 156 | 
                  -=head2 C<expand_update_tag>  | 
              |
| 156 | 
                  +=head2 C<expand_update_param_tag>  | 
              |
| 157 | 157 | 
                   | 
              
| 158 | 158 | 
                       ('NAME1', 'NAME2')
                 | 
              
| 159 | 159 | 
                  -> ['set NAME1 = ?, NAME2 = ?', ['NAME1', 'NAME2']]  | 
              
| ... | ... | 
                  @@ -97,7 +97,7 @@ is_deeply($rows, [{key1 => 1, key2 => 2}, {key1 => 3, key2 => 4}], "$test : fetc
                 | 
              
| 97 | 97 | 
                  test 'Insert query return value';  | 
              
| 98 | 98 | 
                   $dbi->execute($DROP_TABLE->{0});
                 | 
              
| 99 | 99 | 
                   $dbi->execute($CREATE_TABLE->{0});
                 | 
              
| 100 | 
                  -$source = "insert into table1 {insert key1 key2}";
                 | 
              |
| 100 | 
                  +$source = "insert into table1 {insert_param key1 key2}";
                 | 
              |
| 101 | 101 | 
                  $query = $dbi->create_query($source);  | 
              
| 102 | 102 | 
                   $ret_val = $dbi->execute($query, param => {key1 => 1, key2 => 2});
                 | 
              
| 103 | 103 | 
                  ok($ret_val, $test);  | 
              
| ... | ... | 
                  @@ -106,7 +106,7 @@ ok($ret_val, $test);  | 
              
| 106 | 106 | 
                  test 'Direct query';  | 
              
| 107 | 107 | 
                   $dbi->execute($DROP_TABLE->{0});
                 | 
              
| 108 | 108 | 
                   $dbi->execute($CREATE_TABLE->{0});
                 | 
              
| 109 | 
                  -$insert_tmpl = "insert into table1 {insert key1 key2}";
                 | 
              |
| 109 | 
                  +$insert_tmpl = "insert into table1 {insert_param key1 key2}";
                 | 
              |
| 110 | 110 | 
                   $dbi->execute($insert_tmpl, param => {key1 => 1, key2 => 2});
                 | 
              
| 111 | 111 | 
                   $result = $dbi->execute($SELECT_TMPLS->{0});
                 | 
              
| 112 | 112 | 
                  $rows = $result->fetch_hash_all;  | 
              
| ... | ... | 
                  @@ -118,7 +118,7 @@ $dbi->execute($CREATE_TABLE->{0});
                 | 
              
| 118 | 118 | 
                   $dbi->register_filter(twice       => sub { $_[0] * 2}, 
                 | 
              
| 119 | 119 | 
                                       three_times => sub { $_[0] * 3});
                 | 
              
| 120 | 120 | 
                   | 
              
| 121 | 
                  -$insert_tmpl  = "insert into table1 {insert key1 key2};";
                 | 
              |
| 121 | 
                  +$insert_tmpl  = "insert into table1 {insert_param key1 key2};";
                 | 
              |
| 122 | 122 | 
                  $insert_query = $dbi->create_query($insert_tmpl);  | 
              
| 123 | 123 | 
                   $insert_query->filter({key1 => 'twice'});
                 | 
              
| 124 | 124 | 
                   $dbi->execute($insert_query, param => {key1 => 1, key2 => 2});
                 | 
              
| ... | ... | 
                  @@ -129,7 +129,7 @@ $dbi->execute($DROP_TABLE->{0});
                 | 
              
| 129 | 129 | 
                   | 
              
| 130 | 130 | 
                  test 'Filter in';  | 
              
| 131 | 131 | 
                   $dbi->execute($CREATE_TABLE->{0});
                 | 
              
| 132 | 
                  -$insert_tmpl  = "insert into table1 {insert key1 key2};";
                 | 
              |
| 132 | 
                  +$insert_tmpl  = "insert into table1 {insert_param key1 key2};";
                 | 
              |
| 133 | 133 | 
                  $insert_query = $dbi->create_query($insert_tmpl);  | 
              
| 134 | 134 | 
                   $dbi->execute($insert_query, param => {key1 => 2, key2 => 4});
                 | 
              
| 135 | 135 | 
                   $select_tmpl = "select * from table1 where {in table1.key1 2} and {in table1.key2 2}";
                 | 
              
| ... | ... | 
                  @@ -171,7 +171,7 @@ is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$te
                 | 
              
| 171 | 171 | 
                   | 
              
| 172 | 172 | 
                  test 'DBIx::Custom::SQLTemplate insert tag';  | 
              
| 173 | 173 | 
                   $dbi->execute("delete from table1");
                 | 
              
| 174 | 
                  -$insert_tmpl = 'insert into table1 {insert key1 key2 key3 key4 key5}';
                 | 
              |
| 174 | 
                  +$insert_tmpl = 'insert into table1 {insert_param key1 key2 key3 key4 key5}';
                 | 
              |
| 175 | 175 | 
                   $dbi->execute($insert_tmpl, param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
                 | 
              
| 176 | 176 | 
                   | 
              
| 177 | 177 | 
                   $result = $dbi->execute($SELECT_TMPLS->{0});
                 | 
              
| ... | ... | 
                  @@ -180,11 +180,11 @@ is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$te
                 | 
              
| 180 | 180 | 
                   | 
              
| 181 | 181 | 
                  test 'DBIx::Custom::SQLTemplate update tag';  | 
              
| 182 | 182 | 
                   $dbi->execute("delete from table1");
                 | 
              
| 183 | 
                  -$insert_tmpl = "insert into table1 {insert key1 key2 key3 key4 key5}";
                 | 
              |
| 183 | 
                  +$insert_tmpl = "insert into table1 {insert_param key1 key2 key3 key4 key5}";
                 | 
              |
| 184 | 184 | 
                   $dbi->execute($insert_tmpl, param => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5});
                 | 
              
| 185 | 185 | 
                   $dbi->execute($insert_tmpl, param => {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10});
                 | 
              
| 186 | 186 | 
                   | 
              
| 187 | 
                  -$update_tmpl = 'update table1 {update key1 key2 key3 key4} where {= key5}';
                 | 
              |
| 187 | 
                  +$update_tmpl = 'update table1 {update_param key1 key2 key3 key4} where {= key5}';
                 | 
              |
| 188 | 188 | 
                   $dbi->execute($update_tmpl, param => {key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5});
                 | 
              
| 189 | 189 | 
                   | 
              
| 190 | 190 | 
                   $result = $dbi->execute($SELECT_TMPLS->{0});
                 |