... | ... |
@@ -1,4 +1,5 @@ |
1 | 1 |
0.2101 |
2 |
+ - micro optimization |
|
2 | 3 |
- select method can receive odd number argument. In that case first argument |
3 | 4 |
is column option. |
4 | 5 |
- fixed update_or_insert bug that when parameter don't contain any key-value |
... | ... |
@@ -1259,12 +1259,15 @@ sub _create_query { |
1259 | 1259 |
else { |
1260 | 1260 |
my @columns; |
1261 | 1261 |
my $c = $self->{safety_character}; |
1262 |
+ my $re = $c eq 'a-zA-Z0-9_' |
|
1263 |
+ ? qr/(.*?[^\\]):([$c\.]+)(?:\{(.*?)\})?(.*)/so |
|
1264 |
+ : qr/(.*?[^\\]):([$c\.]+)(?:\{(.*?)\})?(.*)/s; |
|
1262 | 1265 |
my %duplicate; |
1263 | 1266 |
my $duplicate; |
1264 | 1267 |
# Parameter regex |
1265 | 1268 |
$sql =~ s/([0-9]):/$1\\:/g; |
1266 | 1269 |
my $new_sql = ''; |
1267 |
- while ($sql =~ /(.*?[^\\]):([$c\.]+)(?:\{(.*?)\})?(.*)/s) { |
|
1270 |
+ while ($sql =~ /$re/) { |
|
1268 | 1271 |
push @columns, $2; |
1269 | 1272 |
$duplicate = 1 if ++$duplicate{$columns[-1]} > 1; |
1270 | 1273 |
($new_sql, $sql) = defined $3 ? |
... | ... |
@@ -37,7 +37,10 @@ sub to_string { |
37 | 37 |
my $where = []; |
38 | 38 |
my $count = {}; |
39 | 39 |
$self->{_query_builder} = $self->dbi->query_builder; |
40 |
- $self->{_safety_character} = $self->dbi->safety_character; |
|
40 |
+ my $c = $self->dbi->safety_character; |
|
41 |
+ $self->{_re} = $c eq 'a-zA-Z0-9_' ? |
|
42 |
+ qr/[^\\]:([$c\.]+)/so : qr/[^\\]:([$c\.]+)/s; |
|
43 |
+ |
|
41 | 44 |
$self->{_quote} = $self->dbi->_quote; |
42 | 45 |
$self->{_tag_parse} = exists $ENV{DBIX_CUSTOM_TAG_PARSE} |
43 | 46 |
? $ENV{DBIX_CUSTOM_TAG_PARSE} : $self->dbi->{tag_parse}; |
... | ... |
@@ -90,7 +93,7 @@ sub _parse { |
90 | 93 |
my $pushed; |
91 | 94 |
|
92 | 95 |
# Column |
93 |
- my $c = $self->{_safety_character}; |
|
96 |
+ my $re = $self->{_re}; |
|
94 | 97 |
|
95 | 98 |
my $column; |
96 | 99 |
my $sql = " " . $clause || ''; |
... | ... |
@@ -100,7 +103,7 @@ sub _parse { |
100 | 103 |
} |
101 | 104 |
else { |
102 | 105 |
$sql =~ s/([0-9]):/$1\\:/g; |
103 |
- ($column) = $sql =~ /[^\\]:([$c\.]+)/s; |
|
106 |
+ ($column) = $sql =~ /$re/; |
|
104 | 107 |
} |
105 | 108 |
unless (defined $column) { |
106 | 109 |
push @$where, $clause; |
... | ... |
@@ -243,7 +243,6 @@ test 'execute reuse option'; |
243 | 243 |
eval { $dbi->execute("drop table $table1") }; |
244 | 244 |
$dbi->execute($create_table1); |
245 | 245 |
$reuse = {}; |
246 |
-$DB::single = 1; |
|
247 | 246 |
for my $i (1 .. 2) { |
248 | 247 |
$dbi->insert({$key1 => 1, $key2 => 2}, table => $table1, reuse => $reuse); |
249 | 248 |
} |