... | ... |
@@ -1,4 +1,8 @@ |
1 | 1 |
0.1745 |
2 |
+ - DBIx::Custom::QueryBuilder class is DEPRECATED! |
|
3 |
+ - added DBIX_CUSTOM_DISABLE_MODEL_EXECUTE environment variable |
|
4 |
+ - added DBIX_CUSTOM_TAG_PARSE environment variable |
|
5 |
+ - tag_parse attribute is DEPRECATED! |
|
2 | 6 |
- show_datatype method return lower case string |
3 | 7 |
- show_typename method return lower case string |
4 | 8 |
- DBIx::Custom::Result filter_on method is DEPRECATED! |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
package DBIx::Custom; |
2 | 2 |
use Object::Simple -base; |
3 | 3 |
|
4 |
-our $VERSION = '0.1744'; |
|
4 |
+our $VERSION = '0.1745'; |
|
5 | 5 |
use 5.008001; |
6 | 6 |
|
7 | 7 |
use Carp 'croak'; |
... | ... |
@@ -71,8 +71,7 @@ has [qw/connector dsn password quote user exclude_table user_table_info |
71 | 71 |
result_class => 'DBIx::Custom::Result', |
72 | 72 |
safety_character => '\w', |
73 | 73 |
separator => '.', |
74 |
- stash => sub { {} }, |
|
75 |
- tag_parse => 1; |
|
74 |
+ stash => sub { {} }; |
|
76 | 75 |
|
77 | 76 |
sub available_datatype { |
78 | 77 |
my $self = shift; |
... | ... |
@@ -838,6 +837,9 @@ sub new { |
838 | 837 |
'update_param' => \&DBIx::Custom::Tag::update_param |
839 | 838 |
}; |
840 | 839 |
|
840 |
+ # DEPRECATED! |
|
841 |
+ $self->{tag_parse} = 1; |
|
842 |
+ |
|
841 | 843 |
return $self; |
842 | 844 |
} |
843 | 845 |
|
... | ... |
@@ -1705,6 +1707,18 @@ has default_dbi_option => sub { |
1705 | 1707 |
return shift->default_option; |
1706 | 1708 |
}; |
1707 | 1709 |
|
1710 |
+# DEPRECATED |
|
1711 |
+sub tag_parse { |
|
1712 |
+ my $self = shift; |
|
1713 |
+ warn "tag_parse is DEPRECATED! use \$ENV{DBIX_CUSTOM_TAG_PARSE} " . |
|
1714 |
+ "environment variable"; |
|
1715 |
+ if (@_) { |
|
1716 |
+ $self->{tag_parse} = $_[0]; |
|
1717 |
+ return $self; |
|
1718 |
+ } |
|
1719 |
+ return $self->{tag_parse}; |
|
1720 |
+} |
|
1721 |
+ |
|
1708 | 1722 |
# DEPRECATED! |
1709 | 1723 |
sub method { |
1710 | 1724 |
warn "method is DEPRECATED! use helper instead"; |
... | ... |
@@ -2612,6 +2626,18 @@ You can check SQL, column, or get statment handle. |
2612 | 2626 |
my $sth = $query->sth; |
2613 | 2627 |
my $columns = $query->columns; |
2614 | 2628 |
|
2629 |
+=item C<reuse> |
|
2630 |
+ |
|
2631 |
+ reuse => $hash_ref |
|
2632 |
+ |
|
2633 |
+Reuse query object if the hash reference variable is set. |
|
2634 |
+ |
|
2635 |
+ my $queries = {}; |
|
2636 |
+ $dbi->execute($sql, $param, reuse => $queries); |
|
2637 |
+ |
|
2638 |
+This will improved performance when you want to execute same query repeatedly |
|
2639 |
+because generally creating query object is slow. |
|
2640 |
+ |
|
2615 | 2641 |
=item C<primary_key> |
2616 | 2642 |
|
2617 | 2643 |
primary_key => 'id' |
... | ... |
@@ -2643,18 +2669,6 @@ Table alias. Key is real table name, value is alias table name. |
2643 | 2669 |
If you set C<table_alias>, you can enable C<into1> and C<into2> type rule |
2644 | 2670 |
on alias table name. |
2645 | 2671 |
|
2646 |
-=item C<reuse> |
|
2647 |
- |
|
2648 |
- reuse => $hash_ref |
|
2649 |
- |
|
2650 |
-Reuse query object if the hash reference variable is set. |
|
2651 |
- |
|
2652 |
- my $queries = {}; |
|
2653 |
- $dbi->execute($sql, $param, reuse => $queries); |
|
2654 |
- |
|
2655 |
-This will improved performance when you want to execute same query repeatedly |
|
2656 |
-because generally creating query object is slow. |
|
2657 |
- |
|
2658 | 2672 |
=item C<type_rule_off> |
2659 | 2673 |
|
2660 | 2674 |
type_rule_off => 1 |
... | ... |
@@ -3392,6 +3406,7 @@ DEBUG output encoding. Default to UTF-8. |
3392 | 3406 |
L<DBIx::Custom> |
3393 | 3407 |
|
3394 | 3408 |
# Attribute methods |
3409 |
+ tag_parse # will be removed 2017/1/1 |
|
3395 | 3410 |
default_dbi_option # will be removed 2017/1/1 |
3396 | 3411 |
dbi_option # will be removed 2017/1/1 |
3397 | 3412 |
data_source # will be removed at 2017/1/1 |
... | ... |
@@ -3464,6 +3479,8 @@ L<DBIx::Custom::Query> |
3464 | 3479 |
filter # will be removed at 2017/1/1 |
3465 | 3480 |
|
3466 | 3481 |
L<DBIx::Custom::QueryBuilder> |
3482 |
+ |
|
3483 |
+This module is DEPRECATED! # will be removed at 2017/1/1 |
|
3467 | 3484 |
|
3468 | 3485 |
# Attribute methods |
3469 | 3486 |
tags # will be removed at 2017/1/1 |
... | ... |
@@ -87,17 +87,27 @@ sub update_or_insert { |
87 | 87 |
} |
88 | 88 |
|
89 | 89 |
sub execute { |
90 |
- warn "DBIx::Custom::Model execute method is DEPRECATED!"; |
|
91 | 90 |
my $self = shift; |
92 |
- return $self->dbi->execute( |
|
93 |
- shift, |
|
94 |
- shift, |
|
95 |
- table => $self->table, |
|
96 |
- bind_type => $self->bind_type, |
|
97 |
- primary_key => $self->primary_key, |
|
98 |
- type => $self->type, |
|
99 |
- @_ |
|
100 |
- ); |
|
91 |
+ |
|
92 |
+ if ($ENV{DBIX_CUSTOM_DISABLE_MODEL_EXECUTE}) { |
|
93 |
+ $self->dbi->execute(@_); |
|
94 |
+ } |
|
95 |
+ else { |
|
96 |
+ warn "DBIx::Custom::Model execute method is DEPRECATED! " . |
|
97 |
+ "use DBIx::Custom execute method. " . |
|
98 |
+ "If you want to call DBIx::Custom execute method directory from model, " . |
|
99 |
+ "set \$ENV{DBIX_CUSTOM_DISABLE_MODEL_EXECUTE} to 1 " . |
|
100 |
+ "until DBIx::Custom::Model execute method is removed in the future." ; |
|
101 |
+ return $self->dbi->execute( |
|
102 |
+ shift, |
|
103 |
+ shift, |
|
104 |
+ table => $self->table, |
|
105 |
+ bind_type => $self->bind_type, |
|
106 |
+ primary_key => $self->primary_key, |
|
107 |
+ type => $self->type, |
|
108 |
+ @_ |
|
109 |
+ ); |
|
110 |
+ } |
|
101 | 111 |
} |
102 | 112 |
|
103 | 113 |
sub DESTROY { } |
... | ... |
@@ -10,13 +10,16 @@ use DBIx::Custom::Util '_subname'; |
10 | 10 |
push @DBIx::Custom::CARP_NOT, __PACKAGE__; |
11 | 11 |
push @DBIx::Custom::Where::CARP_NOT, __PACKAGE__; |
12 | 12 |
|
13 |
-has 'dbi'; |
|
14 |
- |
|
15 | 13 |
sub build_query { |
16 | 14 |
my ($self, $sql) = @_; |
17 | 15 |
|
18 | 16 |
# Parse tag. tag is DEPRECATED! |
19 |
- if ($sql =~ /(\s|^)\{/ && $self->dbi->tag_parse) { |
|
17 |
+ my $tag_parse; |
|
18 |
+ $tag_parse = $ENV{DBIX_CUSTOM_TAG_PARSE} |
|
19 |
+ if exists $ENV{DBIX_CUSTOM_TAG_PARSE}; |
|
20 |
+ $tag_parse = $self->dbi->{tag_parse} unless defined $tag_parse; |
|
21 |
+ |
|
22 |
+ if ($tag_parse && $sql =~ /(\s|^)\{/) { |
|
20 | 23 |
my $query = $self->_parse_tag($sql); |
21 | 24 |
my $tag_count = delete $query->{tag_count}; |
22 | 25 |
warn qq/Tag system such as {? name} is DEPRECATED! / . |
... | ... |
@@ -77,7 +80,10 @@ sub _parse_parameter { |
77 | 80 |
|
78 | 81 |
return $query; |
79 | 82 |
} |
80 |
- |
|
83 |
+ |
|
84 |
+# DEPRECATED |
|
85 |
+has 'dbi'; |
|
86 |
+ |
|
81 | 87 |
# DEPRECATED! |
82 | 88 |
has tags => sub { {} }; |
83 | 89 |
|
... | ... |
@@ -286,33 +292,10 @@ sub register_tag_processor { |
286 | 292 |
|
287 | 293 |
=head1 NAME |
288 | 294 |
|
289 |
-DBIx::Custom::QueryBuilder - Query builder |
|
295 |
+DBIx::Custom::QueryBuilder - DEPRECATED! |
|
290 | 296 |
|
291 |
-=head1 SYNOPSIS |
|
292 |
- |
|
293 |
- my $builder = DBIx::Custom::QueryBuilder->new; |
|
294 |
- my $query = $builder->build_query( |
|
295 |
- "select from table title = :title and author = :author" |
|
296 |
- ); |
|
297 |
- |
|
298 |
-=head1 ATTRIBUTES |
|
299 |
- |
|
300 |
-=head2 C<dbi> |
|
301 |
- |
|
302 |
- my $dbi = $builder->dbi; |
|
303 |
- $builder = $builder->dbi($dbi); |
|
304 |
- |
|
305 |
-L<DBIx::Custom> object. |
|
306 |
- |
|
307 |
-=head1 METHODS |
|
308 |
- |
|
309 |
-L<DBIx::Custom::QueryBuilder> inherits all methods from L<Object::Simple> |
|
310 |
-and implements the following new ones. |
|
311 |
- |
|
312 |
-=head2 C<build_query> |
|
313 |
- |
|
314 |
- my $query = $builder->build_query($source); |
|
297 |
+=head1 DESCRIPTION |
|
315 | 298 |
|
316 |
-Create a new L<DBIx::Custom::Query> object from SQL source. |
|
299 |
+This module functionality will be moved to DBIx::Custom |
|
317 | 300 |
|
318 | 301 |
=cut |
... | ... |
@@ -39,14 +39,14 @@ sub to_string { |
39 | 39 |
$self->{_query_builder} = $self->dbi->query_builder; |
40 | 40 |
$self->{_safety_character} = $self->dbi->safety_character; |
41 | 41 |
$self->{_quote} = $self->dbi->_quote; |
42 |
- $self->{_tag_parse} = $self->dbi->tag_parse; |
|
42 |
+ $self->{_tag_parse} = $self->dbi->{tag_parse}; |
|
43 | 43 |
$self->_parse($clause, $where, $count, 'and'); |
44 | 44 |
|
45 | 45 |
# Stringify |
46 | 46 |
unshift @$where, 'where' if @$where; |
47 | 47 |
return join(' ', @$where); |
48 | 48 |
} |
49 |
- |
|
49 |
+ |
|
50 | 50 |
our %VALID_OPERATIONS = map { $_ => 1 } qw/and or/; |
51 | 51 |
sub _parse { |
52 | 52 |
my ($self, $clause, $where, $count, $op, $info) = @_; |
... | ... |
@@ -3024,6 +3024,28 @@ $dbi->insert({$key1 => 1, $key2 => 1}, table => $table1); |
3024 | 3024 |
eval {$dbi->execute("select * from $table1 where {= $key1}", {$key1 => 1})}; |
3025 | 3025 |
ok($@); |
3026 | 3026 |
|
3027 |
+test 'DBIX_CUSTOM_TAG_PARSE environment variable'; |
|
3028 |
+{ |
|
3029 |
+ $ENV{DBIX_CUSTOM_TAG_PARSE} = 0; |
|
3030 |
+ $dbi = DBIx::Custom->connect; |
|
3031 |
+ eval { $dbi->execute("drop table $table1") }; |
|
3032 |
+ $dbi->execute($create_table1); |
|
3033 |
+ $dbi->insert({$key1 => 1, $key2 => 1}, table => $table1); |
|
3034 |
+ eval {$dbi->execute("select * from $table1 where {= $key1}", {$key1 => 1})}; |
|
3035 |
+ ok($@); |
|
3036 |
+ delete$ENV{DBIX_CUSTOM_TAG_PARSE}; |
|
3037 |
+} |
|
3038 |
+ |
|
3039 |
+{ |
|
3040 |
+ $ENV{DBIX_CUSTOM_TAG_PARSE} = 0; |
|
3041 |
+ $dbi = DBIx::Custom->connect; |
|
3042 |
+ eval { $dbi->execute("drop table $table1") }; |
|
3043 |
+ $dbi->execute($create_table1); |
|
3044 |
+ $dbi->insert({$key1 => 1, $key2 => 1}, table => $table1); |
|
3045 |
+ is($dbi->select(table => $table1)->one->{$key1}, 1); |
|
3046 |
+ delete$ENV{DBIX_CUSTOM_TAG_PARSE}; |
|
3047 |
+} |
|
3048 |
+ |
|
3027 | 3049 |
test 'last_sql'; |
3028 | 3050 |
$dbi = DBIx::Custom->connect; |
3029 | 3051 |
eval { $dbi->execute("drop table $table1") }; |
... | ... |
@@ -3135,6 +3157,35 @@ $rows = [ |
3135 | 3157 |
); |
3136 | 3158 |
} |
3137 | 3159 |
|
3160 |
+eval { $dbi->execute("drop table $table1") }; |
|
3161 |
+$dbi->execute($create_table1); |
|
3162 |
+{ |
|
3163 |
+ $ENV{DBIX_CUSTOM_DISABLE_MODEL_EXECUTE} = 1; |
|
3164 |
+ $model = $dbi->create_model(table => $table1, primary_key => $key1); |
|
3165 |
+ eval {$model->execute("select * from $table1 where :${key1}{=}", id => 1)}; |
|
3166 |
+ like($@, qr/primary_key/); |
|
3167 |
+ delete $ENV{DBIX_CUSTOM_DISABLE_MODEL_EXECUTE}; |
|
3168 |
+} |
|
3169 |
+ |
|
3170 |
+{ |
|
3171 |
+ $ENV{DBIX_CUSTOM_DISABLE_MODEL_EXECUTE} = 1; |
|
3172 |
+ $model = $dbi->create_model(table => $table1, primary_key => $key1); |
|
3173 |
+ $model->insert({$key1 => 1}); |
|
3174 |
+ $result = $model->execute("select * from $table1 where :${key1}{=}", id => 1, |
|
3175 |
+ table => $table1, primary_key => $key1); |
|
3176 |
+ is($result->one->{$key1}, 1); |
|
3177 |
+ delete $ENV{DBIX_CUSTOM_DISABLE_MODEL_EXECUTE}; |
|
3178 |
+} |
|
3179 |
+ |
|
3180 |
+eval { $dbi->execute("drop table $table1") }; |
|
3181 |
+$dbi->execute($create_table1); |
|
3182 |
+{ |
|
3183 |
+ $model = $dbi->create_model(table => $table1, primary_key => $key1); |
|
3184 |
+ $model->insert({$key1 => 1}); |
|
3185 |
+ eval {$result = $model->execute("select * from $table1 where :${key1}{=}", {}, id => 1)}; |
|
3186 |
+ is($result->one->{$key1}, 1); |
|
3187 |
+} |
|
3188 |
+ |
|
3138 | 3189 |
test 'id option more'; |
3139 | 3190 |
eval { $dbi->execute("drop table $table1") }; |
3140 | 3191 |
$dbi->execute($create_table1_highperformance); |