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

Yongzhi Chen commented on HIVE-11217:
-------------------------------------

[~prasanth_j], changes in TypeCheckProcFactory will cause assert error in my 
test case:
{noformat}
  TestCliDriver.testCliDriver_ctas_nullvalueorc:130->runTest:156 Unexpected 
exception java.lang.AssertionError
        at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:908)
        at 
org.apache.hadoop.hive.ql.optimizer.calcite.translator.RexNodeConverter.convert(RexNodeConverter.java:389)
        at 
org.apache.hadoop.hive.ql.optimizer.calcite.translator.RexNodeConverter.convert(RexNodeConverter.java:129)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.genSelectLogicalPlan(CalcitePlanner.java:2745)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.genLogicalPlan(CalcitePlanner.java:2842)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.apply(CalcitePlanner.java:853)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner$CalcitePlannerAction.apply(CalcitePlanner.java:814)
        at org.apache.calcite.tools.Frameworks$1.apply(Frameworks.java:113)
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.perform(CalcitePrepareImpl.java:882)
        at org.apache.calcite.tools.Frameworks.withPrepare(Frameworks.java:149)
        at org.apache.calcite.tools.Frameworks.withPlanner(Frameworks.java:106)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.getOptimizedAST(CalcitePlanner.java:617)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:252)
        at 
org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10137)
        at 
org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:212)
        at 
org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:240)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:428)
        at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:310)
        at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1150)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1203)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1079)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1069)
        at 
org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:311)
        at 
org.apache.hadoop.hive.ql.QTestUtil.executeClientInternal(QTestUtil.java:1033)
        at 
org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:1007)
        at 
org.apache.hadoop.hive.cli.TestCliDriver.runTest(TestCliDriver.java:146)
        at 
org.apache.hadoop.hive.cli.TestCliDriver.testCliDriver_ctas_nullvalueorc(TestCliDriver.java:130)

{noformat}

The failure is in
{noformat}
    case STRING:
      calciteLiteral = rexBuilder.makeLiteral((String) value);
      break;
{noformat}
makeLiteral assume the value is not null.

When I use eclipse debug in my local setup, the code is never called, so it 
passed. But it failed in the unit test. 

> CTAS statements throws error, when the table is stored as ORC File format and 
> select clause has NULL/VOID type column 
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-11217
>                 URL: https://issues.apache.org/jira/browse/HIVE-11217
>             Project: Hive
>          Issue Type: Bug
>          Components: File Formats
>    Affects Versions: 0.13.1
>            Reporter: Gaurav Kohli
>            Assignee: Yongzhi Chen
>            Priority: Minor
>         Attachments: HIVE-11217.1.patch, HIVE-11217.2.patch, 
> HIVE-11217.3.patch, HIVE-11217.4.patch
>
>
> If you try to use create-table-as-select (CTAS) statement and create a ORC 
> File format based table, then you can't use NULL as a column value in select 
> clause 
> CREATE TABLE empty (x int);
> CREATE TABLE orc_table_with_null 
> STORED AS ORC 
> AS 
> SELECT 
> x,
> null
> FROM empty;
> Error: 
> {quote}
> 347084 [main] ERROR hive.ql.exec.DDLTask  - 
> org.apache.hadoop.hive.ql.metadata.HiveException: 
> java.lang.IllegalArgumentException: Unknown primitive type VOID
>       at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:643)
>       at org.apache.hadoop.hive.ql.exec.DDLTask.createTable(DDLTask.java:4242)
>       at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:285)
>       at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:153)
>       at 
> org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:85)
>       at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1554)
>       at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1321)
>       at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1139)
>       at org.apache.hadoop.hive.ql.Driver.run(Driver.java:962)
>       at org.apache.hadoop.hive.ql.Driver.run(Driver.java:952)
>       at 
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:269)
>       at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:221)
>       at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:431)
>       at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:367)
>       at 
> org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:464)
>       at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:474)
>       at 
> org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:756)
>       at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:694)
>       at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:633)
>       at org.apache.oozie.action.hadoop.HiveMain.runHive(HiveMain.java:323)
>       at org.apache.oozie.action.hadoop.HiveMain.run(HiveMain.java:284)
>       at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:39)
>       at org.apache.oozie.action.hadoop.HiveMain.main(HiveMain.java:66)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:227)
>       at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
>       at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)
>       at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
>       at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at javax.security.auth.Subject.doAs(Subject.java:415)
>       at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1642)
>       at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
> Caused by: java.lang.IllegalArgumentException: Unknown primitive type VOID
>       at 
> org.apache.hadoop.hive.ql.io.orc.OrcStruct.createObjectInspector(OrcStruct.java:530)
>       at 
> org.apache.hadoop.hive.ql.io.orc.OrcStruct$OrcStructInspector.<init>(OrcStruct.java:195)
>       at 
> org.apache.hadoop.hive.ql.io.orc.OrcStruct.createObjectInspector(OrcStruct.java:534)
>       at 
> org.apache.hadoop.hive.ql.io.orc.OrcSerde.initialize(OrcSerde.java:106)
>       at 
> org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe(SerDeUtils.java:519)
>       at 
> org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:345)
>       at 
> org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:292)
>       at 
> org.apache.hadoop.hive.ql.metadata.Table.checkValidity(Table.java:194)
>       at org.apache.hadoop.hive.ql.metadata.Hive.createTable(Hive.java:621)
>       ... 35 more
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to