... | ... |
@@ -1,4 +1,5 @@ |
1 | 1 |
0.1740 |
2 |
+ - added EXPERIMENTAL q method |
|
2 | 3 |
- execute method id option is DEPRECATED! |
3 | 4 |
0.1739 |
4 | 5 |
- insert timestamp option is DEPRECATED! |
... | ... |
@@ -131,7 +131,7 @@ sub assign_clause { |
131 | 131 |
|
132 | 132 |
my $wrap = $opts->{wrap} || {}; |
133 | 133 |
my $safety = $self->{safety_character} || $self->safety_character; |
134 |
- my $qp = $self->_q(''); |
|
134 |
+ my $qp = $self->q(''); |
|
135 | 135 |
my $q = substr($qp, 0, 1) || ''; |
136 | 136 |
my $p = substr($qp, 1, 1) || ''; |
137 | 137 |
|
... | ... |
@@ -172,8 +172,8 @@ sub column { |
172 | 172 |
# Column clause |
173 | 173 |
my @column; |
174 | 174 |
$columns ||= []; |
175 |
- push @column, $self->_q($table) . "." . $self->_q($_) . |
|
176 |
- " as " . $self->_q("${table}${separator}$_") |
|
175 |
+ push @column, $self->q($table) . "." . $self->q($_) . |
|
176 |
+ " as " . $self->q("${table}${separator}$_") |
|
177 | 177 |
for @$columns; |
178 | 178 |
|
179 | 179 |
return join (', ', @column); |
... | ... |
@@ -257,7 +257,7 @@ sub delete { |
257 | 257 |
# Delete statement |
258 | 258 |
my $sql = "delete "; |
259 | 259 |
$sql .= "$opt{prefix} " if defined $opt{prefix}; |
260 |
- $sql .= "from " . $self->_q($opt{table}) . " $w->{clause} "; |
|
260 |
+ $sql .= "from " . $self->q($opt{table}) . " $w->{clause} "; |
|
261 | 261 |
|
262 | 262 |
# Execute query |
263 | 263 |
$opt{statement} = 'delete'; |
... | ... |
@@ -661,7 +661,7 @@ sub insert { |
661 | 661 |
# Insert statement |
662 | 662 |
my $sql = "insert "; |
663 | 663 |
$sql .= "$opt{prefix} " if defined $opt{prefix}; |
664 |
- $sql .= "into " . $self->_q($opt{table}) . " " |
|
664 |
+ $sql .= "into " . $self->q($opt{table}) . " " |
|
665 | 665 |
. $self->values_clause($param, {wrap => $opt{wrap}}) . " "; |
666 | 666 |
|
667 | 667 |
# Remove id from parameter |
... | ... |
@@ -814,8 +814,8 @@ sub mycolumn { |
814 | 814 |
# Create column clause |
815 | 815 |
my @column; |
816 | 816 |
$columns ||= []; |
817 |
- push @column, $self->_q($table) . "." . $self->_q($_) . |
|
818 |
- " as " . $self->_q($_) |
|
817 |
+ push @column, $self->q($table) . "." . $self->q($_) . |
|
818 |
+ " as " . $self->q($_) |
|
819 | 819 |
for @$columns; |
820 | 820 |
|
821 | 821 |
return join (', ', @column); |
... | ... |
@@ -856,6 +856,29 @@ sub order { |
856 | 856 |
return DBIx::Custom::Order->new(dbi => $self, @_); |
857 | 857 |
} |
858 | 858 |
|
859 |
+sub q { |
|
860 |
+ my ($self, $value, $quotemeta) = @_; |
|
861 |
+ |
|
862 |
+ my $quote = $self->{reserved_word_quote} |
|
863 |
+ || $self->{quote} || $self->quote || ''; |
|
864 |
+ return "$quote$value$quote" |
|
865 |
+ if !$quotemeta && ($quote eq '`' || $quote eq '"'); |
|
866 |
+ |
|
867 |
+ my $q = substr($quote, 0, 1) || ''; |
|
868 |
+ my $p; |
|
869 |
+ if (defined $quote && length $quote > 1) { |
|
870 |
+ $p = substr($quote, 1, 1); |
|
871 |
+ } |
|
872 |
+ else { $p = $q } |
|
873 |
+ |
|
874 |
+ if ($quotemeta) { |
|
875 |
+ $q = quotemeta($q); |
|
876 |
+ $p = quotemeta($p); |
|
877 |
+ } |
|
878 |
+ |
|
879 |
+ return "$q$value$p"; |
|
880 |
+} |
|
881 |
+ |
|
859 | 882 |
sub register_filter { |
860 | 883 |
my $self = shift; |
861 | 884 |
|
... | ... |
@@ -904,7 +927,7 @@ sub select { |
904 | 927 |
splice @$column, 1, 1; |
905 | 928 |
} |
906 | 929 |
|
907 |
- $column = join(' ', $column->[0], 'as', $self->_q($column->[1])); |
|
930 |
+ $column = join(' ', $column->[0], 'as', $self->q($column->[1])); |
|
908 | 931 |
} |
909 | 932 |
unshift @$tables, @{$self->_search_tables($column)}; |
910 | 933 |
$sql .= "$column, "; |
... | ... |
@@ -918,11 +941,11 @@ sub select { |
918 | 941 |
if ($opt{relation}) { |
919 | 942 |
my $found = {}; |
920 | 943 |
for my $table (@$tables) { |
921 |
- $sql .= $self->_q($table) . ', ' unless $found->{$table}; |
|
944 |
+ $sql .= $self->q($table) . ', ' unless $found->{$table}; |
|
922 | 945 |
$found->{$table} = 1; |
923 | 946 |
} |
924 | 947 |
} |
925 |
- else { $sql .= $self->_q($tables->[-1] || '') . ' ' } |
|
948 |
+ else { $sql .= $self->q($tables->[-1] || '') . ' ' } |
|
926 | 949 |
$sql =~ s/, $/ /; |
927 | 950 |
croak "select method table option must be specified " . _subname |
928 | 951 |
unless defined $tables->[-1]; |
... | ... |
@@ -1119,7 +1142,7 @@ sub update { |
1119 | 1142 |
# Update statement |
1120 | 1143 |
my $sql = "update "; |
1121 | 1144 |
$sql .= "$opt{prefix} " if defined $opt{prefix}; |
1122 |
- $sql .= $self->_q($opt{table}) . " set $assign_clause $w->{clause} "; |
|
1145 |
+ $sql .= $self->q($opt{table}) . " set $assign_clause $w->{clause} "; |
|
1123 | 1146 |
|
1124 | 1147 |
# Execute query |
1125 | 1148 |
$opt{statement} = 'update'; |
... | ... |
@@ -1187,7 +1210,7 @@ sub values_clause { |
1187 | 1210 |
|
1188 | 1211 |
# Create insert parameter tag |
1189 | 1212 |
my $safety = $self->{safety_character} || $self->safety_character; |
1190 |
- my $qp = $self->_q(''); |
|
1213 |
+ my $qp = $self->q(''); |
|
1191 | 1214 |
my $q = substr($qp, 0, 1) || ''; |
1192 | 1215 |
my $p = substr($qp, 1, 1) || ''; |
1193 | 1216 |
|
... | ... |
@@ -1531,29 +1554,6 @@ sub _quote { |
1531 | 1554 |
return $self->{reserved_word_quote} || $self->quote || ''; |
1532 | 1555 |
} |
1533 | 1556 |
|
1534 |
-sub _q { |
|
1535 |
- my ($self, $value, $quotemeta) = @_; |
|
1536 |
- |
|
1537 |
- my $quote = $self->{reserved_word_quote} |
|
1538 |
- || $self->{quote} || $self->quote || ''; |
|
1539 |
- return "$quote$value$quote" |
|
1540 |
- if !$quotemeta && ($quote eq '`' || $quote eq '"'); |
|
1541 |
- |
|
1542 |
- my $q = substr($quote, 0, 1) || ''; |
|
1543 |
- my $p; |
|
1544 |
- if (defined $quote && length $quote > 1) { |
|
1545 |
- $p = substr($quote, 1, 1); |
|
1546 |
- } |
|
1547 |
- else { $p = $q } |
|
1548 |
- |
|
1549 |
- if ($quotemeta) { |
|
1550 |
- $q = quotemeta($q); |
|
1551 |
- $p = quotemeta($p); |
|
1552 |
- } |
|
1553 |
- |
|
1554 |
- return "$q$value$p"; |
|
1555 |
-} |
|
1556 |
- |
|
1557 | 1557 |
sub _remove_duplicate_table { |
1558 | 1558 |
my ($self, $tables, $main_table) = @_; |
1559 | 1559 |
|
... | ... |
@@ -1577,7 +1577,7 @@ sub _search_tables { |
1577 | 1577 |
my $tables = []; |
1578 | 1578 |
my $safety_character = $self->safety_character; |
1579 | 1579 |
my $q = $self->_quote; |
1580 |
- my $quoted_safety_character_re = $self->_q("?([$safety_character]+)", 1); |
|
1580 |
+ my $quoted_safety_character_re = $self->q("?([$safety_character]+)", 1); |
|
1581 | 1581 |
my $table_re = $q ? qr/(?:^|[^$safety_character])${quoted_safety_character_re}?\./ |
1582 | 1582 |
: qr/(?:^|[^$safety_character])([$safety_character]+)\./; |
1583 | 1583 |
while ($source =~ /$table_re/g) { |
... | ... |
@@ -1617,8 +1617,8 @@ sub _where_clause_and_param { |
1617 | 1617 |
} |
1618 | 1618 |
|
1619 | 1619 |
my $table_quote; |
1620 |
- $table_quote = $self->_q($table) if defined $table; |
|
1621 |
- my $column_quote = $self->_q($c); |
|
1620 |
+ $table_quote = $self->q($table) if defined $table; |
|
1621 |
+ my $column_quote = $self->q($c); |
|
1622 | 1622 |
$column_quote = $table_quote . '.' . $column_quote |
1623 | 1623 |
if defined $table_quote; |
1624 | 1624 |
push @$clause, "$column_quote = :$column" for keys %$where; |
... | ... |
@@ -2944,6 +2944,12 @@ This is used in C<param> of L<DBIx::Custom::Where> . |
2944 | 2944 |
|
2945 | 2945 |
Create a new L<DBIx::Custom::Order> object. |
2946 | 2946 |
|
2947 |
+=head2 C<q EXPERIMENTAL> |
|
2948 |
+ |
|
2949 |
+ my $quooted = $dbi->q("title"); |
|
2950 |
+ |
|
2951 |
+Quote string by value of C<quote>. |
|
2952 |
+ |
|
2947 | 2953 |
=head2 C<register_filter> |
2948 | 2954 |
|
2949 | 2955 |
$dbi->register_filter( |
... | ... |
@@ -14,7 +14,7 @@ sub prepend { |
14 | 14 |
for my $order (reverse @_) { |
15 | 15 |
if (ref $order eq 'ARRAY') { |
16 | 16 |
my $column = shift @$order; |
17 |
- $column = $self->dbi->_q($column) if defined $column; |
|
17 |
+ $column = $self->dbi->q($column) if defined $column; |
|
18 | 18 |
my $derection = shift @$order; |
19 | 19 |
$order = $column; |
20 | 20 |
$order .= " $derection" if $derection; |