Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-16783

Allow column list specification in INSERT statement for a Partitioned ORC Table

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Critical
    • Resolution: Unresolved
    • Affects Version/s: 1.2.1
    • Fix Version/s: None
    • Component/s: Parser, Query Processor, SQL
    • Labels:
    • Environment:

      OS : Red Hat Enterprise Linux Server release 6.4
      HDP 2.3.4
      Hive version : 1.2.1.2.3.4.0-3485

      Description

      Original issue at HIVE-9481, this one relates to Partitioned ORC Table.
      SQL allows insertion into a partitioned table for a select list of columns;The same functionality when executed on Hive ORC Partitioned table, fails.

      Reproducing steps:
      create table source (a int, b int);

      insert into source values(1,1);

      create table target2 (

      x int,

      y int,

      z int)

      PARTITIONED BY (log_date string)

      stored as orc;

      hive>

      > insert into target2

      > select a,b from source;

      FAILED: SemanticException 1:12 Need to specify partition columns because the destination table is partitioned. Error encountered near token 'target2'

      hive>

      > insert into target2 partition (log_date='2017-05-08')

      > select a,b from source;

      FAILED: SemanticException [Error 10044]: Line 1:12 Cannot insert into target table because column number/types are different ''2017-05-08'': Table insclause-0 has 3 columns, but query has 2 columns.

      hive>

      > insert into target2(y,z)

      > select a,b from source;

      FAILED: SemanticException 1:12 Need to specify partition columns because the destination table is partitioned. Error encountered near token 'target2'

      hive>

      > insert into target2(y,z) partition (log_date='2017-05-08')

      > select a,b from source;

      NoViableAltException(192@[])

      at org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:41226)

      at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:40421)

      at org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:40291)

      at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1598)

      at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1117)

      at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202)

      at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)

      at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:426)

      at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:314)

      at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1164)

      at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1212)

      at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1101)

      at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1091)

      at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:216)

      at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:168)

      at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:379)

      at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:739)

      at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684)

      at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:624)

      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.hadoop.util.RunJar.run(RunJar.java:221)

      at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

      FAILED: ParseException line 1:25 cannot recognize input near 'partition' '(' 'log_date' in statement

      hive> insert into target2 partition (log_date='2017-05-08')

      > select a,b from source;

      FAILED: SemanticException [Error 10044]: Line 1:12 Cannot insert into target table because column number/types are different ''2017-05-08'': Table insclause-0 has 3 columns, but query has 2 columns.

      hive>

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              banarasi Badrinath Narasimhan
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: