Class PostgresAdapter
- java.lang.Object
-
- org.linuxforhealth.fhir.database.utils.common.CommonDatabaseAdapter
-
- org.linuxforhealth.fhir.database.utils.postgres.PostgresAdapter
-
- All Implemented Interfaces:
IDatabaseAdapter,IDatabaseTypeAdapter
- Direct Known Subclasses:
CitusAdapter
public class PostgresAdapter extends CommonDatabaseAdapter
A PostgreSql database target
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classPostgresAdapter.MessageKey
-
Field Summary
Fields Modifier and Type Field Description protected static booleanUSE_SCHEMA_PREFIX-
Fields inherited from class org.linuxforhealth.fhir.database.utils.common.CommonDatabaseAdapter
connectionProvider, target
-
-
Constructor Summary
Constructors Constructor Description PostgresAdapter()PostgresAdapter(IConnectionProvider cp)PostgresAdapter(IDatabaseTarget tgt)Public constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidalterTableColumnIdentityCache(java.lang.String schemaName, java.lang.String tableName, java.lang.String columnName, int cache)Change the CACHE value of the named identity generated always columnjava.lang.StringblobClause(long size, int inlineSize)Generate a clause for BLOB (with an inline size if supported)booleancheckCompatibility(java.lang.String adminSchema)checks connectivity to the database and that it is compatiblejava.lang.StringclobClause()voidcreateArrType(java.lang.String schemaName, java.lang.String typeName, java.lang.String valueType, int arraySize)Create ARRAY type used for passing values to stored procedures e.g.: CREATE OR REPLACE TYPE.t_str_values_arr AS .t_str_values ARRAY[256] voidcreateForeignKeyConstraint(java.lang.String constraintName, java.lang.String schemaName, java.lang.String name, java.lang.String targetSchema, java.lang.String targetTable, java.lang.String targetColumnName, java.util.List<java.lang.String> columns, boolean enforced)voidcreateIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns)voidcreateOrReplaceFunction(java.lang.String schemaName, java.lang.String functionName, java.util.function.Supplier<java.lang.String> supplier)creates or replaces the SQL functionvoidcreateOrReplaceProcedure(java.lang.String schemaName, java.lang.String procedureName, java.util.function.Supplier<java.lang.String> supplier)Create the stored procedure using the DDL text provided by the suppliervoidcreateRowType(java.lang.String schemaName, java.lang.String typeName, java.util.List<ColumnBase> columns)Create ROW type used for passing values to stored procedures e.g.:voidcreateSchema(java.lang.String schemaName)Create a database schemavoidcreateSequence(java.lang.String schemaName, java.lang.String sequenceName, long startWith, int cache, int incrementBy)voidcreateTable(java.lang.String schemaName, java.lang.String name, java.util.List<ColumnBase> columns, PrimaryKeyDef primaryKey, IdentityDef identity, java.lang.String tablespaceName, java.util.List<With> withs, java.util.List<CheckConstraint> checkConstraints, DistributionContext distributionContext)Build the create table DDLvoidcreateTablespace(java.lang.String tablespaceName)Create a new tablespace with the given namevoidcreateTablespace(java.lang.String tablespaceName, int extentSizeKB)Create a new tablespace using the given extent sizevoidcreateUniqueIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns, java.util.List<java.lang.String> includeColumns, DistributionContext distributionContext)Create a unique indexvoidcreateUniqueIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns, DistributionContext distributionContext)Create a unique indexvoiddisableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Disable the FK with the given constraint namebooleandoesForeignKeyConstraintExist(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Does the named foreign key constraint existbooleandoesTableExist(java.lang.String schemaName, java.lang.String tableName)Check if the table currently existsjava.lang.StringdoubleClause()Generate a clause for double data typevoiddropForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Drop the FK on the table with the given constraint namevoiddropIndex(java.lang.String schemaName, java.lang.String indexName)Drop the named indexvoiddropPermission(java.lang.String schemaName, java.lang.String permissionName)Drop permission object from the schemavoiddropProcedure(java.lang.String schemaName, java.lang.String procedureName)Drop the given procedurevoiddropSequence(java.lang.String schemaName, java.lang.String sequenceName)voiddropTable(java.lang.String schemaName, java.lang.String tableName)Drop table from the schemavoiddropTablespace(java.lang.String tablespaceName)Drop an existing tablespace, including all of its contentsvoiddropType(java.lang.String schemaName, java.lang.String typeName)Drop the type object from the schemavoiddropVariable(java.lang.String schemaName, java.lang.String variableName)voiddropView(java.lang.String schemaName, java.lang.String viewName)Drop the view from the databasevoidenableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Enable the FK with the given constraint namevoidgrantAllSequenceUsage(java.lang.String schemaName, java.lang.String grantToUser)Grant access to all sequences in the named schemavoidgrantProcedurePrivileges(java.lang.String schemaName, java.lang.String procedureName, java.util.Collection<Privilege> privileges, java.lang.String toUser)Grant the collection of privileges on the named procedure to the uservoidgrantSchemaUsage(java.lang.String schemaName, java.lang.String grantToUser)Grants USAGE on the given schemaName to the given userjava.util.List<SchemaInfoObject>listSchemaObjects(java.lang.String schemaName)List the objects present in the given schemaprotected java.util.List<OrderedColumnDef>prefixTenantColumn(java.lang.String tenantColumnName, java.util.List<OrderedColumnDef> columns)Prefix the tenantColumnName to the list of columns, or do nothing if tenantColumnName is nullvoidrunStatement(IDatabaseStatement stmt)Run the statement using the connectionProvider to obtain a new connection.voidsetIntegrityOff(java.lang.String schemaName, java.lang.String tableName)voidsetIntegrityUnchecked(java.lang.String schemaName, java.lang.String tableName)java.lang.StringtimestampClause(java.lang.Integer precision)Generate a clause for TIMESTAMPjava.lang.StringvarbinaryClause(int size)Generate a clause for binary data typejava.lang.StringvarcharClause(int size)Generate a clause for VARCHARvoidwarnOnce(PostgresAdapter.MessageKey messageKey, java.lang.String msg)Once write each warning message once-
Methods inherited from class org.linuxforhealth.fhir.database.utils.common.CommonDatabaseAdapter
alterSequenceRestartWith, alterTableAddColumn, applyDistributionRules, buildColumns, buildCreateTableStatement, createOrReplaceView, createUniqueConstraint, createView, distributeFunction, dropFunction, getQualifiedName, getTranslator, grantFunctionPrivileges, grantObjectPrivileges, grantSequencePrivileges, grantVariablePrivileges, runStatement, runStatement
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.linuxforhealth.fhir.database.utils.api.IDatabaseAdapter
useSessionVariable
-
Methods inherited from interface org.linuxforhealth.fhir.database.utils.api.IDatabaseTypeAdapter
smallintClause
-
-
-
-
Field Detail
-
USE_SCHEMA_PREFIX
protected static final boolean USE_SCHEMA_PREFIX
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PostgresAdapter
public PostgresAdapter(IDatabaseTarget tgt)
Public constructor- Parameters:
tgt- the target database we want to manage
-
PostgresAdapter
public PostgresAdapter(IConnectionProvider cp)
-
PostgresAdapter
public PostgresAdapter()
-
-
Method Detail
-
warnOnce
public void warnOnce(PostgresAdapter.MessageKey messageKey, java.lang.String msg)
Once write each warning message once- Parameters:
msg-
-
createTable
public void createTable(java.lang.String schemaName, java.lang.String name, java.util.List<ColumnBase> columns, PrimaryKeyDef primaryKey, IdentityDef identity, java.lang.String tablespaceName, java.util.List<With> withs, java.util.List<CheckConstraint> checkConstraints, DistributionContext distributionContext)Description copied from interface:IDatabaseAdapterBuild the create table DDL
-
createUniqueIndex
public void createUniqueIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns, java.util.List<java.lang.String> includeColumns, DistributionContext distributionContext)Description copied from interface:IDatabaseAdapterCreate a unique index- Specified by:
createUniqueIndexin interfaceIDatabaseAdapter- Overrides:
createUniqueIndexin classCommonDatabaseAdapter
-
createRowType
public void createRowType(java.lang.String schemaName, java.lang.String typeName, java.util.List<ColumnBase> columns)Description copied from interface:IDatabaseAdapterCreate ROW type used for passing values to stored procedures e.g.:CREATE OR REPLACE TYPE
.t_str_values AS ROW (parameter_name_id INTEGER, str_value VARCHAR(511 OCTETS), str_value_lcase VARCHAR(511 OCTETS))
-
createArrType
public void createArrType(java.lang.String schemaName, java.lang.String typeName, java.lang.String valueType, int arraySize)Description copied from interface:IDatabaseAdapterCreate ARRAY type used for passing values to stored procedures e.g.: CREATE OR REPLACE TYPE.t_str_values_arr AS .t_str_values ARRAY[256]
-
dropType
public void dropType(java.lang.String schemaName, java.lang.String typeName)Description copied from interface:IDatabaseAdapterDrop the type object from the schema
-
createTablespace
public void createTablespace(java.lang.String tablespaceName)
Description copied from interface:IDatabaseAdapterCreate a new tablespace with the given name
-
dropTablespace
public void dropTablespace(java.lang.String tablespaceName)
Description copied from interface:IDatabaseAdapterDrop an existing tablespace, including all of its contents
-
createTablespace
public void createTablespace(java.lang.String tablespaceName, int extentSizeKB)Description copied from interface:IDatabaseAdapterCreate a new tablespace using the given extent size
-
doesTableExist
public boolean doesTableExist(java.lang.String schemaName, java.lang.String tableName)Description copied from interface:IDatabaseAdapterCheck if the table currently exists- Returns:
-
createSequence
public void createSequence(java.lang.String schemaName, java.lang.String sequenceName, long startWith, int cache, int incrementBy)- Specified by:
createSequencein interfaceIDatabaseAdapter- Overrides:
createSequencein classCommonDatabaseAdapterstartWith- the START WITH value for the sequencecache- the sequence CACHE value
-
varbinaryClause
public java.lang.String varbinaryClause(int size)
Description copied from interface:IDatabaseTypeAdapterGenerate a clause for binary data type- Returns:
-
blobClause
public java.lang.String blobClause(long size, int inlineSize)Description copied from interface:IDatabaseTypeAdapterGenerate a clause for BLOB (with an inline size if supported)- Returns:
-
varcharClause
public java.lang.String varcharClause(int size)
Description copied from interface:IDatabaseTypeAdapterGenerate a clause for VARCHAR- Returns:
-
timestampClause
public java.lang.String timestampClause(java.lang.Integer precision)
Description copied from interface:IDatabaseTypeAdapterGenerate a clause for TIMESTAMP- Returns:
-
doubleClause
public java.lang.String doubleClause()
Description copied from interface:IDatabaseTypeAdapterGenerate a clause for double data type- Returns:
-
clobClause
public java.lang.String clobClause()
-
createForeignKeyConstraint
public void createForeignKeyConstraint(java.lang.String constraintName, java.lang.String schemaName, java.lang.String name, java.lang.String targetSchema, java.lang.String targetTable, java.lang.String targetColumnName, java.util.List<java.lang.String> columns, boolean enforced)- Specified by:
createForeignKeyConstraintin interfaceIDatabaseAdapter- Overrides:
createForeignKeyConstraintin classCommonDatabaseAdapter
-
prefixTenantColumn
protected java.util.List<OrderedColumnDef> prefixTenantColumn(java.lang.String tenantColumnName, java.util.List<OrderedColumnDef> columns)
Description copied from class:CommonDatabaseAdapterPrefix the tenantColumnName to the list of columns, or do nothing if tenantColumnName is null- Overrides:
prefixTenantColumnin classCommonDatabaseAdapter- Returns:
-
runStatement
public void runStatement(IDatabaseStatement stmt)
Description copied from class:CommonDatabaseAdapterRun the statement using the connectionProvider to obtain a new connection. Also, there should be a transaction open on the current thread at this time- Specified by:
runStatementin interfaceIDatabaseAdapter- Overrides:
runStatementin classCommonDatabaseAdapter
-
createUniqueIndex
public void createUniqueIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns, DistributionContext distributionContext)Description copied from interface:IDatabaseAdapterCreate a unique index- Specified by:
createUniqueIndexin interfaceIDatabaseAdapter- Overrides:
createUniqueIndexin classCommonDatabaseAdapter
-
createIndex
public void createIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns)- Specified by:
createIndexin interfaceIDatabaseAdapter- Overrides:
createIndexin classCommonDatabaseAdapter
-
checkCompatibility
public boolean checkCompatibility(java.lang.String adminSchema)
Description copied from interface:IDatabaseAdapterchecks connectivity to the database and that it is compatible- Returns:
-
createSchema
public void createSchema(java.lang.String schemaName)
Description copied from interface:IDatabaseAdapterCreate a database schema
-
createOrReplaceProcedure
public void createOrReplaceProcedure(java.lang.String schemaName, java.lang.String procedureName, java.util.function.Supplier<java.lang.String> supplier)Description copied from interface:IDatabaseAdapterCreate the stored procedure using the DDL text provided by the supplier- Specified by:
createOrReplaceProcedurein interfaceIDatabaseAdapter- Overrides:
createOrReplaceProcedurein classCommonDatabaseAdapter
-
grantProcedurePrivileges
public void grantProcedurePrivileges(java.lang.String schemaName, java.lang.String procedureName, java.util.Collection<Privilege> privileges, java.lang.String toUser)Description copied from interface:IDatabaseAdapterGrant the collection of privileges on the named procedure to the user- Specified by:
grantProcedurePrivilegesin interfaceIDatabaseAdapter- Overrides:
grantProcedurePrivilegesin classCommonDatabaseAdapter
-
dropProcedure
public void dropProcedure(java.lang.String schemaName, java.lang.String procedureName)Description copied from interface:IDatabaseAdapterDrop the given procedure- Specified by:
dropProcedurein interfaceIDatabaseAdapter- Overrides:
dropProcedurein classCommonDatabaseAdapter
-
disableForeignKey
public void disableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Description copied from interface:IDatabaseAdapterDisable the FK with the given constraint name
-
enableForeignKey
public void enableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Description copied from interface:IDatabaseAdapterEnable the FK with the given constraint name
-
doesForeignKeyConstraintExist
public boolean doesForeignKeyConstraintExist(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Description copied from interface:IDatabaseAdapterDoes the named foreign key constraint exist- Returns:
-
setIntegrityOff
public void setIntegrityOff(java.lang.String schemaName, java.lang.String tableName)
-
setIntegrityUnchecked
public void setIntegrityUnchecked(java.lang.String schemaName, java.lang.String tableName)
-
alterTableColumnIdentityCache
public void alterTableColumnIdentityCache(java.lang.String schemaName, java.lang.String tableName, java.lang.String columnName, int cache)Description copied from interface:IDatabaseAdapterChange the CACHE value of the named identity generated always column- Specified by:
alterTableColumnIdentityCachein interfaceIDatabaseAdapter- Overrides:
alterTableColumnIdentityCachein classCommonDatabaseAdapter
-
dropPermission
public void dropPermission(java.lang.String schemaName, java.lang.String permissionName)Description copied from interface:IDatabaseAdapterDrop permission object from the schema- Specified by:
dropPermissionin interfaceIDatabaseAdapter- Overrides:
dropPermissionin classCommonDatabaseAdapter
-
dropSequence
public void dropSequence(java.lang.String schemaName, java.lang.String sequenceName)- Specified by:
dropSequencein interfaceIDatabaseAdapter- Overrides:
dropSequencein classCommonDatabaseAdapter
-
dropVariable
public void dropVariable(java.lang.String schemaName, java.lang.String variableName)- Specified by:
dropVariablein interfaceIDatabaseAdapter- Overrides:
dropVariablein classCommonDatabaseAdapter
-
createOrReplaceFunction
public void createOrReplaceFunction(java.lang.String schemaName, java.lang.String functionName, java.util.function.Supplier<java.lang.String> supplier)Description copied from interface:IDatabaseAdaptercreates or replaces the SQL function- Specified by:
createOrReplaceFunctionin interfaceIDatabaseAdapter- Overrides:
createOrReplaceFunctionin classCommonDatabaseAdapter
-
listSchemaObjects
public java.util.List<SchemaInfoObject> listSchemaObjects(java.lang.String schemaName)
Description copied from interface:IDatabaseAdapterList the objects present in the given schema- Returns:
-
dropForeignKey
public void dropForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)Description copied from interface:IDatabaseAdapterDrop the FK on the table with the given constraint name- Specified by:
dropForeignKeyin interfaceIDatabaseAdapter- Overrides:
dropForeignKeyin classCommonDatabaseAdapter
-
dropTable
public void dropTable(java.lang.String schemaName, java.lang.String tableName)Description copied from interface:IDatabaseAdapterDrop table from the schema- Specified by:
dropTablein interfaceIDatabaseAdapter- Overrides:
dropTablein classCommonDatabaseAdapter
-
dropView
public void dropView(java.lang.String schemaName, java.lang.String viewName)Description copied from interface:IDatabaseAdapterDrop the view from the database- Specified by:
dropViewin interfaceIDatabaseAdapter- Overrides:
dropViewin classCommonDatabaseAdapter
-
dropIndex
public void dropIndex(java.lang.String schemaName, java.lang.String indexName)Description copied from interface:IDatabaseAdapterDrop the named index- Specified by:
dropIndexin interfaceIDatabaseAdapter- Overrides:
dropIndexin classCommonDatabaseAdapter
-
grantSchemaUsage
public void grantSchemaUsage(java.lang.String schemaName, java.lang.String grantToUser)Description copied from interface:IDatabaseAdapterGrants USAGE on the given schemaName to the given user- Specified by:
grantSchemaUsagein interfaceIDatabaseAdapter- Overrides:
grantSchemaUsagein classCommonDatabaseAdapter
-
grantAllSequenceUsage
public void grantAllSequenceUsage(java.lang.String schemaName, java.lang.String grantToUser)Description copied from interface:IDatabaseAdapterGrant access to all sequences in the named schema- Specified by:
grantAllSequenceUsagein interfaceIDatabaseAdapter- Overrides:
grantAllSequenceUsagein classCommonDatabaseAdapter
-
-