kasakrisz opened a new pull request #1446:
URL: https://github.com/apache/hive/pull/1446


   ### What changes were proposed in this pull request?
   Add a check for duplicated struct field identifiers and throw 
SemanticException with customized error message when found.
   
   ### Why are the changes needed?
   Creating a table with a struct type column with duplicate field identifier 
and inserting records is allowed but later when querying from the table we 
cannot distinguish between the attributes of the struct has the same identifier.
   In some cases (depending on table serde format) the query may fails. See 
jira for details.
   
   ### Does this PR introduce _any_ user-facing change?
   Introduce new error code and message. Example:
   ```
   FAILED: SemanticException [Error 10423]: Struct field is not unique: id
   ```
   
   ### How was this patch tested?
   1. Create new negative test:
   ```
   mvn test -Dtest.output.overwrite -DskipSparkTests 
-Dtest=TestNegativeCliDriver -Dqfile=struct_field_uniqueness.q -pl itests/qtest 
-Pitests
   ```
   
   2. Reproduce query failure
   ```
   CREATE TABLE person
   (
       `id`      int,
       `address` struct<number:int,street:string,number:int>
   )
       ROW FORMAT SERDE
           'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
       STORED AS INPUTFORMAT
           'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
           OUTPUTFORMAT
               'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat';
   
   INSERT INTO person
   VALUES (1, named_struct('number', 61, 'street', 'Terrasse', 'number', 62));
   INSERT INTO person
   VALUES (2, named_struct('number', 51, 'street', 'Terrasse', 'number', 52));
   
   SELECT address.number FROM person;
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org
For additional commands, e-mail: gitbox-h...@hive.apache.org

Reply via email to