| ... | ... | 
                  @@ -454,9 +454,11 @@ sub last_insert_id {
                 | 
              
| 454 | 454 | 
                   | 
              
| 455 | 455 | 
                  # Insert  | 
              
| 456 | 456 | 
                   sub insert {
                 | 
              
| 457 | 
                  - my ($self, $table, $insert_params, $query_edit_cb) = @_;  | 
              |
| 458 | 
                  - $table ||= '';  | 
              |
| 459 | 
                  -    $insert_params ||= {};
                 | 
              |
| 457 | 
                  + my $self = shift;  | 
              |
| 458 | 
                  + my $table = shift || '';  | 
              |
| 459 | 
                  +    my $insert_params    = shift || {};
                 | 
              |
| 460 | 
                  + my $append_statement = shift unless ref $_[0];  | 
              |
| 461 | 
                  + my $query_edit_cb = shift;  | 
              |
| 460 | 462 | 
                   | 
              
| 461 | 463 | 
                  # Insert keys  | 
              
| 462 | 464 | 
                  my @insert_keys = keys %$insert_params;  | 
              
| ... | ... | 
                  @@ -467,7 +469,7 @@ sub insert {
                 | 
              
| 467 | 469 | 
                   | 
              
| 468 | 470 | 
                  # Templte for insert  | 
              
| 469 | 471 | 
                       my $template = "insert into $table {insert " . join(' ', @insert_keys) . '}';
                 | 
              
| 470 | 
                  -  | 
              |
| 472 | 
                  + $template .= " $append_statement" if $append_statement;  | 
              |
| 471 | 473 | 
                  # Create query  | 
              
| 472 | 474 | 
                  my $query = $self->create_query($template);  | 
              
| 473 | 475 | 
                   | 
              
| ... | ... | 
                  @@ -486,12 +488,13 @@ sub insert {
                 | 
              
| 486 | 488 | 
                   | 
              
| 487 | 489 | 
                  # Update  | 
              
| 488 | 490 | 
                   sub update {
                 | 
              
| 489 | 
                  - my ($self, $table, $update_params,  | 
              |
| 490 | 
                  - $where_params, $query_edit_cb, $options) = @_;  | 
              |
| 491 | 
                  -  | 
              |
| 492 | 
                  - $table ||= '';  | 
              |
| 493 | 
                  -    $update_params ||= {};
                 | 
              |
| 494 | 
                  -    $where_params  ||= {};
                 | 
              |
| 491 | 
                  + my $self = shift;  | 
              |
| 492 | 
                  + my $table = shift || '';  | 
              |
| 493 | 
                  +    my $update_params    = shift || {};
                 | 
              |
| 494 | 
                  +    my $where_params     = shift || {};
                 | 
              |
| 495 | 
                  + my $append_statement = shift unless ref $_[0];  | 
              |
| 496 | 
                  + my $query_edit_cb = shift;  | 
              |
| 497 | 
                  + my $options = shift;  | 
              |
| 495 | 498 | 
                   | 
              
| 496 | 499 | 
                  # Update keys  | 
              
| 497 | 500 | 
                  my @update_keys = keys %$update_params;  | 
              
| ... | ... | 
                  @@ -522,6 +525,7 @@ sub update {
                 | 
              
| 522 | 525 | 
                   | 
              
| 523 | 526 | 
                  # Template for update  | 
              
| 524 | 527 | 
                  my $template = "update $table $update_clause $where_clause";  | 
              
| 528 | 
                  + $template .= " $append_statement" if $append_statement;  | 
              |
| 525 | 529 | 
                   | 
              
| 526 | 530 | 
                  # Create query  | 
              
| 527 | 531 | 
                  my $query = $self->create_query($template);  | 
              
| ... | ... | 
                  @@ -544,17 +548,25 @@ sub update {
                 | 
              
| 544 | 548 | 
                   | 
              
| 545 | 549 | 
                  # Update all rows  | 
              
| 546 | 550 | 
                   sub update_all {
                 | 
              
| 547 | 
                  - my ($self, $table, $update_params, $query_edit_cb) = @_;  | 
              |
| 548 | 
                  -  | 
              |
| 549 | 
                  -    return $self->update($table, $update_params, {}, $query_edit_cb,
                 | 
              |
| 550 | 
                  -                         {allow_update_all => 1});
                 | 
              |
| 551 | 
                  + my $self = shift;  | 
              |
| 552 | 
                  + my $table = shift || '';  | 
              |
| 553 | 
                  +    my $update_params    = shift || {};
                 | 
              |
| 554 | 
                  + my $append_statement = shift unless ref $_[0];  | 
              |
| 555 | 
                  + my $query_edit_cb = shift;  | 
              |
| 556 | 
                  +    my $options          = {allow_update_all => 1};
                 | 
              |
| 557 | 
                  +  | 
              |
| 558 | 
                  +    return $self->update($table, $update_params, {}, $append_statement,
                 | 
              |
| 559 | 
                  + $query_edit_cb, $options);  | 
              |
| 551 | 560 | 
                  }  | 
              
| 552 | 561 | 
                   | 
              
| 553 | 562 | 
                  # Delete  | 
              
| 554 | 563 | 
                   sub delete {
                 | 
              
| 555 | 
                  - my ($self, $table, $where_params, $query_edit_cb, $options) = @_;  | 
              |
| 556 | 
                  - $table ||= '';  | 
              |
| 557 | 
                  -    $where_params ||= {};
                 | 
              |
| 564 | 
                  + my $self = shift;  | 
              |
| 565 | 
                  + my $table = shift || '';  | 
              |
| 566 | 
                  +    my $where_params     = shift || {};
                 | 
              |
| 567 | 
                  + my $append_statement = shift unless ref $_[0];  | 
              |
| 568 | 
                  + my $query_edit_cb = shift;  | 
              |
| 569 | 
                  + my $options = shift;  | 
              |
| 558 | 570 | 
                   | 
              
| 559 | 571 | 
                  # Where keys  | 
              
| 560 | 572 | 
                  my @where_keys = keys %$where_params;  | 
              
| ... | ... | 
                  @@ -575,6 +587,7 @@ sub delete {
                 | 
              
| 575 | 587 | 
                   | 
              
| 576 | 588 | 
                  # Template for delete  | 
              
| 577 | 589 | 
                  my $template = "delete from $table $where_clause";  | 
              
| 590 | 
                  + $template .= " $append_statement" if $append_statement;  | 
              |
| 578 | 591 | 
                   | 
              
| 579 | 592 | 
                  # Create query  | 
              
| 580 | 593 | 
                  my $query = $self->create_query($template);  | 
              
| ... | ... | 
                  @@ -594,8 +607,14 @@ sub delete {
                 | 
              
| 594 | 607 | 
                   | 
              
| 595 | 608 | 
                  # Delete all rows  | 
              
| 596 | 609 | 
                   sub delete_all {
                 | 
              
| 597 | 
                  - my ($self, $table) = @_;  | 
              |
| 598 | 
                  -    return $self->delete($table, {}, undef, {allow_delete_all => 1});
                 | 
              |
| 610 | 
                  + my $self = shift;  | 
              |
| 611 | 
                  + my $table = shift || '';  | 
              |
| 612 | 
                  + my $append_statement = shift unless ref $_[0];  | 
              |
| 613 | 
                  + my $query_edit_cb = shift;  | 
              |
| 614 | 
                  +    my $options          = {allow_delete_all => 1};
                 | 
              |
| 615 | 
                  +  | 
              |
| 616 | 
                  +    return $self->delete($table, {}, $append_statement, $query_edit_cb,
                 | 
              |
| 617 | 
                  + $options);  | 
              |
| 599 | 618 | 
                  }  | 
              
| 600 | 619 | 
                   | 
              
| 601 | 620 | 
                   sub _select_usage { return << 'EOS' }
                 | 
              
| ... | ... | 
                  @@ -1,86 +0,0 @@  | 
              
| 1 | 
                  -package DBIx::Custom::DB2;  | 
              |
| 2 | 
                  -use base 'DBIx::Custom::Basic';  | 
              |
| 3 | 
                  -  | 
              |
| 4 | 
                  -use warnings;  | 
              |
| 5 | 
                  -use strict;  | 
              |
| 6 | 
                  -  | 
              |
| 7 | 
                  -my $class = __PACKAGE__;  | 
              |
| 8 | 
                  -  | 
              |
| 9 | 
                  -$class->add_format(  | 
              |
| 10 | 
                  -    datetime => $class->formats->{SQL99_datetime},
                 | 
              |
| 11 | 
                  -    date     => $class->formats->{SQL99_date},
                 | 
              |
| 12 | 
                  -    time     => $class->formats->{SQL99_time},
                 | 
              |
| 13 | 
                  -);  | 
              |
| 14 | 
                  -  | 
              |
| 15 | 
                  -  | 
              |
| 16 | 
                  -sub connect {
                 | 
              |
| 17 | 
                  - my $self = shift;  | 
              |
| 18 | 
                  -  | 
              |
| 19 | 
                  -    if (!$self->data_source && (my $database = $self->database)) {
                 | 
              |
| 20 | 
                  -        $self->data_source("dbi:DB2:dbname=$database");
                 | 
              |
| 21 | 
                  - }  | 
              |
| 22 | 
                  -  | 
              |
| 23 | 
                  - return $self->SUPER::connect;  | 
              |
| 24 | 
                  -}  | 
              |
| 25 | 
                  -  | 
              |
| 26 | 
                  -=head1 NAME  | 
              |
| 27 | 
                  -  | 
              |
| 28 | 
                  -DBIx::Custom::DB2 - DBIx::Custom DB2 implementation  | 
              |
| 29 | 
                  -  | 
              |
| 30 | 
                  -=head1 Version  | 
              |
| 31 | 
                  -  | 
              |
| 32 | 
                  -Version 0.0102  | 
              |
| 33 | 
                  -  | 
              |
| 34 | 
                  -=head1 Synopsys  | 
              |
| 35 | 
                  -  | 
              |
| 36 | 
                  - # New  | 
              |
| 37 | 
                  - my $dbi = DBIx::Custom::DB2->new(user => 'taro', $password => 'kliej&@K',  | 
              |
| 38 | 
                  - database => 'sample_db');  | 
              |
| 39 | 
                  - # Insert  | 
              |
| 40 | 
                  -    $dbi->insert('books', {title => 'perl', author => 'taro'});
                 | 
              |
| 41 | 
                  -  | 
              |
| 42 | 
                  - # Update  | 
              |
| 43 | 
                  - # same as 'update books set (title = 'aaa', author = 'ken') where id = 5;  | 
              |
| 44 | 
                  -    $dbi->update('books', {title => 'aaa', author => 'ken'}, {id => 5});
                 | 
              |
| 45 | 
                  -  | 
              |
| 46 | 
                  - # Delete  | 
              |
| 47 | 
                  -    $dbi->delete('books', {author => 'taro'});
                 | 
              |
| 48 | 
                  -  | 
              |
| 49 | 
                  - # select * from books;  | 
              |
| 50 | 
                  -    $dbi->select('books');
                 | 
              |
| 51 | 
                  -  | 
              |
| 52 | 
                  - # select * from books where ahthor = 'taro';  | 
              |
| 53 | 
                  -    $dbi->select('books', {author => 'taro'});
                 | 
              |
| 54 | 
                  -  | 
              |
| 55 | 
                  -=head1 See DBIx::Custom and DBI::Custom::Basic documentation  | 
              |
| 56 | 
                  -  | 
              |
| 57 | 
                  -This class is L<DBIx::Custom::Basic> subclass,  | 
              |
| 58 | 
                  -and L<DBIx::Custom::Basic> is L<DBIx::Custom> subclass.  | 
              |
| 59 | 
                  -  | 
              |
| 60 | 
                  -You can use all methods of L<DBIx::Custom::Basic> and <DBIx::Custom>  | 
              |
| 61 | 
                  -Please see L<DBIx::Custom::Basic> and <DBIx::Custom> documentation.  | 
              |
| 62 | 
                  -  | 
              |
| 63 | 
                  -=head1 Object methods  | 
              |
| 64 | 
                  -  | 
              |
| 65 | 
                  -=head2 connect  | 
              |
| 66 | 
                  -  | 
              |
| 67 | 
                  - This method override DBIx::Custom::connect  | 
              |
| 68 | 
                  -  | 
              |
| 69 | 
                  - If database attribute is set, automatically data source is created and connect  | 
              |
| 70 | 
                  -  | 
              |
| 71 | 
                  -=head1 Author  | 
              |
| 72 | 
                  -  | 
              |
| 73 | 
                  -Yuki Kimoto, C<< <kimoto.yuki at gmail.com> >>  | 
              |
| 74 | 
                  -  | 
              |
| 75 | 
                  -Github L<http://github.com/yuki-kimoto>  | 
              |
| 76 | 
                  -  | 
              |
| 77 | 
                  -I develope this module L<http://github.com/yuki-kimoto/DBIx-Custom>  | 
              |
| 78 | 
                  -  | 
              |
| 79 | 
                  -=head1 Copyright & license  | 
              |
| 80 | 
                  -  | 
              |
| 81 | 
                  -Copyright 2009 Yuki Kimoto, all rights reserved.  | 
              |
| 82 | 
                  -  | 
              |
| 83 | 
                  -This program is free software; you can redistribute it and/or modify it  | 
              |
| 84 | 
                  -under the same terms as Perl itself.  | 
              |
| 85 | 
                  -  | 
              |
| 86 | 
                  -  | 
              
| ... | ... | 
                  @@ -1,60 +0,0 @@  | 
              
| 1 | 
                  -package DBIx::Custom::ODBC;  | 
              |
| 2 | 
                  -use base 'DBIx::Custom::Basic';  | 
              |
| 3 | 
                  -  | 
              |
| 4 | 
                  -use warnings;  | 
              |
| 5 | 
                  -use strict;  | 
              |
| 6 | 
                  -  | 
              |
| 7 | 
                  -my $class = __PACKAGE__;  | 
              |
| 8 | 
                  -  | 
              |
| 9 | 
                  -sub connect {
                 | 
              |
| 10 | 
                  - my $self = shift;  | 
              |
| 11 | 
                  -  | 
              |
| 12 | 
                  -    if (!$self->data_source && (my $database = $self->database)) {
                 | 
              |
| 13 | 
                  -        $self->data_source("dbi:ODBC:dbname=$database");
                 | 
              |
| 14 | 
                  - }  | 
              |
| 15 | 
                  -  | 
              |
| 16 | 
                  - return $self->SUPER::connect;  | 
              |
| 17 | 
                  -}  | 
              |
| 18 | 
                  -  | 
              |
| 19 | 
                  -=head1 NAME  | 
              |
| 20 | 
                  -  | 
              |
| 21 | 
                  -DBIx::Custom::ODBC - DBIx::Custom ODBC implementation  | 
              |
| 22 | 
                  -  | 
              |
| 23 | 
                  -=head1 Version  | 
              |
| 24 | 
                  -  | 
              |
| 25 | 
                  -Version 0.0102  | 
              |
| 26 | 
                  -  | 
              |
| 27 | 
                  -=head1 Synopsys  | 
              |
| 28 | 
                  -  | 
              |
| 29 | 
                  -=head1 See DBIx::Custom and DBI::Custom::Basic documentation  | 
              |
| 30 | 
                  -  | 
              |
| 31 | 
                  -This class is L<DBIx::Custom::Basic> subclass,  | 
              |
| 32 | 
                  -and L<DBIx::Custom::Basic> is L<DBIx::Custom> subclass.  | 
              |
| 33 | 
                  -  | 
              |
| 34 | 
                  -You can use all methods of L<DBIx::Custom::Basic> and <DBIx::Custom>  | 
              |
| 35 | 
                  -Please see L<DBIx::Custom::Basic> and <DBIx::Custom> documentation.  | 
              |
| 36 | 
                  -  | 
              |
| 37 | 
                  -=head1 Object methods  | 
              |
| 38 | 
                  -  | 
              |
| 39 | 
                  -=head2 connect  | 
              |
| 40 | 
                  -  | 
              |
| 41 | 
                  - This method override DBIx::Custom::connect  | 
              |
| 42 | 
                  -  | 
              |
| 43 | 
                  - If database attribute is set, automatically data source is created and connect  | 
              |
| 44 | 
                  -  | 
              |
| 45 | 
                  -=head1 Author  | 
              |
| 46 | 
                  -  | 
              |
| 47 | 
                  -Yuki Kimoto, C<< <kimoto.yuki at gmail.com> >>  | 
              |
| 48 | 
                  -  | 
              |
| 49 | 
                  -Github L<http://github.com/yuki-kimoto>  | 
              |
| 50 | 
                  -  | 
              |
| 51 | 
                  -I develope this module L<http://github.com/yuki-kimoto/DBIx-Custom>  | 
              |
| 52 | 
                  -  | 
              |
| 53 | 
                  -=head1 Copyright & license  | 
              |
| 54 | 
                  -  | 
              |
| 55 | 
                  -Copyright 2009 Yuki Kimoto, all rights reserved.  | 
              |
| 56 | 
                  -  | 
              |
| 57 | 
                  -This program is free software; you can redistribute it and/or modify it  | 
              |
| 58 | 
                  -under the same terms as Perl itself.  | 
              |
| 59 | 
                  -  | 
              |
| 60 | 
                  -  | 
              
| ... | ... | 
                  @@ -1,75 +0,0 @@  | 
              
| 1 | 
                  -package DBIx::Custom::Oracle;  | 
              |
| 2 | 
                  -use base 'DBIx::Custom::Basic';  | 
              |
| 3 | 
                  -  | 
              |
| 4 | 
                  -use warnings;  | 
              |
| 5 | 
                  -use strict;  | 
              |
| 6 | 
                  -  | 
              |
| 7 | 
                  -my $class = __PACKAGE__;  | 
              |
| 8 | 
                  -  | 
              |
| 9 | 
                  -sub connect {
                 | 
              |
| 10 | 
                  - my $self = shift;  | 
              |
| 11 | 
                  -  | 
              |
| 12 | 
                  -    if (!$self->data_source && (my $database = $self->database)) {
                 | 
              |
| 13 | 
                  -        $self->data_source("dbi:Oracle:dbname=$database");
                 | 
              |
| 14 | 
                  - }  | 
              |
| 15 | 
                  -  | 
              |
| 16 | 
                  - return $self->SUPER::connect;  | 
              |
| 17 | 
                  -}  | 
              |
| 18 | 
                  -  | 
              |
| 19 | 
                  -=head1 NAME  | 
              |
| 20 | 
                  -  | 
              |
| 21 | 
                  -DBIx::Custom::Oracle - DBIx::Custom Oracle implementation  | 
              |
| 22 | 
                  -  | 
              |
| 23 | 
                  -=head1 Synopsys  | 
              |
| 24 | 
                  -  | 
              |
| 25 | 
                  - # New  | 
              |
| 26 | 
                  - my $dbi = DBIx::Custom::Oracle->new(user => 'taro', $password => 'kliej&@K',  | 
              |
| 27 | 
                  - database => 'sample_db');  | 
              |
| 28 | 
                  - # Insert  | 
              |
| 29 | 
                  -    $dbi->insert('books', {title => 'perl', author => 'taro'});
                 | 
              |
| 30 | 
                  -  | 
              |
| 31 | 
                  - # Update  | 
              |
| 32 | 
                  - # same as 'update books set (title = 'aaa', author = 'ken') where id = 5;  | 
              |
| 33 | 
                  -    $dbi->update('books', {title => 'aaa', author => 'ken'}, {id => 5});
                 | 
              |
| 34 | 
                  -  | 
              |
| 35 | 
                  - # Delete  | 
              |
| 36 | 
                  -    $dbi->delete('books', {author => 'taro'});
                 | 
              |
| 37 | 
                  -  | 
              |
| 38 | 
                  - # select * from books;  | 
              |
| 39 | 
                  -    $dbi->select('books');
                 | 
              |
| 40 | 
                  -  | 
              |
| 41 | 
                  - # select * from books where ahthor = 'taro';  | 
              |
| 42 | 
                  -    $dbi->select('books', {author => 'taro'});
                 | 
              |
| 43 | 
                  -  | 
              |
| 44 | 
                  -=head1 See DBIx::Custom and DBI::Custom::Basic documentation  | 
              |
| 45 | 
                  -  | 
              |
| 46 | 
                  -This class is L<DBIx::Custom::Basic> subclass,  | 
              |
| 47 | 
                  -and L<DBIx::Custom::Basic> is L<DBIx::Custom> subclass.  | 
              |
| 48 | 
                  -  | 
              |
| 49 | 
                  -You can use all methods of L<DBIx::Custom::Basic> and <DBIx::Custom>  | 
              |
| 50 | 
                  -Please see L<DBIx::Custom::Basic> and <DBIx::Custom> documentation.  | 
              |
| 51 | 
                  -  | 
              |
| 52 | 
                  -=head1 Object methods  | 
              |
| 53 | 
                  -  | 
              |
| 54 | 
                  -=head2 connect  | 
              |
| 55 | 
                  -  | 
              |
| 56 | 
                  - This method override DBIx::Custom::connect  | 
              |
| 57 | 
                  -  | 
              |
| 58 | 
                  - If database attribute is set, automatically data source is created and connect  | 
              |
| 59 | 
                  -  | 
              |
| 60 | 
                  -=head1 Author  | 
              |
| 61 | 
                  -  | 
              |
| 62 | 
                  -Yuki Kimoto, C<< <kimoto.yuki at gmail.com> >>  | 
              |
| 63 | 
                  -  | 
              |
| 64 | 
                  -Github L<http://github.com/yuki-kimoto>  | 
              |
| 65 | 
                  -  | 
              |
| 66 | 
                  -I develope this module L<http://github.com/yuki-kimoto/DBIx-Custom>  | 
              |
| 67 | 
                  -  | 
              |
| 68 | 
                  -=head1 Copyright & license  | 
              |
| 69 | 
                  -  | 
              |
| 70 | 
                  -Copyright 2009 Yuki Kimoto, all rights reserved.  | 
              |
| 71 | 
                  -  | 
              |
| 72 | 
                  -This program is free software; you can redistribute it and/or modify it  | 
              |
| 73 | 
                  -under the same terms as Perl itself.  | 
              |
| 74 | 
                  -  | 
              |
| 75 | 
                  -  | 
              
| ... | ... | 
                  @@ -495,12 +495,17 @@ $result = $dbi->execute($SELECT_TMPL->{0});
                 | 
              
| 495 | 495 | 
                  $rows = $result->fetch_hash_all;  | 
              
| 496 | 496 | 
                   is_deeply($rows, [{key1 => 3, key2 => 2}], "$test : edit_query_callback");
                 | 
              
| 497 | 497 | 
                   | 
              
| 498 | 
                  +$dbi->insert('table1', {key1 => 1, key2 => 2}, '   ', sub {
                 | 
              |
| 499 | 
                  + my $query = shift;  | 
              |
| 500 | 
                  + like($query->sql, qr/insert into table1 \(.+\) values \(\?, \?\) ;/,  | 
              |
| 501 | 
                  + "$test: append statement");  | 
              |
| 502 | 
                  +});  | 
              |
| 498 | 503 | 
                   | 
              
| 499 | 504 | 
                  test 'insert error';  | 
              
| 500 | 505 | 
                   eval{$dbi->insert('table1')};
                 | 
              
| 501 | 506 | 
                  like($@, qr/Key-value pairs for insert must be specified to 'insert' second argument/, "$test : insert key-value not specifed");  | 
              
| 502 | 507 | 
                   | 
              
| 503 | 
                  -eval{$dbi->insert('table1', {key1 => 1, key2 => 2}, 'aaa')};
                 | 
              |
| 508 | 
                  +eval{$dbi->insert('table1', {key1 => 1, key2 => 2}, '', 'aaa')};
                 | 
              |
| 504 | 509 | 
                  like($@, qr/Query edit callback must be code reference/, "$test : query edit callback not code ref");  | 
              
| 505 | 510 | 
                   | 
              
| 506 | 511 | 
                   | 
              
| ... | ... | 
                  @@ -545,6 +550,12 @@ is_deeply($rows, [{key1 => 1, key2 => 22, key3 => 3, key4 => 4, key5 => 5},
                 | 
              
| 545 | 550 | 
                                     {key1 => 6, key2 => 7,  key3 => 8, key4 => 9, key5 => 10}],
                 | 
              
| 546 | 551 | 
                  "$test : query edit callback");  | 
              
| 547 | 552 | 
                   | 
              
| 553 | 
                  +$dbi->update('table1', {key2 => 11}, {key1 => 1}, '   ', sub {
                 | 
              |
| 554 | 
                  + my $query = shift;  | 
              |
| 555 | 
                  + is($query->sql, 'update table1 set key2 = ? where key1 = ? ;',  | 
              |
| 556 | 
                  + "$test: append statement");  | 
              |
| 557 | 
                  +});  | 
              |
| 558 | 
                  +  | 
              |
| 548 | 559 | 
                   | 
              
| 549 | 560 | 
                  test 'update error';  | 
              
| 550 | 561 | 
                   $dbi = DBIx::Custom->new($NEW_ARGS->{0});
                 | 
              
| ... | ... | 
                  @@ -557,7 +568,7 @@ eval{$dbi->update('table1', {key2 => 1})};
                 | 
              
| 557 | 568 | 
                  like($@, qr/Key-value pairs for where clause must be specified to 'update' third argument/,  | 
              
| 558 | 569 | 
                  "$test : where key-value pairs not specified");  | 
              
| 559 | 570 | 
                   | 
              
| 560 | 
                  -eval{$dbi->update('table1', {key2 => 1}, {key2 => 3}, 'aaa')};
                 | 
              |
| 571 | 
                  +eval{$dbi->update('table1', {key2 => 1}, {key2 => 3}, '', 'aaa')};
                 | 
              |
| 561 | 572 | 
                  like($@, qr/Query edit callback must be code reference/,  | 
              
| 562 | 573 | 
                  "$test : query edit callback not code reference");  | 
              
| 563 | 574 | 
                   | 
              
| ... | ... | 
                  @@ -605,6 +616,13 @@ $result = $dbi->execute($SELECT_TMPL->{0});
                 | 
              
| 605 | 616 | 
                  $rows = $result->fetch_hash_all;  | 
              
| 606 | 617 | 
                   is_deeply($rows, [{key1 => 3, key2 => 4}], "$test : query edit callback");
                 | 
              
| 607 | 618 | 
                   | 
              
| 619 | 
                  +$dbi->delete('table1', {key1 => 1}, '   ', sub {
                 | 
              |
| 620 | 
                  + my $query = shift;  | 
              |
| 621 | 
                  + is($query->sql, 'delete from table1 where key1 = ? ;',  | 
              |
| 622 | 
                  + "$test: append statement");  | 
              |
| 623 | 
                  +});  | 
              |
| 624 | 
                  +  | 
              |
| 625 | 
                  +  | 
              |
| 608 | 626 | 
                   $dbi->delete_all('table1');
                 | 
              
| 609 | 627 | 
                   $dbi->insert('table1', {key1 => 1, key2 => 2});
                 | 
              
| 610 | 628 | 
                   $dbi->insert('table1', {key1 => 3, key2 => 4});
                 | 
              
| ... | ... | 
                  @@ -620,7 +638,7 @@ eval{$dbi->delete('table1')};
                 | 
              
| 620 | 638 | 
                  like($@, qr/Key-value pairs for where clause must be specified to 'delete' second argument/,  | 
              
| 621 | 639 | 
                  "$test : where key-value pairs not specified");  | 
              
| 622 | 640 | 
                   | 
              
| 623 | 
                  -eval{$dbi->delete('table1', {key1 => 1}, 'aaa')};
                 | 
              |
| 641 | 
                  +eval{$dbi->delete('table1', {key1 => 1}, '', 'aaa')};
                 | 
              |
| 624 | 642 | 
                  like($@, qr/Query edit callback must be code reference/,  | 
              
| 625 | 643 | 
                  "$test : query edit callback not code ref");  | 
              
| 626 | 644 | 
                   |