... | ... |
@@ -329,49 +329,38 @@ sub execute { |
329 | 329 |
$self->last_sql($query->sql); |
330 | 330 |
|
331 | 331 |
return $query if $query_return; |
332 |
+ |
|
333 |
+ # DEPRECATED! Merge query filter |
|
332 | 334 |
$filter ||= $query->{filter} || {}; |
333 | 335 |
|
334 | 336 |
# Tables |
335 | 337 |
unshift @$tables, @{$query->{tables} || []}; |
336 | 338 |
my $main_table = @{$tables}[-1]; |
337 | 339 |
|
338 |
- # DEPRECATED! |
|
340 |
+ # DEPRECATED! Cleanup tables |
|
339 | 341 |
$tables = $self->_remove_duplicate_table($tables, $main_table) |
340 | 342 |
if @$tables > 1; |
341 | 343 |
|
342 | 344 |
# Type rule |
343 | 345 |
my $type_filters = {}; |
344 | 346 |
unless ($type_rule_off) { |
345 |
- foreach my $name (keys %$param) { |
|
346 |
- my $table; |
|
347 |
- my $column; |
|
348 |
- if ($name =~ /(?:(.+)\.)?(.+)/) { |
|
349 |
- $table = $1; |
|
350 |
- $column = $2; |
|
351 |
- } |
|
352 |
- $table ||= $main_table; |
|
353 |
- |
|
354 |
- foreach my $i (1 .. 2) { |
|
355 |
- unless ($type_rule_off_parts->{$i}) { |
|
356 |
- my $into = $self->{"_into$i"} || {}; |
|
357 |
- |
|
358 |
- my $alias = $table; |
|
359 |
- $table = $table_alias->{$alias} |
|
360 |
- if defined $alias && $table_alias->{$alias}; |
|
347 |
+ foreach my $i (1, 2) { |
|
348 |
+ unless ($type_rule_off_parts->{$i}) { |
|
349 |
+ $type_filters->{$i} = {}; |
|
350 |
+ foreach my $alias (keys %$table_alias) { |
|
351 |
+ my $table = $table_alias->{$alias}; |
|
361 | 352 |
|
362 |
- if (defined $table && $into->{$table} && |
|
363 |
- (my $rule = $into->{$table}->{$column})) |
|
364 |
- { |
|
365 |
- $type_filters->{$i}->{$column} = $rule; |
|
366 |
- $type_filters->{$i}->{"$table.$column"} = $rule; |
|
367 |
- $type_filters->{$i}->{"$alias.$column"} = $rule if $alias ne $table; |
|
353 |
+ foreach my $column (keys %{$self->{"_into$i"}{key}{$table} || {}}) { |
|
354 |
+ $type_filters->{$i}->{"$alias.$column"} = $self->{"_into$i"}{key}{$table}{$column}; |
|
368 | 355 |
} |
369 | 356 |
} |
357 |
+ $type_filters->{$i} = {%{$type_filters->{$i}}, %{$self->{"_into$i"}{key}{$main_table} || {}}} |
|
358 |
+ if $main_table; |
|
370 | 359 |
} |
371 | 360 |
} |
372 | 361 |
} |
373 | 362 |
|
374 |
- # Applied filter(DEPRECATED!) |
|
363 |
+ # DEPRECATED! Applied filter |
|
375 | 364 |
if ($self->{filter}{on}) { |
376 | 365 |
my $applied_filter = {}; |
377 | 366 |
foreach my $table (@$tables) { |
... | ... |
@@ -420,10 +409,8 @@ sub execute { |
420 | 409 |
$affected = $sth->execute; |
421 | 410 |
}; |
422 | 411 |
|
423 |
- if ($@) { |
|
424 |
- $self->_croak($@, qq{. Following SQL is executed.\n} |
|
425 |
- . qq{$query->{sql}\n} . _subname); |
|
426 |
- } |
|
412 |
+ $self->_croak($@, qq{. Following SQL is executed.\n} |
|
413 |
+ . qq{$query->{sql}\n} . _subname) if $@; |
|
427 | 414 |
|
428 | 415 |
# DEBUG message |
429 | 416 |
if (DEBUG) { |
... | ... |
@@ -980,7 +967,8 @@ sub type_rule { |
980 | 967 |
$filter = $self->filters->{$fname}; |
981 | 968 |
} |
982 | 969 |
|
983 |
- $self->{"_$into"}{$table}{$column} = $filter; |
|
970 |
+ $self->{"_$into"}{key}{$table}{$column} = $filter; |
|
971 |
+ $self->{"_$into"}{dot}{"$table.$column"} = $filter; |
|
984 | 972 |
} |
985 | 973 |
}); |
986 | 974 |
} |
... | ... |
@@ -1201,7 +1189,7 @@ sub _create_bind_values { |
1201 | 1189 |
# Type rule |
1202 | 1190 |
foreach my $i (1 .. 2) { |
1203 | 1191 |
my $type_filter = $type_filters->{$i}; |
1204 |
- my $tf = $type_filter->{$column}; |
|
1192 |
+ my $tf = $self->{"_into$i"}->{dot}->{$column} || $type_filter->{$column}; |
|
1205 | 1193 |
$value = $tf->($value) if $tf; |
1206 | 1194 |
} |
1207 | 1195 |
|