@@ -300,4 +300,46 @@ describe('sqlite', () => {
300300 expect ( getParsedSql ( sql ) ) . to . be . equal ( sql )
301301 } ) ;
302302 } ) ;
303+
304+ it ( 'should support cross join with table aliases' , ( ) => {
305+ const sql = 'SELECT * FROM users AS u CROSS JOIN products AS p' ;
306+ expect ( getParsedSql ( sql ) ) . to . be . equal (
307+ 'SELECT * FROM "users" AS "u" CROSS JOIN "products" AS "p"'
308+ ) ;
309+ } ) ;
310+
311+ it ( 'should support cross join with using clause' , ( ) => {
312+ const sql = 'SELECT * FROM users CROSS JOIN products USING (id)' ;
313+ expect ( getParsedSql ( sql ) ) . to . be . equal (
314+ 'SELECT * FROM "users" CROSS JOIN "products" USING (id)'
315+ ) ;
316+ } ) ;
317+
318+ it ( 'should support cross join with on clause' , ( ) => {
319+ const sql = 'SELECT * FROM t1 CROSS JOIN t2 ON t1.id = t2.id' ;
320+ expect ( getParsedSql ( sql ) ) . to . be . equal (
321+ 'SELECT * FROM "t1" CROSS JOIN "t2" ON "t1"."id" = "t2"."id"'
322+ ) ;
323+ } ) ;
324+
325+ it ( 'should support multiple cross joins' , ( ) => {
326+ const sql = 'SELECT * FROM t1 CROSS JOIN t2 CROSS JOIN t3' ;
327+ expect ( getParsedSql ( sql ) ) . to . be . equal (
328+ 'SELECT * FROM "t1" CROSS JOIN "t2" CROSS JOIN "t3"'
329+ ) ;
330+ } ) ;
331+
332+ it ( 'should support cross join with subquery' , ( ) => {
333+ const sql = 'SELECT * FROM users CROSS JOIN (SELECT * FROM products WHERE price > 50) AS p' ;
334+ expect ( getParsedSql ( sql ) ) . to . be . equal (
335+ 'SELECT * FROM "users" CROSS JOIN (SELECT * FROM "products" WHERE "price" > 50) AS "p"'
336+ ) ;
337+ } ) ;
338+
339+ it ( 'should support cross join mixed with INNER JOIN' , ( ) => {
340+ const sql = 'SELECT * FROM t1 CROSS JOIN t2 INNER JOIN t3 ON t2.id = t3.id' ;
341+ expect ( getParsedSql ( sql ) ) . to . be . equal (
342+ 'SELECT * FROM "t1" CROSS JOIN "t2" INNER JOIN "t3" ON "t2"."id" = "t3"."id"'
343+ ) ;
344+ } ) ;
303345} )
0 commit comments