raminqaf commented on code in PR #28277:
URL: https://github.com/apache/flink/pull/28277#discussion_r3354894052


##########
flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlDdlToOperationConverterTest.java:
##########
@@ -2591,6 +2591,110 @@ void testCreateViewWithDynamicTableOptions() {
         assertThat(operation).isInstanceOf(CreateViewOperation.class);
     }
 
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("viewOriginalQueryCases")
+    void testCreateViewOriginalQuery(String name, String sql, String 
expectedOriginalQuery) {
+        final Operation operation = parse(sql);
+        assertThat(operation).isInstanceOf(CreateViewOperation.class);
+        assertThat(((CreateViewOperation) 
operation).getCatalogView().getOriginalQuery())
+                .isEqualTo(expectedOriginalQuery);
+    }
+
+    private static Stream<Arguments> viewOriginalQueryCases() {
+        return Stream.of(
+                        viewCommentHandlingCases(),
+                        viewLineBreakCases(),
+                        viewComplexQueryShapeCases(),
+                        viewAdversarialTextCases())
+                .flatMap(s -> s);
+    }
+
+    private static Stream<Arguments> viewCommentHandlingCases() {
+        return Stream.of(
+                viewAsQueryCase(
+                        "comments around the query are kept",
+                        "/* leading comment */\nSELECT 1\n/* trailing comment 
*/"),
+                viewAsQueryCase(
+                        "block comment inside the query is kept", "SELECT /* 
inline comment */ 1"),
+                viewAsQueryCase("trailing line comment is kept", "SELECT 1 -- 
trailing comment"));
+    }
+
+    private static Stream<Arguments> viewLineBreakCases() {

Review Comment:
   added



##########
flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlMaterializedTableNodeToOperationConverterTest.java:
##########
@@ -320,6 +321,157 @@ void testCreateMaterializedTableWithUDTFQuery() {
                                 + "LATERAL 
TABLE(`builtin`.`default`.`myFunc`(`b`)) AS `T` (`f1`, `f2`)");
     }
 
+    @ParameterizedTest(name = "{0}")
+    @MethodSource("originalQueryCases")
+    void testOriginalQuery(String name, String sql, String 
expectedOriginalQuery) {
+        final String originalQuery =
+                createMaterializedTableOperation(sql)
+                        .getCatalogMaterializedTable()
+                        .getOriginalQuery();
+        assertThat(originalQuery).isEqualTo(expectedOriginalQuery);
+    }
+
+    private static Stream<Arguments> originalQueryCases() {
+        return Stream.of(
+                        commentHandlingCases(),
+                        lineBreakCases(),
+                        ddlPrefixTokenCases(),
+                        complexQueryShapeCases(),
+                        adversarialTextCases())
+                .flatMap(s -> s);
+    }
+
+    private static Stream<Arguments> commentHandlingCases() {
+        return Stream.of(
+                asQueryCase(
+                        "inline line comment inside query is kept",
+                        "SELECT a, -- inline line comment\n b FROM t1"),
+                asQueryCase(
+                        "block comment inside query is kept",
+                        "SELECT /* block comment */ * FROM t1"),
+                asQueryCase(
+                        "comment between AS and query is kept",
+                        "-- leading comment\n SELECT * FROM t1"),
+                asQueryCase(
+                        "trailing comment after query is kept",
+                        "SELECT * FROM t1 -- trailing comment"));
+    }
+
+    private static Stream<Arguments> lineBreakCases() {
+        final String query = "SELECT * FROM t1";
+        return Stream.of(
+                asQueryCase(
+                        "multi-line block comment between AS and query is 
kept",
+                        "/* multi\n line\n comment */\n" + query),
+                asQueryCase(
+                        "multi-line block comment inside query is kept",
+                        "SELECT a, /* spanning\n two lines */ b FROM t1"),
+                Arguments.of(
+                        "line comment before AS is dropped",
+                        "CREATE MATERIALIZED TABLE mtbl1\n-- note before 
AS\nAS " + query,
+                        query),
+                Arguments.of(
+                        "multi-line block comment before AS is dropped",
+                        "CREATE MATERIALIZED TABLE mtbl1\n/* a\n multiline\n 
note before AS */\nAS "
+                                + query,
+                        query),
+                Arguments.of(
+                        "multi-line DDL prefix before AS",
+                        "CREATE MATERIALIZED TABLE mtbl1 (\n"
+                                + "   CONSTRAINT ct1 PRIMARY KEY(a) NOT 
ENFORCED\n"
+                                + ")\n"
+                                + "COMMENT 'materialized table comment'\n"

Review Comment:
   Added



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to