@@ -1411,92 +1411,84 @@ private void checkLarge(int n) {
14111411 }
14121412
14131413 @ Test void testBetweenSpark () {
1414- sql ("select * from t where price between 1 and 2" )
1415- .withDialect (SparkSqlDialect .DEFAULT )
1416- .ok ("SELECT *\n "
1417- + "FROM T\n "
1418- + "WHERE (PRICE BETWEEN 1 AND 2)" );
1414+ SqlParserFixture f = fixture ().withDialect (SparkSqlDialect .DEFAULT );
14191415
1420- sql ("select * from t where price between symmetric 1 and 2" )
1421- .withDialect (SparkSqlDialect .DEFAULT )
1422- .ok ("SELECT *\n "
1423- + "FROM T\n "
1424- + "WHERE (PRICE BETWEEN 1 AND 2)" );
1416+ f .sql ("select * from t where price between 1 and 2" )
1417+ .ok ("SELECT *\n "
1418+ + "FROM `T`\n "
1419+ + "WHERE (`PRICE` BETWEEN 1 AND 2)" );
14251420
1426- sql ("select * from t where price not between symmetric 1 and 2" )
1427- .withDialect (SparkSqlDialect .DEFAULT )
1428- .ok ("SELECT *\n "
1429- + "FROM T\n "
1430- + "WHERE (PRICE NOT BETWEEN 1 AND 2)" );
1421+ f .sql ("select * from t where price between symmetric 1 and 2" )
1422+ .ok ("SELECT *\n "
1423+ + "FROM `T`\n "
1424+ + "WHERE (`PRICE` BETWEEN 1 AND 2)" );
1425+
1426+ f .sql ("select * from t where price not between symmetric 1 and 2" )
1427+ .ok ("SELECT *\n "
1428+ + "FROM `T`\n "
1429+ + "WHERE (`PRICE` NOT BETWEEN 1 AND 2)" );
14311430
1432- sql ("select * from t where price between 1 and 2+2*2" )
1433- .withDialect (SparkSqlDialect .DEFAULT )
1434- .ok ("SELECT *\n "
1435- + "FROM T\n "
1436- + "WHERE (PRICE BETWEEN 1 AND (2 + (2 * 2)))" );
1431+ f .sql ("select * from t where price between 1 and 2+2*2" )
1432+ .ok ("SELECT *\n "
1433+ + "FROM `T`\n "
1434+ + "WHERE (`PRICE` BETWEEN 1 AND (2 + (2 * 2)))" );
14371435
14381436 final String sql0 = "select * from t\n "
14391437 + " where price > 5\n "
14401438 + " and price not between 1 + 2 and 3 * 4 AnD price is null" ;
14411439 final String expected0 = "SELECT *\n "
1442- + "FROM T \n "
1443- + "WHERE (((PRICE > 5) "
1444- + "AND (PRICE NOT BETWEEN (1 + 2) AND (3 * 4))) "
1445- + "AND (PRICE IS NULL))" ;
1446- sql (sql0 ). withDialect ( SparkSqlDialect . DEFAULT ).ok (expected0 );
1440+ + "FROM `T` \n "
1441+ + "WHERE (((` PRICE` > 5) "
1442+ + "AND (` PRICE` NOT BETWEEN (1 + 2) AND (3 * 4))) "
1443+ + "AND (` PRICE` IS NULL))" ;
1444+ f . sql (sql0 ).ok (expected0 );
14471445
14481446 final String sql1 = "select * from t\n "
14491447 + "where price > 5\n "
14501448 + "and price between 1 + 2 and 3 * 4 + price is null" ;
14511449 final String expected1 = "SELECT *\n "
1452- + "FROM T \n "
1453- + "WHERE ((PRICE > 5) "
1454- + "AND ((PRICE BETWEEN (1 + 2) AND ((3 * 4) + PRICE)) "
1450+ + "FROM `T` \n "
1451+ + "WHERE ((` PRICE` > 5) "
1452+ + "AND ((` PRICE` BETWEEN (1 + 2) AND ((3 * 4) + ` PRICE` )) "
14551453 + "IS NULL))" ;
1456- sql (sql1 ). withDialect ( SparkSqlDialect . DEFAULT ).ok (expected1 );
1454+ f . sql (sql1 ).ok (expected1 );
14571455
14581456 final String sql2 = "select * from t\n "
14591457 + "where price > 5\n "
14601458 + "and price between 1 + 2 and 3 * 4 or price is null" ;
14611459 final String expected2 = "SELECT *\n "
1462- + "FROM T \n "
1463- + "WHERE (((PRICE > 5) "
1464- + "AND (PRICE BETWEEN (1 + 2) AND (3 * 4))) "
1465- + "OR (PRICE IS NULL))" ;
1466- sql (sql2 ). withDialect ( SparkSqlDialect . DEFAULT ).ok (expected2 );
1460+ + "FROM `T` \n "
1461+ + "WHERE (((` PRICE` > 5) "
1462+ + "AND (` PRICE` BETWEEN (1 + 2) AND (3 * 4))) "
1463+ + "OR (` PRICE` IS NULL))" ;
1464+ f . sql (sql2 ).ok (expected2 );
14671465
14681466 final String sql3 = "values a between c and d and e and f between g and h" ;
14691467 final String expected3 = "VALUES ("
1470- + "(((A BETWEEN C AND D ) AND E )"
1471- + " AND (F BETWEEN G AND H )))" ;
1472- sql (sql3 ). withDialect ( SparkSqlDialect . DEFAULT ).ok (expected3 );
1468+ + "(((`A` BETWEEN `C` AND `D` ) AND `E` )"
1469+ + " AND (`F` BETWEEN `G` AND `H` )))" ;
1470+ f . sql (sql3 ).ok (expected3 );
14731471
1474- sql ("values a between b or c^" )
1475- .withDialect (SparkSqlDialect .DEFAULT )
1476- .fails (".*BETWEEN operator has no terminating AND" );
1472+ f .sql ("values a between b or c^" )
1473+ .fails (".*BETWEEN operator has no terminating AND" );
14771474
1478- sql ("values a ^between^" )
1479- .withDialect (SparkSqlDialect .DEFAULT )
1480- .fails ("(?s).*Encountered \" between <EOF>\" at line 1, column 10.*" );
1475+ f .sql ("values a ^between^" )
1476+ .fails ("(?s).*Encountered \" between <EOF>\" at line 1, column 10.*" );
14811477
1482- sql ("values a between symmetric 1^" )
1483- .withDialect (SparkSqlDialect .DEFAULT )
1484- .fails (".*BETWEEN operator has no terminating AND" );
1478+ f .sql ("values a between symmetric 1^" )
1479+ .fails (".*BETWEEN operator has no terminating AND" );
14851480
14861481 // precedence of BETWEEN is higher than AND and OR, but lower than '+'
1487- sql ("values a between b and c + 2 or d and e" )
1488- .withDialect (SparkSqlDialect .DEFAULT )
1489- .ok ("VALUES (((A BETWEEN B AND (C + 2)) OR (D AND E)))" );
1482+ f .sql ("values a between b and c + 2 or d and e" )
1483+ .ok ("VALUES (((`A` BETWEEN `B` AND (`C` + 2)) OR (`D` AND `E`)))" );
14901484
14911485 // '=' has slightly lower precedence than BETWEEN; both are left-assoc
1492- sql ("values x = a between b and c = d = e" )
1493- .withDialect (SparkSqlDialect .DEFAULT )
1494- .ok ("VALUES ((((X = (A BETWEEN B AND C)) = D) = E))" );
1486+ f .sql ("values x = a between b and c = d = e" )
1487+ .ok ("VALUES ((((`X` = (`A` BETWEEN `B` AND `C`)) = `D`) = `E`))" );
14951488
14961489 // AND doesn't match BETWEEN if it's between parentheses!
1497- sql ("values a between b or (c and d) or e and f" )
1498- .withDialect (SparkSqlDialect .DEFAULT )
1499- .ok ("VALUES ((A BETWEEN ((B OR (C AND D)) OR E) AND F))" );
1490+ f .sql ("values a between b or (c and d) or e and f" )
1491+ .ok ("VALUES ((`A` BETWEEN ((`B` OR (`C` AND `D`)) OR `E`) AND `F`))" );
15001492 }
15011493
15021494 @ Test void testOperateOnColumn () {
0 commit comments