8 use lib "$FindBin::Bin";
\r
15 my $sqlmaker = SQL::Abstract->new(special_ops => [
\r
17 # special op for MySql MATCH (field) AGAINST(word1, word2, ...)
\r
18 {regex => qr/^match$/i,
\r
20 my ($self, $field, $op, $arg) = @_;
\r
21 $arg = [$arg] if not ref $arg;
\r
22 my $label = $self->_quote($field);
\r
23 my ($placeholder) = $self->_convert('?');
\r
24 my $placeholders = join ", ", (($placeholder) x @$arg);
\r
25 my $sql = $self->_sqlcase('match') . " ($label) "
\r
26 . $self->_sqlcase('against') . " ($placeholders) ";
\r
27 my @bind = $self->_bindtype($field, @$arg);
\r
28 return ($sql, @bind);
\r
32 # special op for Basis+ NATIVE
\r
33 {regex => qr/^native$/i,
\r
35 my ($self, $field, $op, $arg) = @_;
\r
37 my $sql = "NATIVE (' $field $arg ')";
\r
47 { where => {foo => {-match => 'foo'},
\r
48 bar => {-match => [qw/foo bar/]}},
\r
49 stmt => " WHERE ( MATCH (bar) AGAINST (?, ?) AND MATCH (foo) AGAINST (?) )",
\r
50 bind => [qw/foo bar foo/],
\r
54 { where => {foo => {-native => "PH IS 'bar'"}},
\r
55 stmt => " WHERE ( NATIVE (' foo PH IS ''bar'' ') )",
\r
64 my($stmt, @bind) = $sqlmaker->where($_->{where}, $_->{order});
\r
65 is_same_sql_bind($stmt, \@bind, $_->{stmt}, $_->{bind});
\r