Class JdbcBasePersistenceImpl

java.lang.Object
org.apache.polaris.persistence.relational.jdbc.JdbcBasePersistenceImpl
All Implemented Interfaces:
org.apache.polaris.core.persistence.BasePersistence, org.apache.polaris.core.persistence.IntegrationPersistence, org.apache.polaris.core.policy.PolicyMappingPersistence

public class JdbcBasePersistenceImpl extends Object implements org.apache.polaris.core.persistence.BasePersistence, org.apache.polaris.core.persistence.IntegrationPersistence
  • Constructor Summary

    Constructors
    Constructor
    Description
    JdbcBasePersistenceImpl(org.apache.polaris.core.PolarisDiagnostics diagnostics, DatasourceOperations databaseOperations, org.apache.polaris.core.persistence.PrincipalSecretsGenerator secretsGenerator, String realmId, int schemaVersion)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    @Nullable org.apache.polaris.core.storage.PolarisStorageIntegration
    createStorageIntegration(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long entityId, org.apache.polaris.core.storage.PolarisStorageConfigurationInfo polarisStorageConfigurationInfo)
     
    void
    deleteAll(@NonNull org.apache.polaris.core.PolarisCallContext callCtx)
     
    void
    deleteAllEntityGrantRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisEntityCore entity, @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord> grantsOnGrantee, @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord> grantsOnSecurable)
     
    void
    deleteAllEntityPolicyMappingRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity, @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> mappingOnTarget, @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> mappingOnPolicy)
     
    void
    deleteEntity(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity)
     
    void
    deleteFromGrantRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisGrantRecord grantRec)
     
    void
    deleteFromPolicyMappingRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.policy.PolarisPolicyMappingRecord record)
     
    void
    deletePrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String clientId, long principalId)
     
    long
    generateNewId(@NonNull org.apache.polaris.core.PolarisCallContext callCtx)
     
    @NonNull org.apache.polaris.core.entity.PolarisPrincipalSecrets
    generateNewPrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String principalName, long principalId)
     
    boolean
    hasChildren(@NonNull org.apache.polaris.core.PolarisCallContext callContext, org.apache.polaris.core.entity.PolarisEntityType optionalEntityType, long catalogId, long parentId)
     
    <T extends org.apache.polaris.core.entity.PolarisEntity & org.apache.polaris.core.entity.LocationBasedEntity>
    Optional<Optional<String>>
    hasOverlappingSiblings(@NonNull org.apache.polaris.core.PolarisCallContext callContext, T entity)
    @NonNull org.apache.polaris.core.persistence.pagination.Page<org.apache.polaris.core.entity.EntityNameLookupRecord>
    listEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long parentId, @NonNull org.apache.polaris.core.entity.PolarisEntityType entityType, @NonNull org.apache.polaris.core.entity.PolarisEntitySubType entitySubType, @NonNull org.apache.polaris.core.persistence.pagination.PageToken pageToken)
     
    <T> @NonNull org.apache.polaris.core.persistence.pagination.Page<T>
    listFullEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long parentId, @NonNull org.apache.polaris.core.entity.PolarisEntityType entityType, @NonNull org.apache.polaris.core.entity.PolarisEntitySubType entitySubType, @NonNull Predicate<org.apache.polaris.core.entity.PolarisBaseEntity> entityFilter, @NonNull Function<org.apache.polaris.core.entity.PolarisBaseEntity,T> transformer, @NonNull org.apache.polaris.core.persistence.pagination.PageToken pageToken)
     
    @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord>
    loadAllGrantRecordsOnGrantee(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long granteeCatalogId, long granteeId)
     
    @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord>
    loadAllGrantRecordsOnSecurable(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long securableCatalogId, long securableId)
     
    @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord>
    loadAllPoliciesOnTarget(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long targetCatalogId, long targetId)
     
    @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord>
    loadAllTargetsOnPolicy(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long policyCatalogId, long policyId, int policyTypeCode)
     
    @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord>
    loadPoliciesOnTargetByType(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long targetCatalogId, long targetId, int policyTypeCode)
     
    @Nullable org.apache.polaris.core.entity.PolarisPrincipalSecrets
    loadPrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String clientId)
     
    @NonNull List<org.apache.polaris.core.entity.PolarisBaseEntity>
    lookupEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, List<org.apache.polaris.core.entity.PolarisEntityId> entityIds)
     
    org.apache.polaris.core.entity.PolarisBaseEntity
    lookupEntity(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long entityId, int typeCode)
     
    org.apache.polaris.core.entity.PolarisBaseEntity
    lookupEntityByName(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long parentId, int typeCode, @NonNull String name)
     
    int
    lookupEntityGrantRecordsVersion(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long entityId)
     
    @NonNull List<org.apache.polaris.core.entity.PolarisChangeTrackingVersions>
    lookupEntityVersions(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, List<org.apache.polaris.core.entity.PolarisEntityId> entityIds)
     
    org.apache.polaris.core.entity.PolarisGrantRecord
    lookupGrantRecord(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long securableCatalogId, long securableId, long granteeCatalogId, long granteeId, int privilegeCode)
     
    @Nullable org.apache.polaris.core.policy.PolarisPolicyMappingRecord
    lookupPolicyMappingRecord(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long targetCatalogId, long targetId, int policyTypeCode, long policyCatalogId, long policyId)
     
    void
    persistStorageIntegrationIfNeeded(@NonNull org.apache.polaris.core.PolarisCallContext callContext, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity, @Nullable org.apache.polaris.core.storage.PolarisStorageIntegration storageIntegration)
     
    @Nullable org.apache.polaris.core.entity.PolarisPrincipalSecrets
    rotatePrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String clientId, long principalId, boolean reset, @NonNull String oldSecretHash)
     
    @Nullable org.apache.polaris.core.entity.PolarisPrincipalSecrets
    storePrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long principalId, @NonNull String resolvedClientId, String customClientSecret)
     
    void
    writeEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull List<org.apache.polaris.core.entity.PolarisBaseEntity> entities, List<org.apache.polaris.core.entity.PolarisBaseEntity> originalEntities)
     
    void
    writeEntity(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity, boolean nameOrParentChanged, org.apache.polaris.core.entity.PolarisBaseEntity originalEntity)
     
    void
    writeEvents(@NonNull List<org.apache.polaris.core.entity.EventEntity> events)
     
    void
    writeToGrantRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisGrantRecord grantRec)
     
    void
    writeToPolicyMappingRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.policy.PolarisPolicyMappingRecord record)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.polaris.core.persistence.BasePersistence

    detach, lookupEntityIdAndSubTypeByName
  • Constructor Details

    • JdbcBasePersistenceImpl

      public JdbcBasePersistenceImpl(org.apache.polaris.core.PolarisDiagnostics diagnostics, DatasourceOperations databaseOperations, org.apache.polaris.core.persistence.PrincipalSecretsGenerator secretsGenerator, String realmId, int schemaVersion)
  • Method Details

    • generateNewId

      public long generateNewId(@NonNull org.apache.polaris.core.PolarisCallContext callCtx)
      Specified by:
      generateNewId in interface org.apache.polaris.core.persistence.BasePersistence
    • writeEntity

      public void writeEntity(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity, boolean nameOrParentChanged, org.apache.polaris.core.entity.PolarisBaseEntity originalEntity)
      Specified by:
      writeEntity in interface org.apache.polaris.core.persistence.BasePersistence
    • writeEntities

      public void writeEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull List<org.apache.polaris.core.entity.PolarisBaseEntity> entities, List<org.apache.polaris.core.entity.PolarisBaseEntity> originalEntities)
      Specified by:
      writeEntities in interface org.apache.polaris.core.persistence.BasePersistence
    • writeToGrantRecords

      public void writeToGrantRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisGrantRecord grantRec)
      Specified by:
      writeToGrantRecords in interface org.apache.polaris.core.persistence.BasePersistence
    • writeEvents

      public void writeEvents(@NonNull List<org.apache.polaris.core.entity.EventEntity> events)
      Specified by:
      writeEvents in interface org.apache.polaris.core.persistence.BasePersistence
    • deleteEntity

      public void deleteEntity(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity)
      Specified by:
      deleteEntity in interface org.apache.polaris.core.persistence.BasePersistence
    • deleteFromGrantRecords

      public void deleteFromGrantRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisGrantRecord grantRec)
      Specified by:
      deleteFromGrantRecords in interface org.apache.polaris.core.persistence.BasePersistence
    • deleteAllEntityGrantRecords

      public void deleteAllEntityGrantRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisEntityCore entity, @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord> grantsOnGrantee, @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord> grantsOnSecurable)
      Specified by:
      deleteAllEntityGrantRecords in interface org.apache.polaris.core.persistence.BasePersistence
    • deleteAll

      public void deleteAll(@NonNull org.apache.polaris.core.PolarisCallContext callCtx)
      Specified by:
      deleteAll in interface org.apache.polaris.core.persistence.BasePersistence
    • lookupEntity

      public org.apache.polaris.core.entity.PolarisBaseEntity lookupEntity(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long entityId, int typeCode)
      Specified by:
      lookupEntity in interface org.apache.polaris.core.persistence.BasePersistence
    • lookupEntityByName

      public org.apache.polaris.core.entity.PolarisBaseEntity lookupEntityByName(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long parentId, int typeCode, @NonNull String name)
      Specified by:
      lookupEntityByName in interface org.apache.polaris.core.persistence.BasePersistence
    • lookupEntities

      public @NonNull List<org.apache.polaris.core.entity.PolarisBaseEntity> lookupEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, List<org.apache.polaris.core.entity.PolarisEntityId> entityIds)
      Specified by:
      lookupEntities in interface org.apache.polaris.core.persistence.BasePersistence
    • lookupEntityVersions

      public @NonNull List<org.apache.polaris.core.entity.PolarisChangeTrackingVersions> lookupEntityVersions(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, List<org.apache.polaris.core.entity.PolarisEntityId> entityIds)
      Specified by:
      lookupEntityVersions in interface org.apache.polaris.core.persistence.BasePersistence
    • listEntities

      public @NonNull org.apache.polaris.core.persistence.pagination.Page<org.apache.polaris.core.entity.EntityNameLookupRecord> listEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long parentId, @NonNull org.apache.polaris.core.entity.PolarisEntityType entityType, @NonNull org.apache.polaris.core.entity.PolarisEntitySubType entitySubType, @NonNull org.apache.polaris.core.persistence.pagination.PageToken pageToken)
      Specified by:
      listEntities in interface org.apache.polaris.core.persistence.BasePersistence
    • listFullEntities

      public <T> @NonNull org.apache.polaris.core.persistence.pagination.Page<T> listFullEntities(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long parentId, @NonNull org.apache.polaris.core.entity.PolarisEntityType entityType, @NonNull org.apache.polaris.core.entity.PolarisEntitySubType entitySubType, @NonNull Predicate<org.apache.polaris.core.entity.PolarisBaseEntity> entityFilter, @NonNull Function<org.apache.polaris.core.entity.PolarisBaseEntity,T> transformer, @NonNull org.apache.polaris.core.persistence.pagination.PageToken pageToken)
      Specified by:
      listFullEntities in interface org.apache.polaris.core.persistence.BasePersistence
    • lookupEntityGrantRecordsVersion

      public int lookupEntityGrantRecordsVersion(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long entityId)
      Specified by:
      lookupEntityGrantRecordsVersion in interface org.apache.polaris.core.persistence.BasePersistence
    • lookupGrantRecord

      public org.apache.polaris.core.entity.PolarisGrantRecord lookupGrantRecord(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long securableCatalogId, long securableId, long granteeCatalogId, long granteeId, int privilegeCode)
      Specified by:
      lookupGrantRecord in interface org.apache.polaris.core.persistence.BasePersistence
    • loadAllGrantRecordsOnSecurable

      public @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord> loadAllGrantRecordsOnSecurable(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long securableCatalogId, long securableId)
      Specified by:
      loadAllGrantRecordsOnSecurable in interface org.apache.polaris.core.persistence.BasePersistence
    • loadAllGrantRecordsOnGrantee

      public @NonNull List<org.apache.polaris.core.entity.PolarisGrantRecord> loadAllGrantRecordsOnGrantee(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long granteeCatalogId, long granteeId)
      Specified by:
      loadAllGrantRecordsOnGrantee in interface org.apache.polaris.core.persistence.BasePersistence
    • hasChildren

      public boolean hasChildren(@NonNull org.apache.polaris.core.PolarisCallContext callContext, org.apache.polaris.core.entity.PolarisEntityType optionalEntityType, long catalogId, long parentId)
      Specified by:
      hasChildren in interface org.apache.polaris.core.persistence.BasePersistence
    • hasOverlappingSiblings

      public <T extends org.apache.polaris.core.entity.PolarisEntity & org.apache.polaris.core.entity.LocationBasedEntity> Optional<Optional<String>> hasOverlappingSiblings(@NonNull org.apache.polaris.core.PolarisCallContext callContext, T entity)
      Specified by:
      hasOverlappingSiblings in interface org.apache.polaris.core.persistence.BasePersistence
    • loadPrincipalSecrets

      public @Nullable org.apache.polaris.core.entity.PolarisPrincipalSecrets loadPrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String clientId)
      Specified by:
      loadPrincipalSecrets in interface org.apache.polaris.core.persistence.IntegrationPersistence
    • generateNewPrincipalSecrets

      public @NonNull org.apache.polaris.core.entity.PolarisPrincipalSecrets generateNewPrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String principalName, long principalId)
      Specified by:
      generateNewPrincipalSecrets in interface org.apache.polaris.core.persistence.IntegrationPersistence
    • storePrincipalSecrets

      public @Nullable org.apache.polaris.core.entity.PolarisPrincipalSecrets storePrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long principalId, @NonNull String resolvedClientId, String customClientSecret)
      Specified by:
      storePrincipalSecrets in interface org.apache.polaris.core.persistence.IntegrationPersistence
    • rotatePrincipalSecrets

      public @Nullable org.apache.polaris.core.entity.PolarisPrincipalSecrets rotatePrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String clientId, long principalId, boolean reset, @NonNull String oldSecretHash)
      Specified by:
      rotatePrincipalSecrets in interface org.apache.polaris.core.persistence.IntegrationPersistence
    • deletePrincipalSecrets

      public void deletePrincipalSecrets(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull String clientId, long principalId)
      Specified by:
      deletePrincipalSecrets in interface org.apache.polaris.core.persistence.IntegrationPersistence
    • writeToPolicyMappingRecords

      public void writeToPolicyMappingRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.policy.PolarisPolicyMappingRecord record)
      Specified by:
      writeToPolicyMappingRecords in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • deleteFromPolicyMappingRecords

      public void deleteFromPolicyMappingRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.policy.PolarisPolicyMappingRecord record)
      Specified by:
      deleteFromPolicyMappingRecords in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • deleteAllEntityPolicyMappingRecords

      public void deleteAllEntityPolicyMappingRecords(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity, @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> mappingOnTarget, @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> mappingOnPolicy)
      Specified by:
      deleteAllEntityPolicyMappingRecords in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • lookupPolicyMappingRecord

      public @Nullable org.apache.polaris.core.policy.PolarisPolicyMappingRecord lookupPolicyMappingRecord(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long targetCatalogId, long targetId, int policyTypeCode, long policyCatalogId, long policyId)
      Specified by:
      lookupPolicyMappingRecord in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • loadPoliciesOnTargetByType

      public @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> loadPoliciesOnTargetByType(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long targetCatalogId, long targetId, int policyTypeCode)
      Specified by:
      loadPoliciesOnTargetByType in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • loadAllPoliciesOnTarget

      public @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> loadAllPoliciesOnTarget(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long targetCatalogId, long targetId)
      Specified by:
      loadAllPoliciesOnTarget in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • loadAllTargetsOnPolicy

      public @NonNull List<org.apache.polaris.core.policy.PolarisPolicyMappingRecord> loadAllTargetsOnPolicy(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long policyCatalogId, long policyId, int policyTypeCode)
      Specified by:
      loadAllTargetsOnPolicy in interface org.apache.polaris.core.policy.PolicyMappingPersistence
    • createStorageIntegration

      public @Nullable org.apache.polaris.core.storage.PolarisStorageIntegration createStorageIntegration(@NonNull org.apache.polaris.core.PolarisCallContext callCtx, long catalogId, long entityId, org.apache.polaris.core.storage.PolarisStorageConfigurationInfo polarisStorageConfigurationInfo)
      Specified by:
      createStorageIntegration in interface org.apache.polaris.core.persistence.IntegrationPersistence
    • persistStorageIntegrationIfNeeded

      public void persistStorageIntegrationIfNeeded(@NonNull org.apache.polaris.core.PolarisCallContext callContext, @NonNull org.apache.polaris.core.entity.PolarisBaseEntity entity, @Nullable org.apache.polaris.core.storage.PolarisStorageIntegration storageIntegration)
      Specified by:
      persistStorageIntegrationIfNeeded in interface org.apache.polaris.core.persistence.IntegrationPersistence