| ... | ... |
@@ -1,5 +1,6 @@ |
| 1 | 1 |
0.1712 |
| 2 | 2 |
- you can set any string as separator |
| 3 |
+ - fixed memory leak and connection increasing bug, and query_buider method return new object. |
|
| 3 | 4 |
0.1711 |
| 4 | 5 |
- renamed EXPERIMENTAL available_type_name to available_typename |
| 5 | 6 |
- renamed EXPERIMENTAL available_data_type to available_datatype |
| ... | ... |
@@ -51,13 +51,34 @@ has [qw/connector dsn password quote user/], |
| 51 | 51 |
}, |
| 52 | 52 |
last_sql => '', |
| 53 | 53 |
models => sub { {} },
|
| 54 |
- query_builder => sub { DBIx::Custom::QueryBuilder->new(dbi => shift) },
|
|
| 55 | 54 |
result_class => 'DBIx::Custom::Result', |
| 56 | 55 |
safety_character => '\w', |
| 57 | 56 |
separator => '.', |
| 58 | 57 |
stash => sub { {} },
|
| 59 | 58 |
tag_parse => 1; |
| 60 | 59 |
|
| 60 |
+sub query_builder {
|
|
| 61 |
+ my $self = shift; |
|
| 62 |
+ my $builder = DBIx::Custom::QueryBuilder->new(dbi => $self); |
|
| 63 |
+ |
|
| 64 |
+ # DEPRECATED |
|
| 65 |
+ $builder->register_tag( |
|
| 66 |
+ '?' => \&DBIx::Custom::Tag::placeholder, |
|
| 67 |
+ '=' => \&DBIx::Custom::Tag::equal, |
|
| 68 |
+ '<>' => \&DBIx::Custom::Tag::not_equal, |
|
| 69 |
+ '>' => \&DBIx::Custom::Tag::greater_than, |
|
| 70 |
+ '<' => \&DBIx::Custom::Tag::lower_than, |
|
| 71 |
+ '>=' => \&DBIx::Custom::Tag::greater_than_equal, |
|
| 72 |
+ '<=' => \&DBIx::Custom::Tag::lower_than_equal, |
|
| 73 |
+ 'like' => \&DBIx::Custom::Tag::like, |
|
| 74 |
+ 'in' => \&DBIx::Custom::Tag::in, |
|
| 75 |
+ 'insert_param' => \&DBIx::Custom::Tag::insert_param, |
|
| 76 |
+ 'update_param' => \&DBIx::Custom::Tag::update_param |
|
| 77 |
+ ); |
|
| 78 |
+ $builder->register_tag($self->{_tags} || {});
|
|
| 79 |
+ return $builder; |
|
| 80 |
+} |
|
| 81 |
+ |
|
| 61 | 82 |
our $AUTOLOAD; |
| 62 | 83 |
sub AUTOLOAD {
|
| 63 | 84 |
my $self = shift; |
| ... | ... |
@@ -221,7 +242,9 @@ sub delete {
|
| 221 | 242 |
|
| 222 | 243 |
sub delete_all { shift->delete(allow_delete_all => 1, @_) }
|
| 223 | 244 |
|
| 224 |
-sub DESTROY { }
|
|
| 245 |
+sub DESTROY {
|
|
| 246 |
+ |
|
| 247 |
+} |
|
| 225 | 248 |
|
| 226 | 249 |
sub create_model {
|
| 227 | 250 |
my $self = shift; |
| ... | ... |
@@ -707,21 +730,6 @@ sub new {
|
| 707 | 730 |
unless $self->can($attr); |
| 708 | 731 |
} |
| 709 | 732 |
|
| 710 |
- # DEPRECATED! |
|
| 711 |
- $self->query_builder->{tags} = {
|
|
| 712 |
- '?' => \&DBIx::Custom::Tag::placeholder, |
|
| 713 |
- '=' => \&DBIx::Custom::Tag::equal, |
|
| 714 |
- '<>' => \&DBIx::Custom::Tag::not_equal, |
|
| 715 |
- '>' => \&DBIx::Custom::Tag::greater_than, |
|
| 716 |
- '<' => \&DBIx::Custom::Tag::lower_than, |
|
| 717 |
- '>=' => \&DBIx::Custom::Tag::greater_than_equal, |
|
| 718 |
- '<=' => \&DBIx::Custom::Tag::lower_than_equal, |
|
| 719 |
- 'like' => \&DBIx::Custom::Tag::like, |
|
| 720 |
- 'in' => \&DBIx::Custom::Tag::in, |
|
| 721 |
- 'insert_param' => \&DBIx::Custom::Tag::insert_param, |
|
| 722 |
- 'update_param' => \&DBIx::Custom::Tag::update_param |
|
| 723 |
- }; |
|
| 724 |
- |
|
| 725 | 733 |
return $self; |
| 726 | 734 |
} |
| 727 | 735 |
|
| ... | ... |
@@ -1624,8 +1632,25 @@ sub insert_at {
|
| 1624 | 1632 |
|
| 1625 | 1633 |
# DEPRECATED! |
| 1626 | 1634 |
sub register_tag {
|
| 1635 |
+ my $self = shift; |
|
| 1636 |
+ |
|
| 1627 | 1637 |
warn "register_tag is DEPRECATED!"; |
| 1628 |
- shift->query_builder->register_tag(@_) |
|
| 1638 |
+ |
|
| 1639 |
+ # Merge tag |
|
| 1640 |
+ my $tags = ref $_[0] eq 'HASH' ? $_[0] : {@_};
|
|
| 1641 |
+ $self->{_tags} = {%{$self->{_tags} || {}}, %$tags};
|
|
| 1642 |
+ |
|
| 1643 |
+ return $self; |
|
| 1644 |
+} |
|
| 1645 |
+ |
|
| 1646 |
+# DEPRECATED! |
|
| 1647 |
+sub register_tag_processor {
|
|
| 1648 |
+ my $self = shift; |
|
| 1649 |
+ warn "register_tag_processor is DEPRECATED!"; |
|
| 1650 |
+ # Merge tag |
|
| 1651 |
+ my $tag_processors = ref $_[0] eq 'HASH' ? $_[0] : {@_};
|
|
| 1652 |
+ $self->{_tags} = {%{$self->{_tags} || {}}, %{$tag_processors}};
|
|
| 1653 |
+ return $self; |
|
| 1629 | 1654 |
} |
| 1630 | 1655 |
|
| 1631 | 1656 |
# DEPRECATED! |
| ... | ... |
@@ -1690,12 +1715,6 @@ sub insert_param_tag {
|
| 1690 | 1715 |
return shift->insert_param(@_); |
| 1691 | 1716 |
} |
| 1692 | 1717 |
|
| 1693 |
-# DEPRECATED! |
|
| 1694 |
-sub register_tag_processor {
|
|
| 1695 |
- warn "register_tag_processor is DEPRECATED!"; |
|
| 1696 |
- return shift->query_builder->register_tag_processor(@_); |
|
| 1697 |
-} |
|
| 1698 |
- |
|
| 1699 | 1718 |
# DEPRECATED! |
| 1700 | 1719 |
sub update_param_tag {
|
| 1701 | 1720 |
warn "update_param_tag is DEPRECATED! " . |
| ... | ... |
@@ -1936,10 +1955,9 @@ Password, used when C<connect> method is executed. |
| 1936 | 1955 |
|
| 1937 | 1956 |
=head2 C<query_builder> |
| 1938 | 1957 |
|
| 1939 |
- my $sql_class = $dbi->query_builder; |
|
| 1940 |
- $dbi = $dbi->query_builder(DBIx::Custom::QueryBuilder->new); |
|
| 1958 |
+ my $builder = $dbi->query_builder; |
|
| 1941 | 1959 |
|
| 1942 |
-Query builder, default to L<DBIx::Custom::QueryBuilder> object. |
|
| 1960 |
+Creat query builder. This is L<DBIx::Custom::QueryBuilder>. |
|
| 1943 | 1961 |
|
| 1944 | 1962 |
=head2 C<quote> |
| 1945 | 1963 |
|
| ... | ... |
@@ -10,10 +10,22 @@ use DBIx::Custom; |
| 10 | 10 |
{
|
| 11 | 11 |
package DBIx::Custom; |
| 12 | 12 |
|
| 13 |
- my $date = 'Date'; |
|
| 14 |
- my $time = 'Time'; |
|
| 15 |
- my $datetime = 'Datetime'; |
|
| 13 |
+ my $date_typename = 'Date'; |
|
| 14 |
+ my $time_typename = 'Time'; |
|
| 15 |
+ my $datetime_typename = 'Datetime'; |
|
| 16 | 16 |
|
| 17 |
+ sub date_typename { lc $date_typename }
|
|
| 18 |
+ sub time_typename { lc $time_typename }
|
|
| 19 |
+ sub datetime_typename { lc $datetime_typename }
|
|
| 20 |
+ |
|
| 21 |
+ my $date_datatype = 9; |
|
| 22 |
+ my $time_datatype = 'Time'; |
|
| 23 |
+ my $datetime_datatype = 11; |
|
| 24 |
+ |
|
| 25 |
+ sub date_datatype { lc $date_datatype }
|
|
| 26 |
+ sub time_datatype { lc $time_datatype }
|
|
| 27 |
+ sub datetime_datatype { lc $datetime_datatype }
|
|
| 28 |
+ |
|
| 17 | 29 |
no warnings 'redefine'; |
| 18 | 30 |
has dsn => "dbi:mysql:database=dbix_custom"; |
| 19 | 31 |
has user => 'dbix_custom'; |
| ... | ... |
@@ -22,7 +34,7 @@ use DBIx::Custom; |
| 22 | 34 |
sub create_table1 { 'create table table1 (key1 varchar(255), key2 varchar(255)) engine=InnoDB;' }
|
| 23 | 35 |
sub create_table1_2 {'create table table1 (key1 varchar(255), key2 varchar(255), '
|
| 24 | 36 |
. 'key3 varchar(255), key4 varchar(255), key5 varchar(255)) engine=InnoDB;' } |
| 25 |
- sub create_table1_type { 'create table table1 (key1 Date, key2 datetime) engine=InnoDB;;' }
|
|
| 37 |
+ sub create_table1_type { "create table table1 (key1 $date_typename, key2 $datetime_typename) engine=InnoDB;" }
|
|
| 26 | 38 |
sub create_table1_highperformance { "create table table1 (ab varchar(255), bc varchar(255), "
|
| 27 | 39 |
. "ik varchar(255), hi varchar(255), ui varchar(255), pq varchar(255), dc varchar(255)) engine=InnoDB;" } |
| 28 | 40 |
sub create_table2 { 'create table table2 (key1 varchar(255), key3 varchar(255)) engine=InnoDB;' }
|
| ... | ... |
@@ -11,9 +11,21 @@ use DBIx::Custom; |
| 11 | 11 |
package DBIx::Custom; |
| 12 | 12 |
no warnings 'redefine'; |
| 13 | 13 |
|
| 14 |
- my $date = 'Date'; |
|
| 15 |
- my $time = 'Time'; |
|
| 16 |
- my $datetime = 'Timestamp'; |
|
| 14 |
+ my $date_typename = 'Date'; |
|
| 15 |
+ my $time_typename = 'Time'; |
|
| 16 |
+ my $datetime_typename = 'Timestamp'; |
|
| 17 |
+ |
|
| 18 |
+ sub date_typename { lc $date_typename }
|
|
| 19 |
+ sub time_typename { lc $time_typename }
|
|
| 20 |
+ sub datetime_typename { 'timestamp without time zone' }
|
|
| 21 |
+ |
|
| 22 |
+ my $date_datatype = 91; |
|
| 23 |
+ my $time_datatype = 'Time'; |
|
| 24 |
+ my $datetime_datatype = 11; |
|
| 25 |
+ |
|
| 26 |
+ sub date_datatype { lc $date_datatype }
|
|
| 27 |
+ sub time_datatype { lc $time_datatype }
|
|
| 28 |
+ sub datetime_datatype { lc $datetime_datatype }
|
|
| 17 | 29 |
|
| 18 | 30 |
has dsn => "dbi:Pg:dbname=dbix_custom"; |
| 19 | 31 |
has user => 'dbix_custom'; |
| ... | ... |
@@ -22,7 +34,7 @@ use DBIx::Custom; |
| 22 | 34 |
sub create_table1 { 'create table table1 (key1 varchar(255), key2 varchar(255));' }
|
| 23 | 35 |
sub create_table1_2 {'create table table1 (key1 varchar(255), key2 varchar(255), '
|
| 24 | 36 |
. 'key3 varchar(255), key4 varchar(255), key5 varchar(255));' } |
| 25 |
- sub create_table1_type { 'create table table1 (key1 Date, key2 varchar(255));' }
|
|
| 37 |
+ sub create_table1_type { "create table table1 (key1 $date_typename, key2 $datetime_typename);" }
|
|
| 26 | 38 |
sub create_table1_highperformance { "create table table1 (ab varchar(255), bc varchar(255), "
|
| 27 | 39 |
. "ik varchar(255), hi varchar(255), ui varchar(255), pq varchar(255), dc varchar(255));" } |
| 28 | 40 |
sub create_table2 { 'create table table2 (key1 varchar(255), key3 varchar(255));' }
|
| ... | ... |
@@ -9,15 +9,27 @@ use DBIx::Custom; |
| 9 | 9 |
package DBIx::Custom; |
| 10 | 10 |
no warnings 'redefine'; |
| 11 | 11 |
|
| 12 |
- my $date = 'Date'; |
|
| 13 |
- my $time = 'Time'; |
|
| 14 |
- my $datetime = 'Datetime'; |
|
| 12 |
+ my $date_typename = 'Date'; |
|
| 13 |
+ my $time_typename = 'Time'; |
|
| 14 |
+ my $datetime_typename = 'Datetime'; |
|
| 15 |
+ |
|
| 16 |
+ sub date_typename { lc $date_typename }
|
|
| 17 |
+ sub time_typename { lc $time_typename }
|
|
| 18 |
+ sub datetime_typename { lc $datetime_typename }
|
|
| 19 |
+ |
|
| 20 |
+ my $date_datatype = 'Date'; |
|
| 21 |
+ my $time_datatype = 'Time'; |
|
| 22 |
+ my $datetime_datatype = 'Datetime'; |
|
| 23 |
+ |
|
| 24 |
+ sub date_datatype { lc $date_datatype }
|
|
| 25 |
+ sub time_datatype { lc $time_datatype }
|
|
| 26 |
+ sub datetime_datatype { lc $datetime_datatype }
|
|
| 15 | 27 |
|
| 16 | 28 |
has dsn => 'dbi:SQLite:dbname=:memory:'; |
| 17 | 29 |
sub quote { '""' }
|
| 18 | 30 |
sub create_table1 { 'create table table1 (key1 varchar, key2 varchar);' }
|
| 19 | 31 |
sub create_table1_2 {'create table table1 (key1 varchar, key2 varchar, key3 varchar, key4 varchar, key5 varchar);' }
|
| 20 |
- sub create_table1_type { 'create table table1 (key1 Date, key2 datetime);' }
|
|
| 32 |
+ sub create_table1_type { "create table table1 (key1 $date_typename, key2 $datetime_typename);" }
|
|
| 21 | 33 |
|
| 22 | 34 |
sub create_table1_highperformance { "create table table1 (ab varchar, bc varchar, ik varchar, hi varchar, ui varchar, pq varchar, dc varchar);" }
|
| 23 | 35 |
|
| ... | ... |
@@ -9,14 +9,26 @@ use DBIx::Custom; |
| 9 | 9 |
package DBIx::Custom; |
| 10 | 10 |
no warnings 'redefine'; |
| 11 | 11 |
|
| 12 |
- my $date = 'Date'; |
|
| 13 |
- my $time = 'Time'; |
|
| 14 |
- my $datetime = 'Datetime'; |
|
| 12 |
+ my $date_typename = 'Date'; |
|
| 13 |
+ my $time_typename = 'Time'; |
|
| 14 |
+ my $datetime_typename = 'Datetime'; |
|
| 15 |
+ |
|
| 16 |
+ sub date_typename { lc $date_typename }
|
|
| 17 |
+ sub time_typename { lc $time_typename }
|
|
| 18 |
+ sub datetime_typename { lc $datetime_typename }
|
|
| 19 |
+ |
|
| 20 |
+ my $date_datatype = 'Date'; |
|
| 21 |
+ my $time_datatype = 'Time'; |
|
| 22 |
+ my $datetime_datatype = 'Datetime'; |
|
| 23 |
+ |
|
| 24 |
+ sub date_datatype { lc $date_datatype }
|
|
| 25 |
+ sub time_datatype { lc $time_datatype }
|
|
| 26 |
+ sub datetime_datatype { lc $datetime_datatype }
|
|
| 15 | 27 |
|
| 16 | 28 |
has dsn => 'dbi:SQLite:dbname=:memory:'; |
| 17 | 29 |
sub create_table1 { 'create table table1 (key1 varchar, key2 varchar);' }
|
| 18 | 30 |
sub create_table1_2 {'create table table1 (key1 varchar, key2 varchar, key3 varchar, key4 varchar, key5 varchar);' }
|
| 19 |
- sub create_table1_type { "create table table1 (key1 $date, key2 $time);" }
|
|
| 31 |
+ sub create_table1_type { "create table table1 (key1 $date_typename, key2 $datetime_typename);" }
|
|
| 20 | 32 |
|
| 21 | 33 |
sub create_table1_highperformance { "create table table1 (ab varchar, bc varchar, ik varchar, hi varchar, ui varchar, pq varchar, dc varchar);" }
|
| 22 | 34 |
|
| ... | ... |
@@ -24,6 +36,7 @@ use DBIx::Custom; |
| 24 | 36 |
sub create_table2_2 { "create table table2 (key1 varchar, key2 varchar, key3 varchar)" }
|
| 25 | 37 |
sub create_table3 { "create table table3 (key1 varchar, key2 varchar, key3 varchar)" }
|
| 26 | 38 |
sub create_table_reserved { 'create table "table" ("select" varchar, "update" varchar)' }
|
| 39 |
+ |
|
| 27 | 40 |
} |
| 28 | 41 |
|
| 29 | 42 |
require "$FindBin::Bin/common.t"; |
| ... | ... |
@@ -153,6 +153,12 @@ my $create_table3 = $dbi->create_table3; |
| 153 | 153 |
my $create_table_reserved = $dbi->create_table_reserved; |
| 154 | 154 |
my $q = substr($dbi->quote, 0, 1); |
| 155 | 155 |
my $p = substr($dbi->quote, 1, 1) || $q; |
| 156 |
+my $date_typename = $dbi->date_typename; |
|
| 157 |
+my $time_typename = $dbi->time_typename; |
|
| 158 |
+my $datetime_typename = $dbi->datetime_typename; |
|
| 159 |
+my $date_datatype = $dbi->date_datatype; |
|
| 160 |
+my $time_datatype = $dbi->time_datatype; |
|
| 161 |
+my $datetime_datatype = $dbi->datetime_datatype; |
|
| 156 | 162 |
|
| 157 | 163 |
# Variable |
| 158 | 164 |
# Variables |
| ... | ... |
@@ -188,8 +194,151 @@ my $binary; |
| 188 | 194 |
|
| 189 | 195 |
# Drop table |
| 190 | 196 |
eval { $dbi->execute('drop table table1') };
|
| 197 |
+ |
|
| 198 |
+ |
|
| 199 |
+ |
|
| 200 |
+ |
|
| 201 |
+ |
|
| 202 |
+ |
|
| 203 |
+ |
|
| 204 |
+ |
|
| 205 |
+ |
|
| 206 |
+ |
|
| 207 |
+ |
|
| 208 |
+ |
|
| 209 |
+ |
|
| 210 |
+ |
|
| 211 |
+test 'type_rule into'; |
|
| 212 |
+$dbi = DBIx::Custom->connect; |
|
| 213 |
+eval { $dbi->execute('drop table table1') };
|
|
| 214 |
+$dbi->execute($create_table1_type); |
|
| 215 |
+$dbi->type_rule( |
|
| 216 |
+ into1 => {
|
|
| 217 |
+ $date_typename => sub { '2010-' . $_[0] }
|
|
| 218 |
+ } |
|
| 219 |
+); |
|
| 220 |
+$dbi->insert({key1 => '01-01'}, table => 'table1');
|
|
| 221 |
+$result = $dbi->select(table => 'table1'); |
|
| 222 |
+is($result->one->{key1}, '2010-01-01');
|
|
| 223 |
+ |
|
| 224 |
+$dbi = DBIx::Custom->connect; |
|
| 225 |
+eval { $dbi->execute('drop table table1') };
|
|
| 226 |
+$dbi->execute($create_table1_type); |
|
| 227 |
+$dbi->type_rule( |
|
| 228 |
+ into1 => [ |
|
| 229 |
+ [$date_typename, $datetime_typename] => sub {
|
|
| 230 |
+ my $value = shift; |
|
| 231 |
+ $value =~ s/02/03/g; |
|
| 232 |
+ return $value; |
|
| 233 |
+ } |
|
| 234 |
+ ] |
|
| 235 |
+); |
|
| 236 |
+$dbi->insert({key1 => '2010-01-02', key2 => '2010-01-01 01:01:02'}, table => 'table1');
|
|
| 237 |
+$result = $dbi->select(table => 'table1'); |
|
| 238 |
+$row = $result->one; |
|
| 239 |
+is($row->{key1}, '2010-01-03');
|
|
| 240 |
+is($row->{key2}, '2010-01-01 01:01:03');
|
|
| 241 |
+ |
|
| 242 |
+$dbi = DBIx::Custom->connect; |
|
| 243 |
+eval { $dbi->execute('drop table table1') };
|
|
| 244 |
+$dbi->execute($create_table1_type); |
|
| 245 |
+$dbi->insert({key1 => '2010-01-03', key2 => '2010-01-01 01:01:03'}, table => 'table1');
|
|
| 246 |
+$dbi->type_rule( |
|
| 247 |
+ into1 => [ |
|
| 248 |
+ [$date_typename, $datetime_typename] => sub {
|
|
| 249 |
+ my $value = shift; |
|
| 250 |
+ $value =~ s/02/03/g; |
|
| 251 |
+ return $value; |
|
| 252 |
+ } |
|
| 253 |
+ ] |
|
| 254 |
+); |
|
| 255 |
+$result = $dbi->execute( |
|
| 256 |
+ "select * from table1 where key1 = :key1 and key2 = :table1.key2;", |
|
| 257 |
+ param => {key1 => '2010-01-03', 'table1.key2' => '2010-01-01 01:01:02'}
|
|
| 258 |
+); |
|
| 259 |
+$row = $result->one; |
|
| 260 |
+is($row->{key1}, '2010-01-03');
|
|
| 261 |
+is($row->{key2}, '2010-01-01 01:01:03');
|
|
| 262 |
+ |
|
| 263 |
+$dbi = DBIx::Custom->connect; |
|
| 264 |
+eval { $dbi->execute('drop table table1') };
|
|
| 265 |
+$dbi->execute($create_table1_type); |
|
| 266 |
+$dbi->insert({key1 => '2010-01-03', key2 => '2010-01-01 01:01:03'}, table => 'table1');
|
|
| 267 |
+$dbi->type_rule( |
|
| 268 |
+ into1 => [ |
|
| 269 |
+ [$date_typename, $datetime_typename] => sub {
|
|
| 270 |
+ my $value = shift; |
|
| 271 |
+ $value =~ s/02/03/g; |
|
| 272 |
+ return $value; |
|
| 273 |
+ } |
|
| 274 |
+ ] |
|
| 275 |
+); |
|
| 276 |
+$result = $dbi->execute( |
|
| 277 |
+ "select * from table1 where key1 = :key1 and key2 = :table1.key2;", |
|
| 278 |
+ param => {key1 => '2010-01-02', 'table1.key2' => '2010-01-01 01:01:02'},
|
|
| 279 |
+ table => 'table1' |
|
| 280 |
+); |
|
| 281 |
+$row = $result->one; |
|
| 282 |
+is($row->{key1}, '2010-01-03');
|
|
| 283 |
+is($row->{key2}, '2010-01-01 01:01:03');
|
|
| 284 |
+ |
|
| 285 |
+$dbi = DBIx::Custom->connect; |
|
| 286 |
+eval { $dbi->execute('drop table table1') };
|
|
| 287 |
+$dbi->execute($create_table1_type); |
|
| 288 |
+$dbi->register_filter(convert => sub {
|
|
| 289 |
+ my $value = shift; |
|
| 290 |
+ $value =~ s/02/03/; |
|
| 291 |
+ return $value; |
|
| 292 |
+}); |
|
| 293 |
+$dbi->type_rule( |
|
| 294 |
+ from1 => {
|
|
| 295 |
+ $date_datatype => 'convert', |
|
| 296 |
+ }, |
|
| 297 |
+ into1 => {
|
|
| 298 |
+ $date_typename => 'convert', |
|
| 299 |
+ } |
|
| 300 |
+); |
|
| 301 |
+$dbi->insert({key1 => '2010-02-02'}, table => 'table1');
|
|
| 302 |
+$result = $dbi->select(table => 'table1'); |
|
| 303 |
+is($result->fetch->[0], '2010-03-03'); |
|
| 304 |
+ |
|
| 305 |
+ |
|
| 306 |
+ |
|
| 307 |
+ |
|
| 308 |
+ |
|
| 309 |
+ |
|
| 310 |
+ |
|
| 311 |
+ |
|
| 312 |
+ |
|
| 313 |
+ |
|
| 314 |
+ |
|
| 315 |
+ |
|
| 316 |
+ |
|
| 317 |
+ |
|
| 318 |
+ |
|
| 319 |
+ |
|
| 320 |
+ |
|
| 321 |
+ |
|
| 322 |
+ |
|
| 323 |
+ |
|
| 324 |
+ |
|
| 325 |
+ |
|
| 326 |
+ |
|
| 327 |
+ |
|
| 328 |
+ |
|
| 329 |
+ |
|
| 330 |
+ |
|
| 331 |
+ |
|
| 332 |
+ |
|
| 333 |
+ |
|
| 334 |
+ |
|
| 335 |
+ |
|
| 336 |
+ |
|
| 337 |
+ |
|
| 338 |
+ |
|
| 191 | 339 |
|
| 192 | 340 |
# Create table |
| 341 |
+eval { $dbi->execute('drop table table1') };
|
|
| 193 | 342 |
$dbi->execute($create_table1); |
| 194 | 343 |
$model = $dbi->create_model(table => 'table1'); |
| 195 | 344 |
$model->insert({key1 => 1, key2 => 2});
|
| ... | ... |
@@ -661,6 +810,7 @@ like($@, qr/"where" must be specified/, |
| 661 | 810 |
eval{$dbi->delete(table => 'table1', where => {';' => 1})};
|
| 662 | 811 |
like($@, qr/safety/); |
| 663 | 812 |
|
| 813 |
+$dbi = undef; |
|
| 664 | 814 |
$dbi = DBIx::Custom->connect; |
| 665 | 815 |
eval { $dbi->execute("drop table ${q}table$p") };
|
| 666 | 816 |
$dbi->execute($create_table_reserved); |
| ... | ... |
@@ -1707,14 +1857,14 @@ $dbi = DBIx::Custom->connect; |
| 1707 | 1857 |
$dbi->register_tag_processor( |
| 1708 | 1858 |
a => sub { 1 }
|
| 1709 | 1859 |
); |
| 1710 |
-is($dbi->query_builder->tag_processors->{a}->(), 1);
|
|
| 1860 |
+is($dbi->{_tags}->{a}->(), 1);
|
|
| 1711 | 1861 |
|
| 1712 | 1862 |
test 'register_tag'; |
| 1713 | 1863 |
$dbi = DBIx::Custom->connect; |
| 1714 | 1864 |
$dbi->register_tag( |
| 1715 | 1865 |
b => sub { 2 }
|
| 1716 | 1866 |
); |
| 1717 |
-is($dbi->query_builder->tags->{b}->(), 2);
|
|
| 1867 |
+is($dbi->{_tags}->{b}->(), 2);
|
|
| 1718 | 1868 |
|
| 1719 | 1869 |
test 'table not specify exception'; |
| 1720 | 1870 |
$dbi = DBIx::Custom->connect; |
| ... | ... |
@@ -3346,13 +3496,14 @@ $result = $dbi->select( |
| 3346 | 3496 |
); |
| 3347 | 3497 |
is_deeply($result->all, [{'table2.key3' => 4}]);
|
| 3348 | 3498 |
|
| 3499 |
+ |
|
| 3349 | 3500 |
test 'table_alias'; |
| 3350 | 3501 |
$dbi = DBIx::Custom->connect; |
| 3351 | 3502 |
eval { $dbi->execute('drop table table1') };
|
| 3352 | 3503 |
$dbi->execute($create_table1_type); |
| 3353 | 3504 |
$dbi->type_rule( |
| 3354 | 3505 |
into1 => {
|
| 3355 |
- date => sub { '2010-' . $_[0] }
|
|
| 3506 |
+ $date_typename => sub { '2010-' . $_[0] }
|
|
| 3356 | 3507 |
} |
| 3357 | 3508 |
); |
| 3358 | 3509 |
$dbi->execute("insert into table1 (key1) values (:table2.key1)", {'table2.key1' => '01-01'},
|
| ... | ... |
@@ -3360,6 +3511,4 @@ $dbi->execute("insert into table1 (key1) values (:table2.key1)", {'table2.key1'
|
| 3360 | 3511 |
$result = $dbi->select(table => 'table1'); |
| 3361 | 3512 |
is($result->one->{key1}, '2010-01-01');
|
| 3362 | 3513 |
|
| 3363 |
- |
|
| 3364 |
- |
|
| 3365 | 3514 |
1; |
| ... | ... |
@@ -43,7 +43,7 @@ $dbi->delete_all(table => 'table1'); |
| 43 | 43 |
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
| 44 | 44 |
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 4});
|
| 45 | 45 |
$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 6});
|
| 46 |
-$dbi->query_builder->register_tag_processor( |
|
| 46 |
+$dbi->register_tag( |
|
| 47 | 47 |
limit => sub {
|
| 48 | 48 |
my ($count, $offset) = @_; |
| 49 | 49 |
|
| ... | ... |
@@ -179,20 +179,6 @@ my $binary; |
| 179 | 179 |
$dbi = DBIx::Custom->connect; |
| 180 | 180 |
|
| 181 | 181 |
### a little complex test |
| 182 |
-test 'table_alias'; |
|
| 183 |
-$dbi = DBIx::Custom->connect; |
|
| 184 |
-eval { $dbi->execute('drop table table1') };
|
|
| 185 |
-$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|
|
| 186 |
-$dbi->type_rule( |
|
| 187 |
- into1 => {
|
|
| 188 |
- date => sub { uc $_[0] }
|
|
| 189 |
- } |
|
| 190 |
-); |
|
| 191 |
-$dbi->execute("insert into table1 (key1) values (:table2.key1)", {'table2.key1' => 'a'},
|
|
| 192 |
- table_alias => {table2 => 'table1'});
|
|
| 193 |
-$result = $dbi->select(table => 'table1'); |
|
| 194 |
-is($result->one->{key1}, 'A');
|
|
| 195 |
- |
|
| 196 | 182 |
test 'type_rule into'; |
| 197 | 183 |
$dbi = DBIx::Custom->connect; |
| 198 | 184 |
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|