removed EXPERIMETNAL select() column hash option. it...
...'s a little complex.
| ... | ... |
@@ -1,7 +1,11 @@ |
| 1 |
-0.1667 |
|
| 1 |
+0.1670 |
|
| 2 |
+ - removed EXPERIMETNAL select() column hash option. it's a little complex |
|
| 3 |
+ |
|
| 4 |
+0.1669 |
|
| 2 | 5 |
- renamed update_param to update_param_tag, update_param is DEPRECATED! |
| 3 | 6 |
- renamed insert_param to insert_param_tag, insert_param is DEPRECATED! |
| 4 |
- - added EXPERIMENTAL updat_param no_set option. |
|
| 7 |
+0.1668 |
|
| 8 |
+ - added EXPERIMENTAL update_param no_set option. |
|
| 5 | 9 |
- added EXPERIMENTAL reserved_word_quote attribute. |
| 6 | 10 |
0.1666 |
| 7 | 11 |
- removed from cache() and cache_method() document for a while and cache() value |
| ... | ... |
@@ -1,6 +1,6 @@ |
| 1 | 1 |
package DBIx::Custom; |
| 2 | 2 |
|
| 3 |
-our $VERSION = '0.1669'; |
|
| 3 |
+our $VERSION = '0.1670'; |
|
| 4 | 4 |
|
| 5 | 5 |
use 5.008001; |
| 6 | 6 |
use strict; |
| ... | ... |
@@ -867,6 +867,7 @@ sub select {
|
| 867 | 867 |
croak qq{"join" must be array reference}
|
| 868 | 868 |
unless ref $join eq 'ARRAY'; |
| 869 | 869 |
my $relation = delete $args{relation};
|
| 870 |
+ my $param = delete $args{param} || {};
|
|
| 870 | 871 |
|
| 871 | 872 |
# Add relation tables(DEPRECATED!); |
| 872 | 873 |
$self->_add_relation_table($tables, $relation); |
| ... | ... |
@@ -875,58 +876,14 @@ sub select {
|
| 875 | 876 |
my @sql; |
| 876 | 877 |
push @sql, 'select'; |
| 877 | 878 |
|
| 879 |
+ # Column clause |
|
| 878 | 880 |
if ($columns) {
|
| 879 |
- |
|
| 880 | 881 |
$columns = [$columns] if ! ref $columns; |
| 881 |
- |
|
| 882 |
- if (ref $columns eq 'HASH') {
|
|
| 883 |
- # Find tables |
|
| 884 |
- my $main_table; |
|
| 885 |
- my %tables; |
|
| 886 |
- if ($columns->{table}) {
|
|
| 887 |
- foreach my $table (@{$columns->{table}}) {
|
|
| 888 |
- if (($table || '') eq $tables->[-1]) {
|
|
| 889 |
- $main_table = $table; |
|
| 890 |
- } |
|
| 891 |
- else {
|
|
| 892 |
- $tables{$table} = 1;
|
|
| 893 |
- } |
|
| 894 |
- } |
|
| 895 |
- } |
|
| 896 |
- elsif ($columns->{all}) {
|
|
| 897 |
- $main_table = $tables->[-1] || ''; |
|
| 898 |
- foreach my $j (@$join) {
|
|
| 899 |
- my $tables = $self->_tables($j); |
|
| 900 |
- foreach my $table (@$tables) {
|
|
| 901 |
- $tables{$table} = 1;
|
|
| 902 |
- } |
|
| 903 |
- } |
|
| 904 |
- delete $tables{$main_table};
|
|
| 905 |
- } |
|
| 906 |
- |
|
| 907 |
- push @sql, $columns->{prepend} if $columns->{prepend};
|
|
| 908 |
- |
|
| 909 |
- # Column clause of main table |
|
| 910 |
- if ($main_table) {
|
|
| 911 |
- push @sql, $self->model($main_table)->mycolumn; |
|
| 912 |
- push @sql, ','; |
|
| 913 |
- } |
|
| 914 |
- |
|
| 915 |
- # Column cluase of other tables |
|
| 916 |
- foreach my $table (keys %tables) {
|
|
| 917 |
- unshift @$tables, $table; |
|
| 918 |
- push @sql, $self->model($table)->column($table); |
|
| 919 |
- push @sql, ','; |
|
| 920 |
- } |
|
| 921 |
- pop @sql if $sql[-1] eq ','; |
|
| 922 |
- } |
|
| 923 |
- else {
|
|
| 924 |
- foreach my $column (@$columns) {
|
|
| 925 |
- unshift @$tables, @{$self->_tables($column)};
|
|
| 926 |
- push @sql, ($column, ','); |
|
| 927 |
- } |
|
| 928 |
- pop @sql if $sql[-1] eq ','; |
|
| 882 |
+ foreach my $column (@$columns) {
|
|
| 883 |
+ unshift @$tables, @{$self->_tables($column)};
|
|
| 884 |
+ push @sql, ($column, ','); |
|
| 929 | 885 |
} |
| 886 |
+ pop @sql if $sql[-1] eq ','; |
|
| 930 | 887 |
} |
| 931 | 888 |
|
| 932 | 889 |
# "*" is default |
| ... | ... |
@@ -952,7 +909,8 @@ sub select {
|
| 952 | 909 |
|
| 953 | 910 |
# Where |
| 954 | 911 |
my $w = $self->_where($where); |
| 955 |
- $where = $w->param; |
|
| 912 |
+ $param = keys %$param ? $self->merge_param($param, $w->param) |
|
| 913 |
+ : $w->param; |
|
| 956 | 914 |
|
| 957 | 915 |
# String where |
| 958 | 916 |
my $swhere = "$w"; |
| ... | ... |
@@ -982,7 +940,7 @@ sub select {
|
| 982 | 940 |
# Execute query |
| 983 | 941 |
my $result = $self->execute( |
| 984 | 942 |
$query, |
| 985 |
- param => $where, |
|
| 943 |
+ param => $param, |
|
| 986 | 944 |
table => $tables, |
| 987 | 945 |
%args |
| 988 | 946 |
); |
| ... | ... |
@@ -1399,6 +1357,9 @@ sub _where {
|
| 1399 | 1357 |
$w = $where; |
| 1400 | 1358 |
} |
| 1401 | 1359 |
elsif (ref $where eq 'ARRAY') {
|
| 1360 |
+ warn "\$dbi->select(where => [CLAUSE, PARAMETER]) is DEPRECATED." . |
|
| 1361 |
+ "use \$dbi->select(where => \$dbi->where(clause => " . |
|
| 1362 |
+ "CLAUSE, param => PARAMETER));"; |
|
| 1402 | 1363 |
$w = $self->where( |
| 1403 | 1364 |
clause => $where->[0], |
| 1404 | 1365 |
param => $where->[1] |
| ... | ... |
@@ -2397,47 +2358,6 @@ Default is '*' unless C<column> is specified. |
| 2397 | 2358 |
# Default |
| 2398 | 2359 |
$dbi->select(column => '*'); |
| 2399 | 2360 |
|
| 2400 |
-You can use hash option in C<column> |
|
| 2401 |
- |
|
| 2402 |
-=over 4 |
|
| 2403 |
- |
|
| 2404 |
-=item all EXPERIMENTAL |
|
| 2405 |
- |
|
| 2406 |
-Colum clause, contains all columns of joined table. This is true or false value |
|
| 2407 |
- |
|
| 2408 |
- $dbi->select(column => {all => 1});
|
|
| 2409 |
- |
|
| 2410 |
-If main table is C<book> and joined table is C<company>, |
|
| 2411 |
-This create the following column clause. |
|
| 2412 |
- |
|
| 2413 |
- book.author as author |
|
| 2414 |
- book.company_id as company_id |
|
| 2415 |
- company.id as company__id |
|
| 2416 |
- company.name as company__name |
|
| 2417 |
- |
|
| 2418 |
-Columns of main table is consist of only column name, |
|
| 2419 |
-Columns of joined table is consist of table and column name joined C<__>. |
|
| 2420 |
- |
|
| 2421 |
-Note that this option is failed unless modles is included and |
|
| 2422 |
-C<columns> attribute is set. |
|
| 2423 |
- |
|
| 2424 |
- # Generally do the following way before using all_column option |
|
| 2425 |
- $dbi->include_model('MyModel')->setup_model;
|
|
| 2426 |
- |
|
| 2427 |
-=item table EXPERIMENTAL |
|
| 2428 |
- |
|
| 2429 |
-You can also specify table names by C<table> option |
|
| 2430 |
- |
|
| 2431 |
- $dbi->select(column => {table => ['book', 'company']});
|
|
| 2432 |
- |
|
| 2433 |
-=item prepend EXPERIMENTAL |
|
| 2434 |
- |
|
| 2435 |
-You can add before created statement |
|
| 2436 |
- |
|
| 2437 |
- $dbi->select(column => {prepend => 'SOME', all => 1});
|
|
| 2438 |
- |
|
| 2439 |
-=back |
|
| 2440 |
- |
|
| 2441 | 2361 |
=item C<where> |
| 2442 | 2362 |
|
| 2443 | 2363 |
Where clause. This is hash reference or L<DBIx::Custom::Where> object, |
| ... | ... |
@@ -6,6 +6,8 @@ use utf8; |
| 6 | 6 |
use Encode qw/encode_utf8 decode_utf8/; |
| 7 | 7 |
use Data::Dumper; |
| 8 | 8 |
|
| 9 |
+$SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /DEPRECATED/};
|
|
| 10 |
+ |
|
| 9 | 11 |
BEGIN {
|
| 10 | 12 |
eval { require DBD::SQLite; 1 }
|
| 11 | 13 |
or plan skip_all => 'DBD::SQLite required'; |
| ... | ... |
@@ -1932,7 +1934,6 @@ $rows = $dbi->select( |
| 1932 | 1934 |
is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}],
|
| 1933 | 1935 |
'reserved_word_quote'); |
| 1934 | 1936 |
|
| 1935 |
-test 'model join and column attribute and all_column option'; |
|
| 1936 | 1937 |
{
|
| 1937 | 1938 |
package MyDBI8; |
| 1938 | 1939 |
|
| ... | ... |
@@ -1946,22 +1947,6 @@ test 'model join and column attribute and all_column option'; |
| 1946 | 1947 |
return $self; |
| 1947 | 1948 |
} |
| 1948 | 1949 |
} |
| 1949 |
-$dbi = MyDBI8->connect($NEW_ARGS->{0});
|
|
| 1950 |
-$dbi->execute($CREATE_TABLE->{0});
|
|
| 1951 |
-$dbi->execute($CREATE_TABLE->{2});
|
|
| 1952 |
-$dbi->setup_model; |
|
| 1953 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 1954 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 3});
|
|
| 1955 |
-$model = $dbi->model('table1');
|
|
| 1956 |
-$result = $model->select_at( |
|
| 1957 |
- column => {table => ['table1', 'table2'], prepend => 'table1.key1 as key1_1,'},
|
|
| 1958 |
- where => 1 |
|
| 1959 |
-); |
|
| 1960 |
-is_deeply($result->fetch_hash_first, |
|
| 1961 |
- {key1_1 => 1, key1 => 1, key2 => 2, table2__key1 => 1, table2__key3 => 3});
|
|
| 1962 |
-$result = $model->select(column => {all => 1});
|
|
| 1963 |
-is_deeply($result->fetch_hash_first, |
|
| 1964 |
- {key1 => 1, key2 => 2, table2__key1 => 1, table2__key3 => 3});
|
|
| 1965 | 1950 |
|
| 1966 | 1951 |
test 'mycolumn'; |
| 1967 | 1952 |
$dbi = MyDBI8->connect($NEW_ARGS->{0});
|