Skip to content

Commit ce98d4a

Browse files
authored
Assert strict equality in HiveToPrestoConverterTest (#64)
* Removed shared mutable state between test runs * Assert strict equality in HiveToPrestoConverterTest Previously the VIEW conversion test asserted on the prefix, stripping out meaningless final alias. However, in more complex cases, the alias is used in other parts of the converted query text. Asserting on full text means the expected results are self-contained now.
1 parent 483128c commit ce98d4a

File tree

1 file changed

+25
-24
lines changed

1 file changed

+25
-24
lines changed

coral-presto/src/test/java/com/linkedin/coral/presto/rel2presto/HiveToPrestoConverterTest.java

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,12 @@
2222
public class HiveToPrestoConverterTest {
2323

2424
Path metastoreDbDirectory;
25-
RelToPrestoConverter relToPrestoConverter;
2625

2726
@BeforeTest
2827
public void beforeClass() throws Exception {
2928
metastoreDbDirectory = Files.createTempFile("coral-presto", "metastore.db");
3029
Files.delete(metastoreDbDirectory); // it will be re-created
3130
TestUtils.initializeViews(metastoreDbDirectory);
32-
relToPrestoConverter = new RelToPrestoConverter();
3331
}
3432

3533
@AfterClass(alwaysRun = true)
@@ -40,81 +38,84 @@ public void afterClass() throws Exception {
4038
@Test(dataProvider = "viewTestCases")
4139
public void testViews(String database, String view, String expectedSql) {
4240
RelNode relNode = TestUtils.convertView(database, view);
41+
RelToPrestoConverter relToPrestoConverter = new RelToPrestoConverter();
4342
String expandedSql = relToPrestoConverter.convert(relNode);
44-
assertThat(expandedSql).contains(expectedSql);
43+
assertThat(expandedSql).isEqualTo(expectedSql);
4544
}
4645

4746
@DataProvider(name = "viewTestCases")
4847
public Object[][] viewTestCasesProvider() {
49-
return new Object[][] { { "test", "fuzzy_union_view", "SELECT \"a\", \"b\"\nFROM ("
50-
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\"\nUNION ALL\n"
51-
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\")" },
48+
return new Object[][] {
49+
50+
{ "test", "fuzzy_union_view", "SELECT \"a\", \"b\"\nFROM ("
51+
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\"\nUNION ALL\n"
52+
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\") AS \"t1\"" },
5253

5354
{ "test", "fuzzy_union_view_with_more_than_two_tables", "SELECT \"a\", \"b\"\nFROM (SELECT *\nFROM ("
5455
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\"\nUNION ALL\n"
5556
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\")\nUNION ALL\n"
56-
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\")" },
57+
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\") AS \"t3\"" },
5758

5859
{ "test", "fuzzy_union_view_with_alias", "SELECT \"a\", \"b\"\nFROM ("
5960
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\"\nUNION ALL\n"
60-
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\")" },
61+
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablea\") AS \"t1\"" },
6162

6263
{ "test", "fuzzy_union_view_single_branch_evolved", "SELECT \"a\", \"b\"\nFROM ("
6364
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tableb\"\nUNION ALL\n"
64-
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablec\")" },
65+
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablec\") AS \"t1\"" },
6566

6667
{ "test", "fuzzy_union_view_double_branch_evolved_same", "SELECT \"a\", \"b\"\nFROM ("
6768
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tabled\"\nUNION ALL\n"
68-
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablee\")" },
69+
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablee\") AS \"t1\"" },
6970

7071
{ "test", "fuzzy_union_view_double_branch_evolved_different", "SELECT \"a\", \"b\"\nFROM ("
7172
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablef\"\nUNION ALL\n"
72-
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tableg\")" },
73+
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tableg\") AS \"t1\"" },
7374

7475
{ "test", "fuzzy_union_view_more_than_two_branches_evolved", "SELECT \"a\", \"b\"\nFROM (SELECT *\nFROM ("
7576
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablef\"\nUNION ALL\n"
7677
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tableg\")\nUNION ALL\n"
77-
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablef\")" },
78+
+ "SELECT \"a\", CAST(row(b.b1) as row(b1 varchar)) AS \"b\"\nFROM \"test\".\"tablef\") AS \"t3\"" },
7879

