make the DBIC required warning scoped
Matt S Trout [Wed, 13 Feb 2019 03:01:48 +0000 (03:01 +0000)]
lib/SQL/Abstract.pm
t/01generate.t

index 6d2d4d9..6b71a2c 100644 (file)
@@ -553,7 +553,7 @@ sub _expand_expr {
   die "notreached";
 }
 
-our $Nest_Warning_Emitted = 0;
+my $Nest_Warned = 0;
 
 sub _expand_expr_hashpair {
   my ($self, $k, $v, $logic) = @_;
@@ -571,10 +571,17 @@ sub _expand_expr_hashpair {
           . "You probably wanted ...-and => [ $k => COND1, $k => COND2 ... ]";
     }
     if ($k eq '-nest') {
-      belch(
-        "-nest in search conditions is deprecated, you most probably wanted:\n"
-        .q|{..., -and => [ \%cond0, \@cond1, \'cond2', \[ 'cond3', [ col => bind ] ], etc. ], ... }|
-      ) unless $Nest_Warning_Emitted++;
+      # DBIx::Class requires a nest warning to be emitted once but the private
+      # method it overrode to do so no longer exists
+      if (ref($self) =~ /^DBIx::Class::SQLMaker/) {
+        unless ($Nest_Warned) {
+          belch(
+            "-nest in search conditions is deprecated, you most probably wanted:\n"
+            .q|{..., -and => [ \%cond0, \@cond1, \'cond2', \[ 'cond3', [ col => bind ] ], etc. ], ... }|
+          );
+          $Nest_Warned = 1;
+        }
+      }
       return $self->_expand_expr($v);
     }
     if ($k eq '-bool') {
index 008c7ca..4fa38ed 100644 (file)
@@ -16,12 +16,6 @@ use SQL::Abstract;
 #
 #################
 
-# DBIx::Class requires a nest warning to be emitted once but the private
-# method it overrode to do so no longer exists; here we cancel said warning
-# to avoid disturbing the SQLA tests
-
-$SQL::Abstract::Nest_Warning_Emitted++;
-
 my @tests = (
       {
               func   => 'select',