| ... | ... | 
                  @@ -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;  |