Changed behaviour to not stringify blessed objects, but pass them through to the...
Norbert Buchmuller [Tue, 11 Nov 2008 22:27:47 +0000 (22:27 +0000)]
lib/SQL/Abstract.pm
t/02where.t

index 92d52ad..8034548 100644 (file)
@@ -874,11 +874,11 @@ sub _refkind {
 
   # $suffix = 'REF' x (length of ref chain, i. e. \\[] is REFREFREF)
   while (1) {
+    # blessed references are considered like scalars
+    last if blessed $data;
     $suffix .= 'REF';
+    $ref     = ref $data;
 
-    # blessed references that can stringify are considered like scalars
-    $ref = (blessed $data && overload::Method($data, '""')) ? ''
-                                                            : ref $data;
     last if $ref ne 'REF';
     $data = $$data;
   }
index b47fdf9..60cbf84 100644 (file)
@@ -6,13 +6,15 @@ use Test::More;
 use Test::Exception;
 use SQL::Abstract::Test import => ['is_same_sql_bind'];
 
-plan tests => 17;
+plan tests => 18;
 
 use SQL::Abstract;
 
 # Make sure to test the examples, since having them break is somewhat
 # embarrassing. :-(
 
+my $not_stringifiable = SQLA::NotStringifiable->new();
+
 my @handle_tests = (
     {
         where => {
@@ -188,6 +190,12 @@ my @handle_tests = (
        bind => [ 'The Life, the Universe and Everything.' ],
    },
 
+   {
+       where => { foo => $not_stringifiable, },
+       stmt => " WHERE ( foo = ? )",
+       bind => [ $not_stringifiable ],
+   },
+
 
 );
 
@@ -225,3 +233,18 @@ sub to_str
 }
 
 1;
+
+
+#======================================================================
+package SQLA::NotStringifiable; # testing stringification of arguments
+#======================================================================
+
+use strict;
+use warnings;
+
+sub new
+{
+  bless {}, shift;
+}
+
+1;