@@ -319,33 +319,33 @@ private static String toSql(RelNode root, SqlDialect dialect,
319
319
+ "where \" product_id\" > 0\n "
320
320
+ "group by \" product_id\" " ;
321
321
final String expectedDefault = "SELECT"
322
- + " SUM(\" shelf_width\" ) FILTER (WHERE \" net_weight\" > 0 IS TRUE),"
322
+ + " SUM(\" shelf_width\" ) FILTER (WHERE \" net_weight\" > 0E0 IS TRUE),"
323
323
+ " SUM(\" shelf_width\" )\n "
324
324
+ "FROM \" foodmart\" .\" product\" \n "
325
325
+ "WHERE \" product_id\" > 0\n "
326
326
+ "GROUP BY \" product_id\" " ;
327
327
final String expectedBigQuery = "SELECT"
328
- + " SUM(CASE WHEN net_weight > 0 IS TRUE"
328
+ + " SUM(CASE WHEN net_weight > 0E0 IS TRUE"
329
329
+ " THEN shelf_width ELSE NULL END), "
330
330
+ "SUM(shelf_width)\n "
331
331
+ "FROM foodmart.product\n "
332
332
+ "WHERE product_id > 0\n "
333
333
+ "GROUP BY product_id" ;
334
334
final String expectedFirebolt = "SELECT"
335
- + " SUM(CASE WHEN \" net_weight\" > 0 IS TRUE"
335
+ + " SUM(CASE WHEN \" net_weight\" > 0E0 IS TRUE"
336
336
+ " THEN \" shelf_width\" ELSE NULL END), "
337
337
+ "SUM(\" shelf_width\" )\n "
338
338
+ "FROM \" foodmart\" .\" product\" \n "
339
339
+ "WHERE \" product_id\" > 0\n "
340
340
+ "GROUP BY \" product_id\" " ;
341
341
final String expectedMysql = "SELECT"
342
- + " SUM(CASE WHEN `net_weight` > 0 IS TRUE"
342
+ + " SUM(CASE WHEN `net_weight` > 0E0 IS TRUE"
343
343
+ " THEN `shelf_width` ELSE NULL END), SUM(`shelf_width`)\n "
344
344
+ "FROM `foodmart`.`product`\n "
345
345
+ "WHERE `product_id` > 0\n "
346
346
+ "GROUP BY `product_id`" ;
347
347
final String expectedStarRocks = "SELECT"
348
- + " SUM(CASE WHEN `net_weight` > 0 IS TRUE"
348
+ + " SUM(CASE WHEN `net_weight` > 0E0 IS TRUE"
349
349
+ " THEN `shelf_width` ELSE NULL END), SUM(`shelf_width`)\n "
350
350
+ "FROM `foodmart`.`product`\n "
351
351
+ "WHERE `product_id` > 0\n "
@@ -539,7 +539,7 @@ private static String toSql(RelNode root, SqlDialect dialect,
539
539
final String expected = "SELECT *\n "
540
540
+ "FROM \" foodmart\" .\" product\" \n "
541
541
+ "WHERE (\" product_id\" = 10 OR \" product_id\" <= 5) "
542
- + "AND (80 >= \" shelf_width\" OR \" shelf_width\" > 30 )" ;
542
+ + "AND (CAST( 80 AS DOUBLE) >= \" shelf_width\" OR \" shelf_width\" > CAST(30 AS DOUBLE) )" ;
543
543
sql (query ).ok (expected );
544
544
}
545
545
@@ -2097,34 +2097,34 @@ private void checkHavingAliasSameAsColumn(boolean upperAlias) {
2097
2097
+ " sum(\" gross_weight\" ) as \" " + alias + "\" \n "
2098
2098
+ "from \" product\" \n "
2099
2099
+ "group by \" product_id\" \n "
2100
- + "having sum(\" product\" .\" gross_weight\" ) < 200 " ;
2100
+ + "having sum(\" product\" .\" gross_weight\" ) < 2.000E2 " ;
2101
2101
// PostgreSQL has isHavingAlias=false, case-sensitive=true
2102
2102
final String expectedPostgresql = "SELECT \" product_id\" + 1,"
2103
2103
+ " SUM(\" gross_weight\" ) AS \" " + alias + "\" \n "
2104
2104
+ "FROM \" foodmart\" .\" product\" \n "
2105
2105
+ "GROUP BY \" product_id\" \n "
2106
- + "HAVING SUM(\" gross_weight\" ) < 200 " ;
2106
+ + "HAVING SUM(\" gross_weight\" ) < 2.000E2 " ;
2107
2107
// MySQL has isHavingAlias=true, case-sensitive=true
2108
2108
final String expectedMysql = "SELECT `product_id` + 1, `" + alias + "`\n "
2109
2109
+ "FROM (SELECT `product_id`, SUM(`gross_weight`) AS `" + alias + "`\n "
2110
2110
+ "FROM `foodmart`.`product`\n "
2111
2111
+ "GROUP BY `product_id`\n "
2112
- + "HAVING `" + alias + "` < 200 ) AS `t1`" ;
2112
+ + "HAVING `" + alias + "` < 2.000E2 ) AS `t1`" ;
2113
2113
// BigQuery has isHavingAlias=true, case-sensitive=false
2114
2114
final String expectedBigQuery = upperAlias
2115
2115
? "SELECT product_id + 1, GROSS_WEIGHT\n "
2116
2116
+ "FROM (SELECT product_id, SUM(gross_weight) AS GROSS_WEIGHT\n "
2117
2117
+ "FROM foodmart.product\n "
2118
2118
+ "GROUP BY product_id\n "
2119
- + "HAVING GROSS_WEIGHT < 200 ) AS t1"
2119
+ + "HAVING GROSS_WEIGHT < 2.000E2 ) AS t1"
2120
2120
// Before [CALCITE-3896] was fixed, we got
2121
2121
// "HAVING SUM(gross_weight) < 200) AS t1"
2122
2122
// which on BigQuery gives you an error about aggregating aggregates
2123
2123
: "SELECT product_id + 1, gross_weight\n "
2124
2124
+ "FROM (SELECT product_id, SUM(gross_weight) AS gross_weight\n "
2125
2125
+ "FROM foodmart.product\n "
2126
2126
+ "GROUP BY product_id\n "
2127
- + "HAVING gross_weight < 200 ) AS t1" ;
2127
+ + "HAVING gross_weight < 2.000E2 ) AS t1" ;
2128
2128
sql (query )
2129
2129
.withBigQuery ().ok (expectedBigQuery )
2130
2130
.withPostgresql ().ok (expectedPostgresql )
@@ -2144,11 +2144,11 @@ private void checkHavingAliasSameAsColumn(boolean upperAlias) {
2144
2144
final String expected = "SELECT \" product_id\" \n "
2145
2145
+ "FROM (SELECT \" product_id\" , AVG(\" gross_weight\" ) AS \" AGW\" \n "
2146
2146
+ "FROM \" foodmart\" .\" product\" \n "
2147
- + "WHERE \" net_weight\" < 100\n "
2147
+ + "WHERE \" net_weight\" < CAST( 100 AS DOUBLE) \n "
2148
2148
+ "GROUP BY \" product_id\" \n "
2149
- + "HAVING AVG(\" gross_weight\" ) > 50 ) AS \" t2\" \n "
2149
+ + "HAVING AVG(\" gross_weight\" ) > CAST(50 AS DOUBLE) ) AS \" t2\" \n "
2150
2150
+ "GROUP BY \" product_id\" \n "
2151
- + "HAVING AVG(\" AGW\" ) > 60 " ;
2151
+ + "HAVING AVG(\" AGW\" ) > 6.00E1 " ;
2152
2152
sql (query ).ok (expected );
2153
2153
}
2154
2154
@@ -5366,21 +5366,21 @@ private void checkLiteral2(String expression, String expected) {
5366
5366
+ "UNION ALL\n "
5367
5367
+ "SELECT NULL) END AS `$f0`\n "
5368
5368
+ "FROM `foodmart`.`product`) AS `t0` ON TRUE\n "
5369
- + "WHERE `product`.`net_weight` > `t0`.`$f0`" ;
5369
+ + "WHERE `product`.`net_weight` > CAST( `t0`.`$f0` AS DOUBLE) " ;
5370
5370
final String expectedPostgresql = "SELECT \" product\" .\" product_class_id\" AS \" C\" \n "
5371
5371
+ "FROM \" foodmart\" .\" product\" \n "
5372
5372
+ "LEFT JOIN (SELECT CASE COUNT(*) WHEN 0 THEN NULL WHEN 1 THEN MIN(\" product_class_id\" ) ELSE (SELECT CAST(NULL AS INTEGER)\n "
5373
5373
+ "UNION ALL\n "
5374
5374
+ "SELECT CAST(NULL AS INTEGER)) END AS \" $f0\" \n "
5375
5375
+ "FROM \" foodmart\" .\" product\" ) AS \" t0\" ON TRUE\n "
5376
- + "WHERE \" product\" .\" net_weight\" > \" t0\" .\" $f0\" " ;
5376
+ + "WHERE \" product\" .\" net_weight\" > CAST( \" t0\" .\" $f0\" AS DOUBLE PRECISION) " ;
5377
5377
final String expectedHsqldb = "SELECT product.product_class_id AS C\n "
5378
5378
+ "FROM foodmart.product\n "
5379
5379
+ "LEFT JOIN (SELECT CASE COUNT(*) WHEN 0 THEN NULL WHEN 1 THEN MIN(product_class_id) ELSE ((VALUES 0E0)\n "
5380
5380
+ "UNION ALL\n "
5381
5381
+ "(VALUES 0E0)) END AS $f0\n "
5382
5382
+ "FROM foodmart.product) AS t0 ON TRUE\n "
5383
- + "WHERE product.net_weight > t0.$f0" ;
5383
+ + "WHERE product.net_weight > CAST( t0.$f0 AS DOUBLE) " ;
5384
5384
sql (query )
5385
5385
.withConfig (c -> c .withExpand (true ))
5386
5386
.withMysql ().ok (expectedMysql )
@@ -6905,7 +6905,7 @@ private void checkLiteral2(String expression, String expected) {
6905
6905
+ "within group (order by \" net_weight\" desc) filter (where \" net_weight\" > 0)"
6906
6906
+ "from \" product\" group by \" product_class_id\" " ;
6907
6907
final String expected = "SELECT \" product_class_id\" , COLLECT(\" net_weight\" ) "
6908
- + "FILTER (WHERE \" net_weight\" > 0 IS TRUE) "
6908
+ + "FILTER (WHERE \" net_weight\" > 0E0 IS TRUE) "
6909
6909
+ "WITHIN GROUP (ORDER BY \" net_weight\" DESC)\n "
6910
6910
+ "FROM \" foodmart\" .\" product\" \n "
6911
6911
+ "GROUP BY \" product_class_id\" " ;
@@ -8241,7 +8241,7 @@ private void checkLiteral2(String expression, String expected) {
8241
8241
final String expected = "SELECT *\n "
8242
8242
+ "FROM TABLE(DEDUP(CURSOR ((SELECT \" product_id\" , \" product_name\" \n "
8243
8243
+ "FROM \" foodmart\" .\" product\" \n "
8244
- + "WHERE \" net_weight\" > 100 AND \" product_name\" = 'Hello World')), "
8244
+ + "WHERE \" net_weight\" > CAST( 100 AS DOUBLE) AND \" product_name\" = 'Hello World')), "
8245
8245
+ "CURSOR ((SELECT \" employee_id\" , \" full_name\" \n "
8246
8246
+ "FROM \" foodmart\" .\" employee\" \n "
8247
8247
+ "GROUP BY \" employee_id\" , \" full_name\" )), 'NAME'))" ;
0 commit comments