From: Peter Rabbitson Date: Wed, 11 Apr 2012 05:20:10 +0000 (+0200) Subject: Remove code which migrated into the core of SQLA X-Git-Tag: v0.08204~8 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=8d47598dd975df026f838ff5e54f583c34fc6662;p=dbsrgits%2FDBIx-Class.git Remove code which migrated into the core of SQLA --- diff --git a/lib/DBIx/Class/SQLMaker.pm b/lib/DBIx/Class/SQLMaker.pm index 02b44f0..34b9c80 100644 --- a/lib/DBIx/Class/SQLMaker.pm +++ b/lib/DBIx/Class/SQLMaker.pm @@ -27,10 +27,6 @@ Currently the enhancements to L are: =item * Support of C<...FOR UPDATE> type of select statement modifiers -=item * The L operator - -=item * The L operator - =back =cut @@ -101,63 +97,6 @@ sub _quote { ); } -sub new { - my $self = shift->next::method(@_); - - # use the same coderefs, they are prepared to handle both cases - my @extra_dbic_syntax = ( - { regex => qr/^ ident $/xi, handler => '_where_op_IDENT' }, - { regex => qr/^ value $/xi, handler => '_where_op_VALUE' }, - ); - - push @{$self->{special_ops}}, @extra_dbic_syntax; - push @{$self->{unary_ops}}, @extra_dbic_syntax; - - $self; -} - -sub _where_op_IDENT { - my $self = shift; - my ($op, $rhs) = splice @_, -2; - if (ref $rhs) { - $self->throw_exception("-$op takes a single scalar argument (a quotable identifier)"); - } - - # in case we are called as a top level special op (no '=') - my $lhs = shift; - - $_ = $self->_convert($self->_quote($_)) for ($lhs, $rhs); - - return $lhs - ? "$lhs = $rhs" - : $rhs - ; -} - -sub _where_op_VALUE { - my $self = shift; - my ($op, $rhs) = splice @_, -2; - - # in case we are called as a top level special op (no '=') - my $lhs = shift; - - my @bind = [ - ($lhs || $self->{_nested_func_lhs} || $self->throw_exception("Unable to find bindtype for -value $rhs") ), - $rhs - ]; - - return $lhs - ? ( - $self->_convert($self->_quote($lhs)) . ' = ' . $self->_convert('?'), - @bind - ) - : ( - $self->_convert('?'), - @bind, - ) - ; -} - sub _where_op_NEST { carp_unique ("-nest in search conditions is deprecated, you most probably wanted:\n" .q|{..., -and => [ \%cond0, \@cond1, \'cond2', \[ 'cond3', [ col => bind ] ], etc. ], ... }| @@ -512,41 +451,6 @@ sub _join_condition { 1; -=head1 OPERATORS - -=head2 -ident - -Used to explicitly specify an SQL identifier. Takes a plain string as value -which is then invariably treated as a column name (and is being properly -quoted if quoting has been requested). Most useful for comparison of two -columns: - - my %where = ( - priority => { '<', 2 }, - requestor => { -ident => 'submitter' } - ); - -which results in: - - $stmt = 'WHERE "priority" < ? AND "requestor" = "submitter"'; - @bind = ('2'); - -=head2 -value - -The -value operator signals that the argument to the right is a raw bind value. -It will be passed straight to DBI, without invoking any of the SQL::Abstract -condition-parsing logic. This allows you to, for example, pass an array as a -column value for databases that support array datatypes, e.g.: - - my %where = ( - array => { -value => [1, 2, 3] } - ); - -which results in: - - $stmt = 'WHERE array = ?'; - @bind = ([1, 2, 3]); - =head1 AUTHORS See L. diff --git a/t/sqlmaker/op_ident.t b/t/sqlmaker/op_ident.t deleted file mode 100644 index 46668a6..0000000 --- a/t/sqlmaker/op_ident.t +++ /dev/null @@ -1,41 +0,0 @@ -use strict; -use warnings; - -use Test::More; - -use lib qw(t/lib); -use DBIC::SqlMakerTest; - -use_ok('DBICTest'); - -my $schema = DBICTest->init_schema(); - -my $sql_maker = $schema->storage->sql_maker; - -for my $q ('', '"') { - - $sql_maker->quote_char($q); - - is_same_sql_bind ( - \[ $sql_maker->select ('artist', '*', { 'artist.name' => { -ident => 'artist.pseudonym' } } ) ], - "SELECT * - FROM ${q}artist${q} - WHERE ${q}artist${q}.${q}name${q} = ${q}artist${q}.${q}pseudonym${q} - ", - [], - ); - - is_same_sql_bind ( - \[ $sql_maker->update ('artist', - { 'artist.name' => { -ident => 'artist.pseudonym' } }, - { 'artist.name' => { '!=' => { -ident => 'artist.pseudonym' } } }, - ) ], - "UPDATE ${q}artist${q} - SET ${q}artist${q}.${q}name${q} = ${q}artist${q}.${q}pseudonym${q} - WHERE ${q}artist${q}.${q}name${q} != ${q}artist${q}.${q}pseudonym${q} - ", - [], - ); -} - -done_testing; diff --git a/t/sqlmaker/op_value.t b/t/sqlmaker/op_value.t deleted file mode 100644 index ceb441e..0000000 --- a/t/sqlmaker/op_value.t +++ /dev/null @@ -1,36 +0,0 @@ -use strict; -use warnings; - -use Test::More; - -use lib qw(t/lib); -use DBIC::SqlMakerTest; - -use_ok('DBICTest'); - -my $schema = DBICTest->init_schema(); - -my $sql_maker = $schema->storage->sql_maker; - -for my $q ('', '"') { - - $sql_maker->quote_char($q); - - is_same_sql_bind ( - \[ $sql_maker->select ('artist', '*', { arr1 => { -value => [1,2] }, arr2 => { '>', { -value => [3,4] } }, field => [5,6] } ) ], - "SELECT * - FROM ${q}artist${q} - WHERE ${q}arr1${q} = ? AND - ${q}arr2${q} > ? AND - ( ${q}field${q} = ? OR ${q}field${q} = ? ) - ", - [ - [ arr1 => [1,2] ], - [ arr2 => [3,4] ], - [ field => 5 ], - [ field => 6 ], - ], - ); -} - -done_testing;