Skip to content

Commit 63460ee

Browse files
committed
Add update query
1 parent 03472a8 commit 63460ee

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

extension/persistence/relational-jdbc/src/main/java/org/apache/polaris/extension/persistence/relational/jdbc/JdbcBasePersistenceImpl.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,9 @@ public void writeToPolicyMappingRecords(
716716
Preconditions.checkArgument(
717717
policyType != null, "Invalid policy type code: %s", record.getPolicyTypeCode());
718718

719+
String query =
720+
generateInsertQuery(
721+
ModelPolicyMappingRecord.fromPolicyMappingRecord(record), realmId);
719722
if (policyType.isInheritable()) {
720723
List<PolarisPolicyMappingRecord> existingRecords =
721724
loadPoliciesOnTargetByType(
@@ -724,18 +727,31 @@ public void writeToPolicyMappingRecords(
724727
record.getTargetId(),
725728
record.getPolicyTypeCode());
726729
if (existingRecords.size() > 1) {
727-
throw new PolicyMappingAlreadyExistsException(existingRecords.get(0));
730+
throw new PolicyMappingAlreadyExistsException(existingRecords.getFirst());
728731
} else if (existingRecords.size() == 1) {
729-
PolarisPolicyMappingRecord existingRecord = existingRecords.get(0);
732+
PolarisPolicyMappingRecord existingRecord = existingRecords.getFirst();
730733
if (existingRecord.getPolicyCatalogId() != record.getPolicyCatalogId()
731734
|| existingRecord.getPolicyId() != record.getPolicyId()) {
732735
throw new PolicyMappingAlreadyExistsException(existingRecord);
733736
}
737+
Map<String, Object> updateClause =
738+
Map.of(
739+
"target_catalog_id",
740+
record.getTargetCatalogId(),
741+
"target_id",
742+
record.getTargetId(),
743+
"policy_type_code",
744+
record.getPolicyTypeCode(),
745+
"policy_id",
746+
record.getPolicyId(),
747+
"policy_catalog_id",
748+
record.getPolicyCatalogId(),
749+
"realm_id",
750+
realmId);
751+
query =
752+
generateUpdateQuery(
753+
ModelPolicyMappingRecord.fromPolicyMappingRecord(record), updateClause);
734754
}
735-
736-
ModelPolicyMappingRecord modelPolicyMappingRecord =
737-
ModelPolicyMappingRecord.fromPolicyMappingRecord(record);
738-
String query = generateInsertQuery(modelPolicyMappingRecord, realmId);
739755
statement.executeUpdate(query);
740756
}
741757
return true;

extension/persistence/relational-jdbc/src/main/resources/h2/schema-v1.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,4 @@ CREATE TABLE IF NOT EXISTS policy_mapping_record (
104104
PRIMARY KEY (realm_id, target_catalog_id, target_id, policy_type_code, policy_catalog_id, policy_id)
105105
);
106106

107-
CREATE INDEX IF NOT EXISTS idx_policy_mapping_record ON policy_mapping_record (realm_id, policy_catalog_id, policy_id, target_catalog_id, target_id);
107+
CREATE INDEX IF NOT EXISTS idx_policy_mapping_record ON policy_mapping_record (realm_id, target_catalog_id, target_id, policy_type_code, policy_catalog_id, policy_id);

extension/persistence/relational-jdbc/src/main/resources/postgres/schema-v1.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,4 @@ CREATE TABLE IF NOT EXISTS policy_mapping_record (
104104
PRIMARY KEY (realm_id, target_catalog_id, target_id, policy_type_code, policy_catalog_id, policy_id)
105105
);
106106

107-
CREATE INDEX IF NOT EXISTS idx_policy_mapping_record ON policy_mapping_record (realm_id, policy_catalog_id, policy_id, target_catalog_id, target_id);
107+
CREATE INDEX IF NOT EXISTS idx_policy_mapping_record ON policy_mapping_record (realm_id, target_catalog_id, target_id, policy_type_code, policy_catalog_id, policy_id);

0 commit comments

Comments
 (0)