[ https://issues.apache.org/jira/browse/HIVE-11716?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15123118#comment-15123118 ]
Wei Zheng commented on HIVE-11716: ---------------------------------- [~alangates] You're right. The mismatch is caused by my change, but in a good way :) Basically the test result mismatch is like this: {code} < FAILED: SemanticException [Error 10297]: Attempt to do update or delete on table default.acid_notbucketed that does not use an AcidOutputFormat or is not bucketed --- > FAILED: SemanticException [Error 10297]: Attempt to do update or delete on > table acid_notbucketed that does not use an AcidOutputFormat or is not > bucketed {code} Without patch the error was thrown by SemanticAnalyzer#checkAcidConstraints, there we have {code} if (table.getNumBuckets() < 1) { throw new SemanticException(ErrorMsg.ACID_OP_ON_NONACID_TABLE, table.getTableName()); } {code} where table.getTableName() just returns tablename acid_notbucketed. With patch the error was caught earlier and thrown by SemanticAnalyzer#getMetaData() {code} // 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 // isAcidTable above also checks for whether we are using an acid compliant // transaction manager. But that 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, tab_name); } {code} where tab_name is default.acid_notbucketed Here isAcid flag was true without patch, which is wrong, because isAcidTable() has a bug as it only checked 'transactional'='true', but didn't check whether the table is bucketed or whether it's ORC. The patch fixed isAcidTable(), so isAcid is false now, thus we can trigger this logic. > Reading ACID table from non-acid session should raise an error > -------------------------------------------------------------- > > Key: HIVE-11716 > URL: https://issues.apache.org/jira/browse/HIVE-11716 > Project: Hive > Issue Type: Bug > Components: Transactions > Affects Versions: 1.0.0 > Reporter: Eugene Koifman > Assignee: Wei Zheng > Priority: Critical > Attachments: HIVE-11716.1.patch, HIVE-11716.2.patch, > HIVE-11716.3.patch, HIVE-11716.4.patch > > > if someone performs a delete using DbTxnManager and than starts a new session > with DummyTxnManager, then previously successfully deleted data will show up. > Once the logic to identify all acid tables being read is there, make sure that > Driver.recordValidTxns() called iff there ACID tables in the query. > We should also not allow writing to ACID table from non-acid session -- This message was sent by Atlassian JIRA (v6.3.4#6332)