if $datatype;
$data = $self->_dbh->quote($data)
- if (!$datatype || $self->should_quote_value($datatype, $data));
+ unless $self->interpolate_unquoted($datatype, $data);
$new_sql .= shift(@sql_part) . $data;
}
return ($new_sql, []);
}
-=head2 should_quote_value
+=head2 interpolate_unquoted
This method is called by L</_prep_for_execute> for every column in
order to determine if its value should be quoted or not. The arguments
are the current column data type and the actual bind value. The return
-value is interpreted as: true - do quote, false - do not quote. You should
+value is interpreted as: true - do not quote, false - do quote. You should
override this in you Storage::DBI::<database> subclass, if your RDBMS
does not like quotes around certain datatypes (e.g. Sybase and integer
-columns). The default method always returns true (do quote).
+columns). The default method always returns false (do quote).
WARNING!!!
=cut
-sub should_quote_value {
+sub interpolate_unquoted {
#my ($self, $datatype, $value) = @_;
- return 1;
+ return 0;
}
=head2 _prep_interpolated_value
numeric => $decimal,
);
-sub should_quote_value {
+sub interpolate_unquoted {
my $self = shift;
my ($type, $value) = @_;
return $self->next::method(@_) if not defined $value or not defined $type;
if (my $key = List::Util::first { $type =~ /$_/i } keys %noquote) {
- return 0 if $noquote{$key}->($value);
- } elsif ($self->is_datatype_numeric($type) && $number->($value)) {
- return 0;
+ return 1 if $noquote{$key}->($value);
+ }
+ elsif ($self->is_datatype_numeric($type) && $number->($value)) {
+ return 1;
}
-
-## try to guess based on value
-# elsif (not $type) {
-# return 0 if $number->($value) || $noquote->{money}->($value);
-# }
return $self->next::method(@_);
}