[ 
https://issues.apache.org/jira/browse/HIVE-14883?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eugene Koifman updated HIVE-14883:
----------------------------------
    Status: Patch Available  (was: Open)

> Checks for Acid operation/bucket table write are in the wrong place
> -------------------------------------------------------------------
>
>                 Key: HIVE-14883
>                 URL: https://issues.apache.org/jira/browse/HIVE-14883
>             Project: Hive
>          Issue Type: Bug
>          Components: Query Planning, Transactions
>    Affects Versions: 1.2.0
>            Reporter: Eugene Koifman
>            Assignee: Eugene Koifman
>             Fix For: 2.2.0
>
>         Attachments: HIVE-14883.2.patch, HIVE-14883.patch
>
>
> The following code in 
>  in SemanticAnalyzer.getMetaData(QB qb, ReadEntity parentInput) 
> {noformat}
>       // Disallow INSERT INTO on bucketized tables
>       boolean isAcid = AcidUtils.isAcidTable(tab);
>       boolean isTableWrittenTo = 
> qb.getParseInfo().isInsertIntoTable(tab.getDbName(), tab.getTableName());
>       if (isTableWrittenTo &&
>           tab.getNumBuckets() > 0 && !isAcid) {
>         throw new SemanticException(ErrorMsg.INSERT_INTO_BUCKETIZED_TABLE.
>             getMsg("Table: " + tabName));
>       }
>       // Disallow update and delete on non-acid tables
>       if ((updating() || deleting()) && !isAcid && isTableWrittenTo) {
>         //isTableWrittenTo: delete from acidTbl where a in (select id from 
> nonAcidTable)
>         //so only assert this if we are actually writing to this table
>         // Whether we are using an acid compliant transaction manager has 
> already been caught in
>         // UpdateDeleteSemanticAnalyzer, so if we are updating or deleting 
> and getting nonAcid
>         // here, it means the table itself doesn't support it.
>         throw new SemanticException(ErrorMsg.ACID_OP_ON_NONACID_TABLE, 
> tabName);
>       }
> {noformat}
> is done in the loop "    for (String alias : tabAliases) {" which is over 
> tables being read.
> Should be done in "    for (String name : qbp.getClauseNamesForDest()) {" loop



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

Reply via email to