['SELECT * FROM foo'],
'simple select';
-dq_sql_is
- Join(
- Select([ Identifier('*') ], Identifier('foo')),
- Identifier('bar'),
- perl_operator('==', Identifier('foo', 'x'), Identifier('bar', 'y'))
- ),
- ['SELECT * FROM foo JOIN bar ON foo.x = bar.y'],
- 'join on with dots';
+{
+ # should these both be allowed, and result in the same SQL?
+
+ dq_sql_is
+ Join(
+ Select([ Identifier('*') ], Identifier('foo')),
+ Identifier('bar'),
+ perl_operator('==', Identifier('foo', 'x'), Identifier('bar', 'y')),
+ ),
+ ['SELECT * FROM foo JOIN bar ON foo.x = bar.y'],
+ 'join on with dots (Join Select)';
+
+ dq_sql_is
+ Select(
+ [ Identifier('*') ],
+ Join(
+ Identifier('foo'),
+ Identifier('bar'),
+ perl_operator('==', Identifier('foo', 'x'), Identifier('bar', 'y')),
+ ),
+ ),
+ ['SELECT * FROM foo JOIN bar ON foo.x = bar.y'],
+ 'join on with dots (Select Join)';
+}
dq_sql_is
Where(
['SELECT * FROM foo WHERE x = ?', binding(1)],
'simple select with where and bind';
+dq_sql_is
+ Group (
+ [ Identifier('x') ],
+ Select([ Identifier('*') ], Identifier('foo')),
+ ),
+ ['SELECT * FROM foo GROUP BY x'],
+ 'simple group by';
+
+dq_sql_is
+ Select(
+ [ Identifier('*') ],
+ Join(
+ Identifier('foo'),
+ Identifier('bar'),
+ perl_operator('==', Identifier('foo', 'x'), Identifier('bar', 'y')),
+ 'left outer',
+ ),
+ ),
+ ['SELECT * FROM foo LEFT OUTER JOIN bar ON foo.x = bar.y'],
+ 'left outer join';
+
+dq_sql_is
+ Select(
+ [ Operator({ 'SQL.Naive' => 'apply' }, [ Identifier('COUNT'), Identifier('*') ]) ],
+ Identifier('foo'),
+ ),
+ ['SELECT COUNT( * ) FROM foo'],
+ 'count';
+
+dq_sql_is
+ Where(
+ Operator({ 'SQL.Naive' => 'BETWEEN' }, [
+ Identifier('x'),
+ map Literal('SQL', '?', [ binding($_) ]), (1,2),
+ ]),
+ Select([ Identifier('*') ], Identifier('foo')),
+ ),
+ [ 'SELECT * FROM foo WHERE ( x BETWEEN ? AND ? )', map binding($_), 1, 2, ],
+ 'between';