Fredy Wijaya has posted comments on this change. ( http://gerrit.cloudera.org:8080/12221 )
Change subject: IMPALA-5872: Testcase builder for query planner ...................................................................... Patch Set 2: (19 comments) http://gerrit.cloudera.org:8080/#/c/12221/2//COMMIT_MSG Commit Message: http://gerrit.cloudera.org:8080/#/c/12221/2//COMMIT_MSG@41 PS2, Line 41: nit: remove new line http://gerrit.cloudera.org:8080/#/c/12221/2/common/thrift/Frontend.thrift File common/thrift/Frontend.thrift: http://gerrit.cloudera.org:8080/#/c/12221/2/common/thrift/Frontend.thrift@915 PS2, Line 915: // Query statemnt for which this test case data is generated. : 1: required string query_stmt : // All referenced table and view defs. : 2: optional list<CatalogObjects.TTable> tables_and_views : // All databases referenced in the query. : 3: optional list<CatalogObjects.TDatabase> dbs : // Output path : 4: required string testcase_data_path : // Impala version that was used to generate this testcase. : // TODO: How to deal with version incompatibilities? E.g: A testcase collected on : // Impala version v1 may or may not be compatible to Impala version v2 if the : // underlying thrift layout changes. : 5: required string impala_version nit: Adding a new line after each field makes it a bit more readable. http://gerrit.cloudera.org:8080/#/c/12221/2/common/thrift/JniCatalog.thrift File common/thrift/JniCatalog.thrift: http://gerrit.cloudera.org:8080/#/c/12221/2/common/thrift/JniCatalog.thrift@747 PS2, Line 747: nit: remove extra new lines. http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/cup/sql-parser.cup File fe/src/main/cup/sql-parser.cup: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/cup/sql-parser.cup@769 PS2, Line 769: KW_TESTCASE I don't think "testcase" is a reserved SQL keyword. So, instead of introducing a new "testcase" keyword, should we use ident trick? KW_COPY IDENT:ident KW_TO STRING_LITERAL:path query_sttmt:query {: if (!ident.toUppercase().equals("TESTCASE") { parser.parseError(....) } ... :} http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java File fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@62 PS2, Line 62: testOutputFilePrefix_ nit: use upper case variable name since it's static final http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@82 PS2, Line 82: } nit: add new line http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@107 PS2, Line 107: true, true add inline comments for true, true http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@114 PS2, Line 114: true, true add inline comments for true, true http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@133 PS2, Line 133: Table table = (Table) referencedTable.getTable(); Add Preconditions.checkState(referencedTable.getTable() instanceof Table) http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@151 PS2, Line 151: View view = (View) feView; Add Preconditions.checkState() http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/CopyTestCaseStmt.java@181 PS2, Line 181: os.close(); Wrap in try/finally or use try resource. http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/HdfsUri.java File fe/src/main/java/org/apache/impala/analysis/HdfsUri.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/analysis/HdfsUri.java@55 PS2, Line 55: false Add comment /* throwIfNotExists */ false to easily distinguish between registerPrivReq vs throwIfNotExists. http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java File fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/catalog/CatalogServiceCatalog.java@1306 PS2, Line 1306: } nit: add new line http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/catalog/FeTable.java File fe/src/main/java/org/apache/impala/catalog/FeTable.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/catalog/FeTable.java@34 PS2, Line 34: nameComparator_ Variables in an interface are essentially static final, so using upper case for the variable name is more appropriate, i.e. NAME_COMPARATOR. We could also use lambda for this: Comparator<FeTable> NAME_COMPARATOR = (t1, t2) -> t1.getFullName().compareTo(t2.getFullName()); http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/common/FileSystemUtil.java File fe/src/main/java/org/apache/impala/common/FileSystemUtil.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/common/FileSystemUtil.java@533 PS2, Line 533: return false Returning false when an IOException was thrown doesn't necessarily mean it's not a directory. Maybe we should just re-throw the exception instead? http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java File fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java@432 PS2, Line 432: nit: remove space http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java@437 PS2, Line 437: responseStr wouldn't it be better to specify the test case path in the responseStr? http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/service/JniFrontend.java File fe/src/main/java/org/apache/impala/service/JniFrontend.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/main/java/org/apache/impala/service/JniFrontend.java@20 PS2, Line 20: import java.io.BufferedInputStream; Are these new imports unused? http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/test/java/org/apache/impala/testutil/PlannerTestCaseLoader.java File fe/src/test/java/org/apache/impala/testutil/PlannerTestCaseLoader.java: http://gerrit.cloudera.org:8080/#/c/12221/2/fe/src/test/java/org/apache/impala/testutil/PlannerTestCaseLoader.java@80 PS2, Line 80: System.exit(0); nit: this isn't necessary -- To view, visit http://gerrit.cloudera.org:8080/12221 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: Iec83eeb2dc5136768b70ed581fb8d3ed0335cb52 Gerrit-Change-Number: 12221 Gerrit-PatchSet: 2 Gerrit-Owner: Bharath Vissapragada <bhara...@cloudera.com> Gerrit-Reviewer: Balazs Jeszenszky <jes...@gmail.com> Gerrit-Reviewer: Bharath Vissapragada <bhara...@cloudera.com> Gerrit-Reviewer: Fredy Wijaya <fwij...@cloudera.com> Gerrit-Reviewer: Greg Rahn <gr...@cloudera.com> Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Gerrit-Reviewer: Paul Rogers <prog...@cloudera.com> Gerrit-Comment-Date: Wed, 23 Jan 2019 18:21:11 +0000 Gerrit-HasComments: Yes