[ https://issues.apache.org/jira/browse/HIVE-27198?focusedWorklogId=859978&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-859978 ]
ASF GitHub Bot logged work on HIVE-27198: ----------------------------------------- Author: ASF GitHub Bot Created on: 02/May/23 07:21 Start Date: 02/May/23 07:21 Worklog Time Spent: 10m Work Description: deniskuzZ commented on code in PR #4174: URL: https://github.com/apache/hive/pull/4174#discussion_r1182178182 ########## standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java: ########## @@ -888,35 +887,13 @@ public void cleanEmptyAbortedAndCommittedTxns() throws MetaException { */ long lowWaterMark = getOpenTxnTimeoutLowBoundaryTxnId(dbConn); - String s = "SELECT \"TXN_ID\" FROM \"TXNS\" WHERE " + + String s = "DELETE FROM \"TXNS\" WHERE " + Review Comment: what do you mean? they only var here is `lowWaterMark` that should be passed to prepared statement Issue Time Tracking ------------------- Worklog Id: (was: 859978) Time Spent: 2h (was: 1h 50m) > Delete directly aborted transactions instead of select and loading ids > ---------------------------------------------------------------------- > > Key: HIVE-27198 > URL: https://issues.apache.org/jira/browse/HIVE-27198 > Project: Hive > Issue Type: Improvement > Reporter: Mahesh Raju Somalaraju > Assignee: Mahesh Raju Somalaraju > Priority: Major > Labels: pull-request-available > Time Spent: 2h > Remaining Estimate: 0h > > in cleaning the aborted transaction , we can directly deletes the txns > instead of selecting and process. > method name: > cleanEmptyAbortedAndCommittedTxns > Code: > String s = "SELECT \"TXN_ID\" FROM \"TXNS\" WHERE " + > "\"TXN_ID\" NOT IN (SELECT \"TC_TXNID\" FROM \"TXN_COMPONENTS\") AND " + > " (\"TXN_STATE\" = " + TxnStatus.ABORTED + " OR \"TXN_STATE\" = " + > TxnStatus.COMMITTED + ") AND " > + " \"TXN_ID\" < " + lowWaterMark; > > proposed code: > String s = "DELETE \"TXN_ID\" FROM \"TXNS\" WHERE " + > "\"TXN_ID\" NOT IN (SELECT \"TC_TXNID\" FROM \"TXN_COMPONENTS\") AND " + > " (\"TXN_STATE\" = " + TxnStatus.ABORTED + " OR \"TXN_STATE\" = " + > TxnStatus.COMMITTED + ") AND " > + " \"TXN_ID\" < " + lowWaterMark; > > the select needs to be eliminated and the delete should work with the where > clause instead of the built in clause > we can see no reason for loading the ids into memory and then generate a huge > sql > > Bathcing is also not necessary here, we can deletes the records directly -- This message was sent by Atlassian Jira (v8.20.10#820010)