You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "coffee (JIRA)" <ji...@apache.org> on 2017/09/17 05:28:00 UTC

[jira] [Commented] (HIVE-13290) Support primary keys/foreign keys constraint as part of create table command in Hive

    [ https://issues.apache.org/jira/browse/HIVE-13290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16169196#comment-16169196 ] 

coffee commented on HIVE-13290:
-------------------------------

Hive 2.1.1 still not support primary keys/foreign keys?

hive> select version();
OK
{color:red}2.1.1 {color}r1af77bbf8356e86cabbed92cfa8cc2e1470a1d5c
Time taken: 0.091 seconds, Fetched: 1 row(s)
hive> create table pk(id1 integer, id2 integer,primary key(id1, id2) disable novalidate);
NoViableAltException(26@[])
        at org.apache.hadoop.hive.ql.parse.HiveParser.type(HiveParser.java:42781)
        at org.apache.hadoop.hive.ql.parse.HiveParser.colType(HiveParser.java:42538)
        at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:42058)
        at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrPKOrFK(HiveParser.java:42308)
        at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrPKOrFKList(HiveParser.java:37938)
        at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:5259)
        at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2763)
        at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1756)
        at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1178)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:204)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:444)
        at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1242)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1384)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1171)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1161)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
FAILED: ParseException line 1:20 cannot recognize input near 'integer' ',' 'id2' in column type
hive> create table fk(id1 integer, id2 integer, constraint c1 foreign key(id1, id2) references pk(id2, id1) disable novalidate);
NoViableAltException(26@[])
        at org.apache.hadoop.hive.ql.parse.HiveParser.type(HiveParser.java:42781)
        at org.apache.hadoop.hive.ql.parse.HiveParser.colType(HiveParser.java:42538)
        at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameType(HiveParser.java:42058)
        at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrPKOrFK(HiveParser.java:42308)
        at org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrPKOrFKList(HiveParser.java:37938)
        at org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:5259)
        at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2763)
        at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1756)
        at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1178)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:204)
        at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:444)
        at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1242)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1384)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1171)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1161)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
FAILED: ParseException line 1:20 cannot recognize input near 'integer' ',' 'id2' in column type

> Support primary keys/foreign keys constraint as part of create table command in Hive
> ------------------------------------------------------------------------------------
>
>                 Key: HIVE-13290
>                 URL: https://issues.apache.org/jira/browse/HIVE-13290
>             Project: Hive
>          Issue Type: Sub-task
>          Components: CBO, Logical Optimizer
>            Reporter: Hari Sankar Sivarama Subramaniyan
>            Assignee: Hari Sankar Sivarama Subramaniyan
>              Labels: TODOC2.1
>             Fix For: 2.1.0
>
>         Attachments: HIVE-13290.1.patch, HIVE-13290.2.patch, HIVE-13290.3.patch, HIVE-13290.4.patch, HIVE-13290.5.patch, HIVE-13290.6.patch, HIVE-13290.7.patch, HIVE-13290.8.patch, HIVE-13290.final.patch, test-results.txt
>
>
> SUPPORT for the following statements
> {code}
> CREATE TABLE product 
>   ( 
>      product_id        INTEGER, 
>      product_vendor_id INTEGER, 
>      PRIMARY KEY (product_id)  DISABLE NOVALIDATE, 
>      CONSTRAINT product_fk_1 FOREIGN KEY (product_vendor_id) REFERENCES vendor(vendor_id)  DISABLE NOVALIDATE
>   ); 
> CREATE TABLE vendor 
>   ( 
>      vendor_id INTEGER, 
>      PRIMARY KEY (vendor_id)  DISABLE NOVALIDATE RELY
>   ); 
> {code}
> In the above syntax, [CONSTRAINT constraint-Name] is optional. If this is not specified by the user, we will use system generated constraint name. For the purpose of simplicity, we will allow  CONSTRAINT option for foreign keys and not primary key since there is only one primary key per table. The RELY/NORELY keyword is also optional.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)