hive-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eugene Koifman (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HIVE-14883) Checks for Acid operation/bucket table write are in the wrong place
Date Tue, 04 Oct 2016 17:27:20 GMT

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

Eugene Koifman edited comment on HIVE-14883 at 10/4/16 5:27 PM:
----------------------------------------------------------------

[~prasanth_j] Could you review please

The patch removes ErrorMsg.INSERT_INTO_BUCKETIZED_TABLE error altogether since there is no
reason to block writes to bucketed tables in 2.0+ and it wasn't checking it in the right place
anyway so it had no useful effect.


was (Author: ekoifman):
[~prasanth_j] Could you review please

The patch removes ErrorMsg.INSERT_INTO_BUCKETIZED_TABLE error altogether since there is no
reason to block writes to bucketed tables in 2.0+

> 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.3.patch, HIVE-14883.4.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)

Mime
View raw message