Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Duplicate
-
1.2.0
-
None
-
None
Description
The following code in
in SemanticAnalyzer.getMetaData(QB qb, ReadEntity parentInput)
// 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); }
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
Attachments
Attachments
Issue Links
- blocks
-
HIVE-10924 add support for MERGE statement
- Resolved
- duplicates
-
HIVE-14943 Base Implementation
- Closed