# special operators
$opt{special_ops} ||= [];
- # regexes are applied in order, thus push after user-defines
- push @{$opt{special_ops}}, @BUILTIN_SPECIAL_OPS;
-
if ($class->isa('DBIx::Class::SQLMaker')) {
- $opt{is_dbic_sqlmaker} = 1;
+ $opt{warn_once_on_nest} = 1;
$opt{disable_old_special_ops} = 1;
}
-and => '_expand_op_andor',
-or => '_expand_op_andor',
-nest => '_expand_nest',
- -bind => sub { shift; +{ @_ } },
+ -bind => '_expand_bind',
-in => '_expand_in',
-not_in => '_expand_in',
- -row => sub {
- my ($self, $node, $args) = @_;
- +{ $node => [ map $self->expand_expr($_), @$args ] };
- },
+ -row => '_expand_row',
-between => '_expand_between',
-not_between => '_expand_between',
- -op => sub {
- my ($self, $node, $args) = @_;
- my ($op, @opargs) = @$args;
- +{ $node => [ $op, map $self->expand_expr($_), @opargs ] };
- },
+ -op => '_expand_op',
(map +($_ => '_expand_op_is'), ('-is', '-is_not')),
-ident => '_expand_ident',
-value => '_expand_value',
if (
(our $Expand_Depth) == 1
- and $self->{disable_old_special_ops}
- and List::Util::first { $op =~ $_->{regex} } @{$self->{special_ops}}
+ and (
+ List::Util::first { $op =~ $_->{regex} } @{$self->{special_ops}}
+ or (
+ $self->{disable_old_special_ops}
+ and List::Util::first { $op =~ $_->{regex} } @BUILTIN_SPECIAL_OPS
+ )
+ )
) {
puke "Illegal use of top-level '-$op'"
}
+{ -op => [ 'not', $_[0]->_expand_expr($_[2]) ] };
}
+sub _expand_row {
+ my ($self, $node, $args) = @_;
+ +{ $node => [ map $self->expand_expr($_), @$args ] };
+}
+
+sub _expand_op {
+ my ($self, $node, $args) = @_;
+ my ($op, @opargs) = @$args;
+ +{ $node => [ $op, map $self->expand_expr($_), @opargs ] };
+}
+
sub _expand_bool {
my ($self, undef, $v) = @_;
if (ref($v)) {
my ($self, $op, $v) = @_;
# DBIx::Class requires a nest warning to be emitted once but the private
# method it overrode to do so no longer exists
- if ($self->{is_dbic_sqlmaker}) {
+ if ($self->{warn_once_on_nest}) {
unless (our $Nest_Warned) {
belch(
"-nest in search conditions is deprecated, you most probably wanted:\n"
return $self->_expand_expr($v);
}
+sub _expand_bind {
+ my ($self, $op, $bind) = @_;
+ return { $op => $bind };
+}
+
sub _recurse_where {
my ($self, $where, $logic) = @_;