8 # use a BEGIN block so we print our plan before SQL::Abstract is loaded
9 BEGIN { plan tests => 4 }
14 my ($got, $expect, $msg) = @_;
15 ok($got eq $expect) or
16 warn "got [${got}]\ninstead of [${expect}]\nfor test ${msg}\n\n";
19 my $sql_maker = SQL::Abstract->new;
21 $sql_maker->{quote_char} = '`';
22 $sql_maker->{name_sep} = '.';
24 my ($sql,) = $sql_maker->select(
35 'artist.artistid' => 'me.artist'
46 'artist.name' => 'Caterwauler McCrae',
55 q/SELECT COUNT( * ) FROM `cd` `me` JOIN `artist` `artist` ON ( `artist`.`artistid` = `me`.`artist` ) WHERE ( `artist`.`name` = ? AND `me`.`year` = ? )/,
56 'got correct SQL for count query with quoting');
58 ($sql,) = $sql_maker->select(
79 # local $TODO = "order_by with quoting needs fixing (ash/castaway)";
82 # q/SELECT `me`.`cdid`, `me`.`artist`, `me`.`title`, `me`.`year` FROM `cd` `me` ORDER BY `year` DESC/,
83 # 'quoted ORDER BY with DESC okay');
86 ($sql,) = $sql_maker->select(
101 is($sql, q/SELECT `me`.* FROM `cd` `me`/, 'select attr with me.* is right');
103 ($sql,) = $sql_maker->select(
124 q/SELECT `me`.`cdid`, `me`.`artist`, `me`.`title`, `me`.`year` FROM `cd` `me` ORDER BY year DESC/,
125 'did not quote ORDER BY with scalarref');
134 ($sql,@binds) = $sql_maker->update(
143 q/UPDATE `group` SET `name` = ?, `order` = ?/,
144 'quoted table names for UPDATE');
146 $sql_maker->{quote_char} = [qw/[ ]/];
148 ($sql,) = $sql_maker->select(
155 'artist' => 'artist',
159 'artist.artistid' => 'me.artist'
170 'artist.name' => 'Caterwauler McCrae',
179 q/SELECT COUNT( * ) FROM [cd] [me] JOIN [artist] [artist] ON ( [artist].[artistid] = [me].[artist] ) WHERE ( [artist].[name] = ? AND [me].[year] = ? )/,
180 'got correct SQL for count query with bracket quoting');
183 ($sql,@binds) = $sql_maker->update(
192 q/UPDATE [group] SET [name] = ?, [order] = ?/,
193 'bracket quoted table names for UPDATE');