7980
{ "test", "fuzzy_union_view_map_with_struct_value_evolved", "SELECT \"a\", \"b\"\nFROM ("
8081
+ "SELECT \"a\", TRANSFORM_VALUES(b, (k, v) -> cast(row(v.b1) as row(b1 varchar))) AS \"b\"\nFROM \"test\".\"tableh\"\nUNION ALL\n"
81-
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablei\")" },
82+
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablei\") AS \"t1\"" },
8283

8384
{ "test", "fuzzy_union_view_array_with_struct_value_evolved", "SELECT \"a\", \"b\"\nFROM ("
8485
+ "SELECT \"a\", TRANSFORM(b, x -> cast(row(x.b1) as row(b1 varchar))) AS \"b\"\nFROM \"test\".\"tablej\"\nUNION ALL\n"
85-
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablek\")" },
86+
+ "SELECT \"a\", \"b\"\nFROM \"test\".\"tablek\") AS \"t1\"" },
8687

8788
{ "test", "fuzzy_union_view_deeply_nested_struct_evolved", "" + "SELECT \"a\", \"b\"\nFROM ("
8889
+ "SELECT \"a\", CAST(row(b.b1, cast(row(b.b2.b3, cast(row(b.b2.b4.b5) as row(b5 varchar))) as row(b3 varchar, b4 row(b5 varchar)))) as row(b1 varchar, b2 row(b3 varchar, b4 row(b5 varchar)))) AS \"b\"\nFROM \"test\".\"tablel\"\nUNION ALL\n"
89-
+ "SELECT \"a\", \"b\"\n" + "FROM \"test\".\"tablem\")" },
90+
+ "SELECT \"a\", \"b\"\n" + "FROM \"test\".\"tablem\") AS \"t1\"" },
9091

9192
{ "test", "fuzzy_union_view_deeply_nested_complex_struct_evolved", "" + "SELECT \"a\", \"b\"\nFROM ("
9293
+ "SELECT \"a\", CAST(row(b.b1, transform_values(b.m1, (k, v) -> cast(row(v.b1, transform(v.a1, x -> cast(row(x.b1) as row(b1 varchar)))) as row(b1 varchar, a1 array(row(b1 varchar)))))) as row(b1 varchar, m1 map(varchar, row(b1 varchar, a1 array(row(b1 varchar)))))) AS \"b\"\nFROM \"test\".\"tablen\"\nUNION ALL\n"
93-
+ "SELECT \"a\", \"b\"\n" + "FROM \"test\".\"tableo\")" },
94+
+ "SELECT \"a\", \"b\"\n" + "FROM \"test\".\"tableo\") AS \"t1\"" },
9495

95-
{ "test", "view_with_explode_string_array", "SELECT \"$cor0\".\"a\" AS \"a\", \"t49\".\"c\" AS \"c\"\n"
96+
{ "test", "view_with_explode_string_array", "SELECT \"$cor0\".\"a\" AS \"a\", \"t1\".\"c\" AS \"c\"\n"
9697
+ "FROM \"test\".\"table_with_string_array\" AS \"$cor0\"\n"
97-
+ "CROSS JOIN LATERAL (SELECT \"c\"\nFROM UNNEST(\"$cor0\".\"b\") AS \"t48\" (\"c\")) AS \"t49\"" },
98+
+ "CROSS JOIN LATERAL (SELECT \"c\"\nFROM UNNEST(\"$cor0\".\"b\") AS \"t0\" (\"c\")) AS \"t1\"" },
9899

99-
{ "test", "view_with_outer_explode_string_array", "SELECT \"$cor1\".\"a\" AS \"a\", \"t53\".\"c\" AS \"c\"\n"
100+
{ "test", "view_with_outer_explode_string_array", "SELECT \"$cor1\".\"a\" AS \"a\", \"t1\".\"c\" AS \"c\"\n"
100101
+ "FROM \"test\".\"table_with_string_array\" AS \"$cor1\"\n"
101-
+ "CROSS JOIN LATERAL (SELECT \"c\"\nFROM UNNEST(\"if\"(\"$cor1\".\"b\" IS NOT NULL AND CARDINALITY(\"$cor1\".\"b\") > 0, \"$cor1\".\"b\", ARRAY[NULL])) AS \"t52\" (\"c\")) AS \"t53\"" },
102+
+ "CROSS JOIN LATERAL (SELECT \"c\"\nFROM UNNEST(\"if\"(\"$cor1\".\"b\" IS NOT NULL AND CARDINALITY(\"$cor1\".\"b\") > 0, \"$cor1\".\"b\", ARRAY[NULL])) AS \"t0\" (\"c\")) AS \"t1\"" },
102103

