This is an automated email from the ASF dual-hosted git repository.

emaynard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new d3b24d2d1 JDBC: Optimize writeEntity calls (#1496)
d3b24d2d1 is described below

commit d3b24d2d1ce04d850f345ff947eb46093f663885
Author: Prashant Singh <35593236+singhpk...@users.noreply.github.com>
AuthorDate: Wed Apr 30 14:42:47 2025 -0700

    JDBC: Optimize writeEntity calls (#1496)
    
    * Remove transaction from atomic writes
    
    * remove if-else
---
 .../relational/jdbc/JdbcBasePersistenceImpl.java     | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/extension/persistence/relational-jdbc/src/main/java/org/apache/polaris/extension/persistence/relational/jdbc/JdbcBasePersistenceImpl.java
 
b/extension/persistence/relational-jdbc/src/main/java/org/apache/polaris/extension/persistence/relational/jdbc/JdbcBasePersistenceImpl.java
index 5ffce813f..f58101b91 100644
--- 
a/extension/persistence/relational-jdbc/src/main/java/org/apache/polaris/extension/persistence/relational/jdbc/JdbcBasePersistenceImpl.java
+++ 
b/extension/persistence/relational-jdbc/src/main/java/org/apache/polaris/extension/persistence/relational/jdbc/JdbcBasePersistenceImpl.java
@@ -93,11 +93,7 @@ public class JdbcBasePersistenceImpl implements 
BasePersistence, IntegrationPers
       boolean nameOrParentChanged,
       PolarisBaseEntity originalEntity) {
     try {
-      datasourceOperations.runWithinTransaction(
-          statement -> {
-            persistEntity(callCtx, entity, originalEntity, statement);
-            return true;
-          });
+      persistEntity(callCtx, entity, originalEntity, 
datasourceOperations::executeUpdate);
     } catch (SQLException e) {
       throw new RuntimeException("Error persisting entity", e);
     }
@@ -115,7 +111,6 @@ public class JdbcBasePersistenceImpl implements 
BasePersistence, IntegrationPers
               PolarisBaseEntity entity = entities.get(i);
               PolarisBaseEntity originalEntity =
                   originalEntities != null ? originalEntities.get(i) : null;
-
               // first, check if the entity has already been created, in which 
case we will simply
               // return it.
               PolarisBaseEntity entityFound =
@@ -127,7 +122,7 @@ public class JdbcBasePersistenceImpl implements 
BasePersistence, IntegrationPers
                 // already been updated after the creation.
                 continue;
               }
-              persistEntity(callCtx, entity, originalEntity, statement);
+              persistEntity(callCtx, entity, originalEntity, 
statement::executeUpdate);
             }
             return true;
           });
@@ -143,12 +138,12 @@ public class JdbcBasePersistenceImpl implements 
BasePersistence, IntegrationPers
       @Nonnull PolarisCallContext callCtx,
       @Nonnull PolarisBaseEntity entity,
       PolarisBaseEntity originalEntity,
-      Statement statement)
+      QueryAction queryAction)
       throws SQLException {
     ModelEntity modelEntity = ModelEntity.fromEntity(entity);
     if (originalEntity == null) {
       try {
-        statement.executeUpdate(generateInsertQuery(modelEntity, realmId));
+        queryAction.apply(generateInsertQuery(modelEntity, realmId));
       } catch (SQLException e) {
         if (datasourceOperations.isConstraintViolation(e)) {
           PolarisBaseEntity existingEntity =
@@ -176,7 +171,7 @@ public class JdbcBasePersistenceImpl implements 
BasePersistence, IntegrationPers
               "realm_id",
               realmId);
       try {
-        int rowsUpdated = 
statement.executeUpdate(generateUpdateQuery(modelEntity, params));
+        int rowsUpdated = queryAction.apply(generateUpdateQuery(modelEntity, 
params));
         if (rowsUpdated == 0) {
           throw new RetryOnConcurrencyException(
               "Entity '%s' id '%s' concurrently modified; expected version %s",
@@ -923,4 +918,9 @@ public class JdbcBasePersistenceImpl implements 
BasePersistence, IntegrationPers
         BaseMetaStoreManager.extractStorageConfiguration(callContext, entity);
     return 
storageIntegrationProvider.getStorageIntegrationForConfig(storageConfig);
   }
+
+  @FunctionalInterface
+  private interface QueryAction {
+    Integer apply(String query) throws SQLException;
+  }
 }

Reply via email to