no
warnings
qw/qw/
;
my
$sqla
= SQL::Abstract::More->new;
my
$join
;
$join
=
$sqla
->
join
(
qw[Foo {A} Bar]
);
is_same_sql_bind(
$join
->{sql},
$join
->{
bind
},
"Foo INNER JOIN Bar USING (A)"
,
[],
"basic"
,
);
$join
=
$sqla
->
join
(
qw[Foo {A,B} Bar]
);
is_same_sql_bind(
$join
->{sql},
$join
->{
bind
},
"Foo INNER JOIN Bar USING (A,B)"
,
[],
"cond on 2 cols"
,
);
$join
=
$sqla
->
join
(
qw[Foo {A} Bar {B} Buz]
);
is_same_sql_bind(
$join
->{sql},
$join
->{
bind
},
"Foo INNER JOIN Bar USING (A) INNER JOIN Buz USING (B)"
,
[],
"several tables"
,
);
$join
=
$sqla
->
join
(
'Foo'
, {
operator
=>
'=>'
,
using
=> [
qw/A B/
]},
'Bar'
);
is_same_sql_bind(
$join
->{sql},
$join
->{
bind
},
"Foo LEFT OUTER JOIN Bar USING (A, B)"
,
[],
"structured join spec"
,
);
eval
{
$join
=
$sqla
->
join
(
'Foo'
, {
operator
=>
'=>'
,
using
=> [
qw/A/
],
condition
=> {
"Foo.A"
=> {
-ident
=>
"Bar.A"
}}},
'Bar'
);
};
my
$err
= $@;
like
$err
,
qr/both.*condition.*using/
,
"proper error message"
;
done_testing;