103104
{ "test", "current_date_and_timestamp_view", "SELECT CURRENT_TIMESTAMP, TRIM(CAST(CURRENT_TIMESTAMP AS VARCHAR(65535))) AS \"ct\", CURRENT_DATE, CURRENT_DATE AS \"cd\", \"a\"\nFROM \"test\".\"tablea\"" },
104105

105-
{ "test", "lateral_view_json_tuple_view", "SELECT \"$cor4\".\"a\" AS \"a\", \"t57\".\"d\" AS \"d\", \"t57\".\"e\" AS \"e\", \"t57\".\"f\" AS \"f\"\n"
106+
{ "test", "lateral_view_json_tuple_view", "SELECT \"$cor4\".\"a\" AS \"a\", \"t0\".\"d\" AS \"d\", \"t0\".\"e\" AS \"e\", \"t0\".\"f\" AS \"f\"\n"
106107
+ "FROM \"test\".\"tablea\" AS \"$cor4\"\nCROSS JOIN LATERAL (SELECT "
107108
+ "\"if\"(\"REGEXP_LIKE\"('trino', '^[^\\\"]*$'), CAST(\"json_extract\"(\"$cor4\".\"b\".\"b1\", '$[\"' || 'trino' || '\"]') AS VARCHAR(65535)), NULL) AS \"d\", "
108109
+ "\"if\"(\"REGEXP_LIKE\"('always', '^[^\\\"]*$'), CAST(\"json_extract\"(\"$cor4\".\"b\".\"b1\", '$[\"' || 'always' || '\"]') AS VARCHAR(65535)), NULL) AS \"e\", "
109110
+ "\"if\"(\"REGEXP_LIKE\"('rocks', '^[^\\\"]*$'), CAST(\"json_extract\"(\"$cor4\".\"b\".\"b1\", '$[\"' || 'rocks' || '\"]') AS VARCHAR(65535)), NULL) AS \"f\"\n"
110-
+ "FROM (VALUES (0)) AS \"t\" (\"ZERO\")) AS \"t57\"" },
111+
+ "FROM (VALUES (0)) AS \"t\" (\"ZERO\")) AS \"t0\"" },
111112

112-
{ "test", "lateral_view_json_tuple_view_qualified", "SELECT \"$cor7\".\"a\" AS \"a\", \"t60\".\"d\" AS \"d\", \"t60\".\"e\" AS \"e\", \"t60\".\"f\" AS \"f\"\n"
113+
{ "test", "lateral_view_json_tuple_view_qualified", "SELECT \"$cor7\".\"a\" AS \"a\", \"t0\".\"d\" AS \"d\", \"t0\".\"e\" AS \"e\", \"t0\".\"f\" AS \"f\"\n"
113114
+ "FROM \"test\".\"tablea\" AS \"$cor7\"\nCROSS JOIN LATERAL (SELECT "
114115
+ "\"if\"(\"REGEXP_LIKE\"('trino', '^[^\\\"]*$'), CAST(\"json_extract\"(\"$cor7\".\"b\".\"b1\", '$[\"' || 'trino' || '\"]') AS VARCHAR(65535)), NULL) AS \"d\", "
115116
+ "\"if\"(\"REGEXP_LIKE\"('always', '^[^\\\"]*$'), CAST(\"json_extract\"(\"$cor7\".\"b\".\"b1\", '$[\"' || 'always' || '\"]') AS VARCHAR(65535)), NULL) AS \"e\", "
116117
+ "\"if\"(\"REGEXP_LIKE\"('rocks', '^[^\\\"]*$'), CAST(\"json_extract\"(\"$cor7\".\"b\".\"b1\", '$[\"' || 'rocks' || '\"]') AS VARCHAR(65535)), NULL) AS \"f\"\n"
117-
+ "FROM (VALUES (0)) AS \"t\" (\"ZERO\")) AS \"t60\"" },
118+
+ "FROM (VALUES (0)) AS \"t\" (\"ZERO\")) AS \"t0\"" },
118119

119120
{ "test", "get_json_object_view", "SELECT \"json_extract\"(\"b\".\"b1\", '$.name')\nFROM \"test\".\"tablea\"" } };
120121
}

0 commit comments

Comments
 (0)