[ https://issues.apache.org/jira/browse/HIVE-26882?focusedWorklogId=837412&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-837412 ]
ASF GitHub Bot logged work on HIVE-26882: ----------------------------------------- Author: ASF GitHub Bot Created on: 06/Jan/23 06:03 Start Date: 06/Jan/23 06:03 Worklog Time Spent: 10m Work Description: pvary commented on code in PR #3888: URL: https://github.com/apache/hive/pull/3888#discussion_r1063145114 ########## standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/HiveAlterHandler.java: ########## @@ -187,6 +187,16 @@ public void alterTable(RawStore msdb, Warehouse wh, String catName, String dbnam TableName.getQualified(catName, dbname, name) + " doesn't exist"); } + String expectedKey = environmentContext != null && environmentContext.getProperties() != null ? + environmentContext.getProperties().get(hive_metastoreConstants.EXPECTED_PARAMETER_KEY) : null; + String expectedValue = environmentContext != null && environmentContext.getProperties() != null ? + environmentContext.getProperties().get(hive_metastoreConstants.EXPECTED_PARAMETER_VALUE) : null; + if (expectedKey != null && expectedValue != null + && !expectedValue.equals(oldt.getParameters().get(expectedKey))) { + throw new MetaException("The table has been modified. The parameter value for key '" + expectedKey + "' is '" Review Comment: Users does not have to do anything. We set the isolation level per transaction automatically from the code. Similarly as we do in the TxnHandler methods where the default isolation level is not enough. Issue Time Tracking ------------------- Worklog Id: (was: 837412) Time Spent: 2h 20m (was: 2h 10m) > Allow transactional check of Table parameter before altering the Table > ---------------------------------------------------------------------- > > Key: HIVE-26882 > URL: https://issues.apache.org/jira/browse/HIVE-26882 > Project: Hive > Issue Type: Improvement > Components: Standalone Metastore > Reporter: Peter Vary > Priority: Major > Labels: pull-request-available > Time Spent: 2h 20m > Remaining Estimate: 0h > > We should add the possibility to transactionally check if a Table parameter > is changed before altering the table in the HMS. > This would provide an alternative, less error-prone and faster way to commit > an Iceberg table, as the Iceberg table currently needs to: > - Create an exclusive lock > - Get the table metadata to check if the current snapshot is not changed > - Update the table metadata > - Release the lock > After the change these 4 HMS calls could be substituted with a single alter > table call. > Also we could avoid cases where the locks are left hanging by failed processes -- This message was sent by Atlassian Jira (v8.20.10#820010)