Change should_quote_value to interpolate_unquoted to make it harder to stop quoting...
Peter Rabbitson [Sun, 30 Aug 2009 07:15:41 +0000 (07:15 +0000)]
lib/DBIx/Class/Storage/DBI/NoBindVars.pm
lib/DBIx/Class/Storage/DBI/Sybase/NoBindVars.pm

index ada367b..9f84702 100644 (file)
@@ -63,7 +63,7 @@ sub _prep_for_execute {
         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;
     }
@@ -73,15 +73,15 @@ sub _prep_for_execute {
   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!!!
 
@@ -90,9 +90,9 @@ columns). The default method always returns true (do quote).
 
 =cut
 
-sub should_quote_value {
+sub interpolate_unquoted {
   #my ($self, $datatype, $value) = @_;
-  return 1;
+  return 0;
 }
 
 =head2 _prep_interpolated_value
index 7b59d0a..77c8321 100644 (file)
@@ -32,22 +32,18 @@ my %noquote = (
     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(@_);
 }