Soumyakanti Das created HIVE-27648:
--------------------------------------

             Summary: CREATE TABLE with CHECK constraint fails with 
SemanticException
                 Key: HIVE-27648
                 URL: https://issues.apache.org/jira/browse/HIVE-27648
             Project: Hive
          Issue Type: Bug
          Components: Hive
            Reporter: Soumyakanti Das


When we run:
{code:java}
create table test (
    col1 int,
    `col 2` int check (`col 2` > 10) enable novalidate rely,
    constraint check_constraint check (col1 + `col 2` > 15) enable novalidate 
rely
);
{code}
It fails with:

 
{code:java}
 org.apache.hadoop.hive.ql.parse.SemanticException: Invalid Constraint syntax 
Invalid CHECK constraint expression: col 2 > 10.
    at 
org.apache.hadoop.hive.ql.ddl.table.constraint.ConstraintsUtils.validateCheckConstraint(ConstraintsUtils.java:462)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeCreateTable(SemanticAnalyzer.java:13839)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genResolvedParseTree(SemanticAnalyzer.java:12618)
    at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:12787)
    at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:467)
    at 
org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:327)
    at org.apache.hadoop.hive.ql.Compiler.analyze(Compiler.java:224)
    at org.apache.hadoop.hive.ql.Compiler.compile(Compiler.java:107)
    at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:519)
    at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:471)
    at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:436)
    at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:430)
    at 
org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:121)
    at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:227)
    at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:257)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd1(CliDriver.java:201)
    at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:127)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:425)
    at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:356)
    at 
org.apache.hadoop.hive.ql.QTestUtil.executeClientInternal(QTestUtil.java:733)
    at org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:703)
    at 
org.apache.hadoop.hive.cli.control.CoreCliDriver.runTest(CoreCliDriver.java:115)
    at 
org.apache.hadoop.hive.cli.control.CliAdapter.runTest(CliAdapter.java:157)
    at 
org.apache.hadoop.hive.cli.TestMiniLlapLocalCliDriver.testCliDriver(TestMiniLlapLocalCliDriver.java:62)
 {code}
 

I noticed while debugging that the check constraint expression in 
[cc.getCheck_expression()|https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/constraint/ConstraintsUtils.java#L446]
 doesn't include the backticks (`), and this results in wrong token generation.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to