[
https://issues.apache.org/jira/browse/HIVE-27198?focusedWorklogId=860224&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-860224
]
ASF GitHub Bot logged work on HIVE-27198:
-----------------------------------------
Author: ASF GitHub Bot
Created on: 03/May/23 07:23
Start Date: 03/May/23 07:23
Worklog Time Spent: 10m
Work Description: deniskuzZ commented on code in PR #4174:
URL: https://github.com/apache/hive/pull/4174#discussion_r1183324488
##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionTxnHandler.java:
##########
@@ -872,51 +877,20 @@ public void removeDuplicateCompletedTxnComponents()
throws MetaException {
@RetrySemantics.SafeToRetry
public void cleanEmptyAbortedAndCommittedTxns() throws MetaException {
LOG.info("Start to clean empty aborted or committed TXNS");
- try {
- Connection dbConn = null;
- Statement stmt = null;
- ResultSet rs = null;
- try {
+ try (Connection dbConn = getDbConn(Connection.TRANSACTION_READ_COMMITTED,
connPoolCompaction)) {
+ try (Statement stmt = dbConn.createStatement()) {
Review Comment:
please use prepared statement
Issue Time Tracking
-------------------
Worklog Id: (was: 860224)
Time Spent: 2h 40m (was: 2.5h)
> 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 40m
> 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)