Interface IDatabaseAdapter
-
- All Known Implementing Classes:
CitusAdapter
,CommonDatabaseAdapter
,DerbyAdapter
,PostgresAdapter
public interface IDatabaseAdapter
Abstraction of the SQL to use for a given database. This allows us to hide as much as possible the differences in syntax and support between databases.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description void
alterSequenceRestartWith(java.lang.String schemaName, java.lang.String sequenceName, long restartWith, int cache, int incrementBy)
Sets/resets the sequence to start with the given value.void
alterTableAddColumn(java.lang.String schemaName, java.lang.String tableName, ColumnBase column)
Add a new column to an existing tablevoid
alterTableColumnIdentityCache(java.lang.String schemaName, java.lang.String objectName, java.lang.String columnName, int cache)
Change the CACHE value of the named identity generated always columnvoid
applyDistributionRules(java.lang.String schemaName, java.lang.String tableName, DistributionContext distributionContext)
Apply any distribution rules configured for the named tableboolean
checkCompatibility(java.lang.String adminSchema)
checks connectivity to the database and that it is compatiblevoid
createArrType(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] 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)
void
createIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns)
void
createOrReplaceFunction(java.lang.String schemaName, java.lang.String objectName, java.util.function.Supplier<java.lang.String> supplier)
creates or replaces the SQL functionvoid
createOrReplaceProcedure(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 suppliervoid
createOrReplaceView(java.lang.String schemaName, java.lang.String objectName, java.lang.String selectClause)
Create or replace the viewvoid
createRowType(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.:void
createSchema(java.lang.String schemaName)
Create a database schemavoid
createSequence(java.lang.String schemaName, java.lang.String sequenceName, long startWith, int cache, int incrementBy)
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)
Build the create table DDLvoid
createTablespace(java.lang.String tablespaceName)
Create a new tablespace with the given namevoid
createTablespace(java.lang.String tablespaceName, int extentSizeKB)
Create a new tablespace using the given extent sizevoid
createUniqueConstraint(java.lang.String constraintName, java.util.List<java.lang.String> columns, java.lang.String schemaName, java.lang.String name)
create a unique constraint on a table.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)
Create a unique indexvoid
createUniqueIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns, DistributionContext distributionContext)
Create a unique indexvoid
createView(java.lang.String schemaName, java.lang.String objectName, java.lang.String selectClause)
Create the view as defined by the selectClausevoid
disableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Disable the FK with the given constraint namevoid
distributeFunction(java.lang.String schemaName, java.lang.String functionName, int distributeByParamNumber)
For Citus, functions can be distributed by one of their parameters (typically the first)boolean
doesForeignKeyConstraintExist(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Does the named foreign key constraint existboolean
doesTableExist(java.lang.String schemaName, java.lang.String objectName)
Check if the table currently existsvoid
dropForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Drop the FK on the table with the given constraint namevoid
dropFunction(java.lang.String schemaName, java.lang.String functionName)
drops a given functionvoid
dropIndex(java.lang.String schemaName, java.lang.String indexName)
Drop the named indexvoid
dropPermission(java.lang.String schemaName, java.lang.String permissionName)
Drop permission object from the schemavoid
dropProcedure(java.lang.String schemaName, java.lang.String procedureName)
Drop the given procedurevoid
dropSequence(java.lang.String schemaName, java.lang.String sequenceName)
void
dropTable(java.lang.String schemaName, java.lang.String name)
Drop table from the schemavoid
dropTablespace(java.lang.String tablespaceName)
Drop an existing tablespace, including all of its contentsvoid
dropType(java.lang.String schemaName, java.lang.String typeName)
Drop the type object from the schemavoid
dropVariable(java.lang.String schemaName, java.lang.String variableName)
void
dropView(java.lang.String schemaName, java.lang.String objectName)
Drop the view from the databasevoid
enableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Enable the FK with the given constraint nameIDatabaseTranslator
getTranslator()
Get theIDatabaseTranslator
associated with this adaptervoid
grantAllSequenceUsage(java.lang.String schemaName, java.lang.String grantToUser)
Grant access to all sequences in the named schemavoid
grantFunctionPrivileges(java.lang.String schemaName, java.lang.String functionName, java.util.Collection<Privilege> privileges, java.lang.String toUser)
grants permissions on a given functionvoid
grantObjectPrivileges(java.lang.String schemaName, java.lang.String tableName, java.util.Collection<Privilege> privileges, java.lang.String toUser)
Grant the list of privileges on the named object to the user.void
grantProcedurePrivileges(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 uservoid
grantSchemaUsage(java.lang.String schemaName, java.lang.String grantToUser)
Grants USAGE on the given schemaName to the given uservoid
grantSequencePrivileges(java.lang.String schemaName, java.lang.String objectName, java.util.Collection<Privilege> group, java.lang.String toUser)
Grant the collection of privileges on the named variable to the uservoid
grantVariablePrivileges(java.lang.String schemaName, java.lang.String variableName, java.util.Collection<Privilege> privileges, java.lang.String toUser)
Grant the collection of privileges on the named variable to the userjava.util.List<SchemaInfoObject>
listSchemaObjects(java.lang.String schemaName)
List the objects present in the given schemavoid
runStatement(IDatabaseStatement statement)
Run the given statement against the database represented by this adapter<T> T
runStatement(IDatabaseSupplier<T> supplier)
Run the given supplier statement against the database represented by this adaptervoid
setIntegrityOff(java.lang.String schemaName, java.lang.String tableName)
void
setIntegrityUnchecked(java.lang.String schemaName, java.lang.String tableName)
default boolean
useSessionVariable()
-
-
-
Method Detail
-
getTranslator
IDatabaseTranslator getTranslator()
Get theIDatabaseTranslator
associated with this adapter- Returns:
-
createTablespace
void createTablespace(java.lang.String tablespaceName)
Create a new tablespace with the given name- Parameters:
tablespaceName
-
-
createTablespace
void createTablespace(java.lang.String tablespaceName, int extentSizeKB)
Create a new tablespace using the given extent size- Parameters:
tablespaceName
-extentSizeKB
-
-
dropTablespace
void dropTablespace(java.lang.String tablespaceName)
Drop an existing tablespace, including all of its contents- Parameters:
tablespaceName
-
-
createTable
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)
Build the create table DDL- Parameters:
schemaName
-name
-columns
-primaryKey
-identity
-tablespaceName
-withs
-checkConstraints
-distributionContext
-
-
applyDistributionRules
void applyDistributionRules(java.lang.String schemaName, java.lang.String tableName, DistributionContext distributionContext)
Apply any distribution rules configured for the named table- Parameters:
schemaName
-tableName
-distributionContext
-
-
alterTableAddColumn
void alterTableAddColumn(java.lang.String schemaName, java.lang.String tableName, ColumnBase column)
Add a new column to an existing table- Parameters:
schemaName
-tableName
-column
-
-
createRowType
void createRowType(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.:CREATE OR REPLACE TYPE
.t_str_values AS ROW (parameter_name_id INTEGER, str_value VARCHAR(511 OCTETS), str_value_lcase VARCHAR(511 OCTETS)) - Parameters:
schemaName
-typeName
-columns
-
-
createArrType
void createArrType(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] - Parameters:
schemaName
-typeName
-valueType
-arraySize
-
-
dropType
void dropType(java.lang.String schemaName, java.lang.String typeName)
Drop the type object from the schema- Parameters:
schemaName
-typeName
-
-
createOrReplaceProcedure
void createOrReplaceProcedure(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 supplier- Parameters:
schemaName
-procedureName
-supplier
-
-
dropProcedure
void dropProcedure(java.lang.String schemaName, java.lang.String procedureName)
Drop the given procedure- Parameters:
schemaName
-procedureName
-
-
createUniqueIndex
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)
Create a unique index- Parameters:
schemaName
-tableName
-indexName
-indexColumns
-includeColumns
-distributionContext
-
-
createUniqueIndex
void createUniqueIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns, DistributionContext distributionContext)
Create a unique index- Parameters:
schemaName
-tableName
-indexName
-indexColumns
-distributionContext
-
-
createIndex
void createIndex(java.lang.String schemaName, java.lang.String tableName, java.lang.String indexName, java.util.List<OrderedColumnDef> indexColumns)
- Parameters:
schemaName
-tableName
-indexName
-indexColumns
-
-
dropTable
void dropTable(java.lang.String schemaName, java.lang.String name)
Drop table from the schema- Parameters:
schemaName
-name
-
-
dropPermission
void dropPermission(java.lang.String schemaName, java.lang.String permissionName)
Drop permission object from the schema- Parameters:
schemaName
-permissionName
-
-
dropVariable
void dropVariable(java.lang.String schemaName, java.lang.String variableName)
- Parameters:
schemaName
-variableName
-
-
createForeignKeyConstraint
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)
- Parameters:
constraintName
-schemaName
-name
-targetSchema
-targetTable
-targetColumnName
-columns
-enforced
-
-
createSequence
void createSequence(java.lang.String schemaName, java.lang.String sequenceName, long startWith, int cache, int incrementBy)
- Parameters:
schemaName
-sequenceName
-startWith
- the START WITH value for the sequencecache
- the sequence CACHE value
-
dropSequence
void dropSequence(java.lang.String schemaName, java.lang.String sequenceName)
- Parameters:
schemaName
-sequenceName
-
-
alterSequenceRestartWith
void alterSequenceRestartWith(java.lang.String schemaName, java.lang.String sequenceName, long restartWith, int cache, int incrementBy)
Sets/resets the sequence to start with the given value.- Parameters:
schemaName
-sequenceName
-restartWith
-cache
-
-
grantObjectPrivileges
void grantObjectPrivileges(java.lang.String schemaName, java.lang.String tableName, java.util.Collection<Privilege> privileges, java.lang.String toUser)
Grant the list of privileges on the named object to the user. This is a general purpose method which can be used to specify privileges for any object type which doesn't need the object type to be specified in the grant DDL.- Parameters:
schemaName
-tableName
-privileges
-toUser
-
-
grantProcedurePrivileges
void grantProcedurePrivileges(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 user- Parameters:
schemaName
-procedureName
-privileges
-toUser
-
-
grantVariablePrivileges
void grantVariablePrivileges(java.lang.String schemaName, java.lang.String variableName, java.util.Collection<Privilege> privileges, java.lang.String toUser)
Grant the collection of privileges on the named variable to the user- Parameters:
schemaName
-variableName
-privileges
-toUser
-
-
grantSequencePrivileges
void grantSequencePrivileges(java.lang.String schemaName, java.lang.String objectName, java.util.Collection<Privilege> group, java.lang.String toUser)
Grant the collection of privileges on the named variable to the user- Parameters:
schemaName
-objectName
-group
-toUser
-
-
grantSchemaUsage
void grantSchemaUsage(java.lang.String schemaName, java.lang.String grantToUser)
Grants USAGE on the given schemaName to the given user- Parameters:
schemaName
-
-
grantAllSequenceUsage
void grantAllSequenceUsage(java.lang.String schemaName, java.lang.String grantToUser)
Grant access to all sequences in the named schema- Parameters:
schemaName
-grantToUser
-
-
runStatement
<T> T runStatement(IDatabaseSupplier<T> supplier)
Run the given supplier statement against the database represented by this adapter- Type Parameters:
T
-- Parameters:
supplier
-- Returns:
-
runStatement
void runStatement(IDatabaseStatement statement)
Run the given statement against the database represented by this adapter- Parameters:
statement
-
-
doesTableExist
boolean doesTableExist(java.lang.String schemaName, java.lang.String objectName)
Check if the table currently exists- Parameters:
schemaName
-objectName
-- Returns:
-
createSchema
void createSchema(java.lang.String schemaName)
Create a database schema- Parameters:
schemaName
-
-
createUniqueConstraint
void createUniqueConstraint(java.lang.String constraintName, java.util.List<java.lang.String> columns, java.lang.String schemaName, java.lang.String name)
create a unique constraint on a table.- Parameters:
constraintName
-columns
-schemaName
-name
-
-
checkCompatibility
boolean checkCompatibility(java.lang.String adminSchema)
checks connectivity to the database and that it is compatible- Parameters:
adminSchema
-- Returns:
-
useSessionVariable
default boolean useSessionVariable()
- Returns:
- a false, if not used, or true if used with the persistence layer.
-
createOrReplaceFunction
void createOrReplaceFunction(java.lang.String schemaName, java.lang.String objectName, java.util.function.Supplier<java.lang.String> supplier)
creates or replaces the SQL function- Parameters:
schemaName
-objectName
-supplier
-
-
distributeFunction
void distributeFunction(java.lang.String schemaName, java.lang.String functionName, int distributeByParamNumber)
For Citus, functions can be distributed by one of their parameters (typically the first)- Parameters:
schemaName
-functionName
-distributeByParamNumber
-
-
dropFunction
void dropFunction(java.lang.String schemaName, java.lang.String functionName)
drops a given function- Parameters:
schemaName
-functionName
-
-
grantFunctionPrivileges
void grantFunctionPrivileges(java.lang.String schemaName, java.lang.String functionName, java.util.Collection<Privilege> privileges, java.lang.String toUser)
grants permissions on a given function- Parameters:
schemaName
-functionName
-privileges
-toUser
-
-
disableForeignKey
void disableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Disable the FK with the given constraint name- Parameters:
tableName
-constraintName
-
-
dropForeignKey
void dropForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Drop the FK on the table with the given constraint name- Parameters:
schemaName
-tableName
-constraintName
-
-
enableForeignKey
void enableForeignKey(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Enable the FK with the given constraint name- Parameters:
schemaName
-tableName
-constraintName
-
-
doesForeignKeyConstraintExist
boolean doesForeignKeyConstraintExist(java.lang.String schemaName, java.lang.String tableName, java.lang.String constraintName)
Does the named foreign key constraint exist- Parameters:
schemaName
-tableName
-constraintName
-- Returns:
-
setIntegrityOff
void setIntegrityOff(java.lang.String schemaName, java.lang.String tableName)
- Parameters:
schemaName
-tableName
-
-
setIntegrityUnchecked
void setIntegrityUnchecked(java.lang.String schemaName, java.lang.String tableName)
- Parameters:
schemaName
-tableName
-
-
alterTableColumnIdentityCache
void alterTableColumnIdentityCache(java.lang.String schemaName, java.lang.String objectName, java.lang.String columnName, int cache)
Change the CACHE value of the named identity generated always column- Parameters:
schemaName
-objectName
-columnName
-cache
-
-
dropIndex
void dropIndex(java.lang.String schemaName, java.lang.String indexName)
Drop the named index- Parameters:
schemaName
-indexName
-
-
createView
void createView(java.lang.String schemaName, java.lang.String objectName, java.lang.String selectClause)
Create the view as defined by the selectClause- Parameters:
schemaName
-objectName
-selectClause
-
-
dropView
void dropView(java.lang.String schemaName, java.lang.String objectName)
Drop the view from the database- Parameters:
schemaName
-objectName
-
-
createOrReplaceView
void createOrReplaceView(java.lang.String schemaName, java.lang.String objectName, java.lang.String selectClause)
Create or replace the view- Parameters:
schemaName
-objectName
-selectClause
-
-
listSchemaObjects
java.util.List<SchemaInfoObject> listSchemaObjects(java.lang.String schemaName)
List the objects present in the given schema- Parameters:
schemaName
-- Returns:
-
-