Quanlong Huang has posted comments on this change. ( http://gerrit.cloudera.org:8080/14592 )
Change subject: IMPALA-2112: Support primary key/foreign key constraints as part of create table in Impala. ...................................................................... Patch Set 3: (19 comments) This patch generally looks good to me. I leave some comments mostly on code style or "nits". BTW, is there a JIRA for using these pk/fk meta in planner? E.g. revisit pk/fk codes in JoinNode.java? http://gerrit.cloudera.org:8080/#/c/14592/3//COMMIT_MSG Commit Message: http://gerrit.cloudera.org:8080/#/c/14592/3//COMMIT_MSG@38 PS3, Line 38: CREATE TABLE pk(id INT, PRIMARY KEY(id) DISABLE, NOVALIDATE, RELY); May worth to give some more examples. Without looking into the oracle doc, I thought we shoud turn off them by: CREATE TABLE pk(id INT, PRIMARY KEY(id) DISABLE(false), NOVALIDATE(false), RELY); http://gerrit.cloudera.org:8080/#/c/14592/3//COMMIT_MSG@42 PS3, Line 42: Is pk/fk not supported in local-catalog mode coordinators? Looks like changes in LocalFsTable are empty. May worth to mention it in commit message. http://gerrit.cloudera.org:8080/#/c/14592/3/common/thrift/CatalogObjects.thrift File common/thrift/CatalogObjects.thrift: http://gerrit.cloudera.org:8080/#/c/14592/3/common/thrift/CatalogObjects.thrift@370 PS3, Line 370: 8: optional list<hive_metastore.SQLPrimaryKey> primary_keys, Is it ok to reuse field id "8"? http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/compat-hive-2/java/org/apache/impala/compat/MetastoreShim.java File fe/src/compat-hive-2/java/org/apache/impala/compat/MetastoreShim.java: http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/compat-hive-2/java/org/apache/impala/compat/MetastoreShim.java@138 PS3, Line 138: p nit: need a space http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/cup/sql-parser.cup File fe/src/main/cup/sql-parser.cup: http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/cup/sql-parser.cup@518 PS3, Line 518: used nit: Need space and capitcal for first char. http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/cup/sql-parser.cup@1445 PS3, Line 1445: nit: no indention http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/cup/sql-parser.cup@1454 PS3, Line 1454: nit: need indention http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/cup/sql-parser.cup@1497 PS3, Line 1497: null Should it be key_ident? http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/CreateTableStmt.java File fe/src/main/java/org/apache/impala/analysis/CreateTableStmt.java: http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/CreateTableStmt.java@20 PS3, Line 20: import com.google.common.base.Joiner; nit: move this line below to be together with "import com.google" stuffs. http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java File fe/src/main/java/org/apache/impala/analysis/TableDef.java: http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@190 PS3, Line 190: // nit: should be consistent with other comments that with one more space after "//". http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@255 PS3, Line 255: forign typo: foreign. Same in other places. http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@449 PS3, Line 449: int cnt = 1; nit: May worth to give it a clear name or define it later before the last for-loop. http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@464 PS3, Line 464: getPrimaryKeyColumnNames() nit: simplify it to primaryKeyColNames_? http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@509 PS3, Line 509: if (getForeignKeysList().size() == 0 || getForeignKeysList() == null) return; Should check null first to avoid NPE. BTW, why not using foreignKeysList_ directly inside the class? http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@517 PS3, Line 517: if( nit: need a space http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@523 PS3, Line 523: nit: redundant space http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@562 PS3, Line 562: < nit: need spaces arround http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/TableDef.java@567 PS3, Line 567: } : else{ nit: should be in same line in our code style, and one white space before "{". http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/ToSqlUtils.java File fe/src/main/java/org/apache/impala/analysis/ToSqlUtils.java: http://gerrit.cloudera.org:8080/#/c/14592/3/fe/src/main/java/org/apache/impala/analysis/ToSqlUtils.java@257 PS3, Line 257: , nit: comma in wrong line -- To view, visit http://gerrit.cloudera.org:8080/14592 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: Id03d8d4d41a2ac1b15e7060e2a013e334d044ee7 Gerrit-Change-Number: 14592 Gerrit-PatchSet: 3 Gerrit-Owner: Anurag Mantripragada <anu...@cloudera.com> Gerrit-Reviewer: Anurag Mantripragada <anu...@cloudera.com> Gerrit-Reviewer: Impala Public Jenkins <impala-public-jenk...@cloudera.com> Gerrit-Reviewer: Quanlong Huang <huangquanl...@gmail.com> Gerrit-Reviewer: Vihang Karajgaonkar <vih...@cloudera.com> Gerrit-Comment-Date: Wed, 06 Nov 2019 07:24:10 +0000 Gerrit-HasComments: Yes