public class PostgreSQLAdapter extends BaseDatastoreAdapter
Modifier and Type | Field and Description |
---|---|
static String |
POSTGRESQL_RESERVED_WORDS
List of Postgresql keywords that aren't in SQL92, SQL99
|
protected Hashtable |
psqlTypes |
catalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, LOCALISER, LOCALISER_BASE, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, properties, reservedKeywords, supportedJdbcTypesById, supportedOptions, unsupportedJdbcTypesById
ACCESS_PARENTQUERY_IN_SUBQUERY_JOINED, ALLOW_TABLE_ALIAS_IN_UPDATE_SET_CLAUSE, ALTER_TABLE_DROP_CONSTRAINT_SYNTAX, ALTER_TABLE_DROP_FOREIGN_KEY_CONSTRAINT, ANALYSIS_METHODS, ANSI_CROSSJOIN_SYNTAX, ANSI_JOIN_SYNTAX, AUTO_INCREMENT_COLUMN_TYPE_SPECIFICATION, AUTO_INCREMENT_KEYS_NULL_SPECIFICATION, AUTO_INCREMENT_PK_IN_CREATE_TABLE_COLUMN_DEF, BIT_IS_REALLY_BOOLEAN, BLOB_SET_USING_SETSTRING, BOOLEAN_COMPARISON, CATALOGS_IN_TABLE_DEFINITIONS, CHAR_COLUMNS_PADDED_WITH_SPACES, CHECK_IN_CREATE_STATEMENTS, CHECK_IN_END_CREATE_STATEMENTS, CLOB_SET_USING_SETSTRING, CREATE_INDEXES_BEFORE_FOREIGN_KEYS, CROSSJOIN_ASINNER11_SYNTAX, DATETIME_STORES_MILLISECS, DEFAULT_BEFORE_NULL_IN_COLUMN_OPTIONS, DEFAULT_KEYWORD_IN_COLUMN_OPTIONS, DEFAULT_KEYWORD_WITH_NOT_NULL_IN_COLUMN_OPTIONS, DEFERRED_CONSTRAINTS, DISTINCT_WITH_SELECT_FOR_UPDATE, ESCAPE_EXPRESSION_IN_LIKE_PREDICATE, EXISTS_SYNTAX, FK_DELETE_ACTION_CASCADE, FK_DELETE_ACTION_DEFAULT, FK_DELETE_ACTION_NULL, FK_DELETE_ACTION_RESTRICT, FK_IN_END_CREATE_STATEMENTS, FK_UPDATE_ACTION_CASCADE, FK_UPDATE_ACTION_DEFAULT, FK_UPDATE_ACTION_NULL, FK_UPDATE_ACTION_RESTRICT, GET_GENERATED_KEYS_STATEMENT, IDENTIFIERS_LOWERCASE, IDENTIFIERS_LOWERCASE_QUOTED, IDENTIFIERS_MIXEDCASE, IDENTIFIERS_MIXEDCASE_QUOTED, IDENTIFIERS_MIXEDCASE_QUOTED_SENSITIVE, IDENTIFIERS_MIXEDCASE_SENSITIVE, IDENTIFIERS_UPPERCASE, IDENTIFIERS_UPPERCASE_QUOTED, IDENTITY_COLUMNS, INCLUDE_ORDERBY_COLS_IN_SELECT, LOCK_OPTION_PLACED_AFTER_FROM, LOCK_OPTION_PLACED_WITHIN_JOIN, LOCK_WITH_SELECT_FOR_UPDATE, NULL_EQUALS_EMPTY_STRING, NULLS_IN_CANDIDATE_KEYS, NULLS_KEYWORD_IN_COLUMN_OPTIONS, ORDERBY_NULLS_DIRECTIVES, ORDERBY_USING_SELECT_COLUMN_INDEX, PERSIST_OF_UNASSIGNED_CHAR, PRIMARYKEY_IN_CREATE_STATEMENTS, PROJECTION_IN_TABLE_REFERENCE_JOINS, RESULTSET_TYPE_FORWARD_ONLY, RESULTSET_TYPE_SCROLL_INSENSITIVE, RESULTSET_TYPE_SCROLL_SENSITIVE, SCHEMAS_IN_TABLE_DEFINITIONS, SEQUENCES, STATEMENT_BATCHING, STORED_PROCEDURES, TX_ISOLATION_NONE, TX_ISOLATION_READ_COMMITTED, TX_ISOLATION_READ_UNCOMMITTED, TX_ISOLATION_REPEATABLE_READ, TX_ISOLATION_SERIALIZABLE, UNION_SYNTAX, UNIQUE_IN_END_CREATE_STATEMENTS, USE_UNION_ALL, VIEWS
Constructor and Description |
---|
PostgreSQLAdapter(DatabaseMetaData metadata)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
String |
getAddColumnStatement(Table table,
Column col)
Accessor for the SQL statement to add a column to a table.
|
String |
getAddPrimaryKeyStatement(PrimaryKey pk,
IdentifierFactory factory)
PostgreSQL allows specification of PRIMARY KEY in the CREATE TABLE, so
we need nothing here.
|
String |
getAutoIncrementKeyword()
Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).
|
String |
getAutoIncrementStmt(Table table,
String columnName)
Accessor for the autoincrement sql access statement for this datastore.
|
String |
getCreateIndexStatement(Index idx,
IdentifierFactory factory)
Returns the appropriate DDL to create an index.
|
String |
getDropDatabaseStatement(String catalogName,
String schemaName)
Method to return the statement necessary to drop a database with this RDBMS.
|
String |
getDropTableStatement(Table table)
Accessor for the statement for dropping a table.
|
String |
getEscapePatternExpression()
The character for escaping patterns.
|
String |
getInsertStatementForNoColumns(Table table)
Method to return the INSERT statement to use when inserting into a table and we dont want to
specify columns.
|
String |
getRangeByLimitEndOfStatementClause(long offset,
long count)
Method to return the SQL to append to the WHERE clause of a SELECT statement to handle
restriction of ranges using the LIMUT keyword.
|
String |
getSequenceCreateStmt(String sequence_name,
Integer min,
Integer max,
Integer start,
Integer increment,
Integer cache_size)
Accessor for the sequence statement to create the sequence.
|
String |
getSequenceNextStmt(String sequence_name)
Accessor for the statement for getting the next id from the sequence
for this datastore.
|
String |
getVendorID()
Accessor for the vendor id.
|
void |
initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.store.connection.ManagedConnection mconn)
Initialise the types for this datastore.
|
boolean |
isStatementCancel(SQLException sqle)
return whether this exception represents a cancelled statement.
|
ForeignKeyInfo |
newFKInfo(ResultSet rs)
Method to return ForeignKeyInfo for the current row of the ResultSet which will have been
obtained from a call to DatabaseMetaData.getImportedKeys() or DatabaseMetaData.getExportedKeys().
|
RDBMSColumnInfo |
newRDBMSColumnInfo(ResultSet rs)
Method to create a column info for the current row.
|
SQLTypeInfo |
newSQLTypeInfo(ResultSet rs)
Create a new SQL type info from the current row of the passed ResultSet.
|
boolean |
supportsQueryFetchSize(int size)
Whether the datastore will support setting the query fetch size to the supplied value.
|
addSQLTypeForJDBCType, getAdapterTime, getAddCandidateKeyStatement, getAddForeignKeyStatement, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumns, getContinuationString, getCreateDatabaseStatement, getCreateTableStatement, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreProductName, getDatastoreProductVersion, getDeleteTableStatement, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getExistingIndexes, getIdentifierQuoteString, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getNumericConversionFunction, getOperatorConcat, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getSchemaName, getSelectForUpdateText, getSelectNewUUIDStmt, getSelectWithLockOption, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getUpdateTableStatement, getValueForProperty, initialiseDatastore, isIdentityFieldDataType, isKeyword, isReservedKeyword, isStatementTimeout, isValidPrimaryKeyType, iteratorReservedWords, parseKeywordList, removeUnsupportedMappings, sequenceExists, setProperties, supportsOption, supportsTransactionIsolation, toString, validToSelectMappingInStatement
public static final String POSTGRESQL_RESERVED_WORDS
protected Hashtable psqlTypes
public PostgreSQLAdapter(DatabaseMetaData metadata)
metadata
- MetaData for the DBpublic void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn)
initialiseTypes
in interface DatastoreAdapter
initialiseTypes
in class BaseDatastoreAdapter
handler
- SchemaHandler that we initialise the types formconn
- Managed connection to usepublic String getVendorID()
getVendorID
in interface DatastoreAdapter
getVendorID
in class BaseDatastoreAdapter
public SQLTypeInfo newSQLTypeInfo(ResultSet rs)
DatastoreAdapter
newSQLTypeInfo
in interface DatastoreAdapter
newSQLTypeInfo
in class BaseDatastoreAdapter
rs
- ResultSetpublic RDBMSColumnInfo newRDBMSColumnInfo(ResultSet rs)
newRDBMSColumnInfo
in interface DatastoreAdapter
newRDBMSColumnInfo
in class BaseDatastoreAdapter
rs
- ResultSet from DatabaseMetaData.getColumns()public ForeignKeyInfo newFKInfo(ResultSet rs)
newFKInfo
in interface DatastoreAdapter
newFKInfo
in class BaseDatastoreAdapter
rs
- The result set returned from DatabaseMetaData.get??portedKeys()public String getDropDatabaseStatement(String catalogName, String schemaName)
DatastoreAdapter
getDropDatabaseStatement
in interface DatastoreAdapter
getDropDatabaseStatement
in class BaseDatastoreAdapter
catalogName
- Name of the catalogschemaName
- Name of the schemapublic String getAddColumnStatement(Table table, Column col)
getAddColumnStatement
in interface DatastoreAdapter
getAddColumnStatement
in class BaseDatastoreAdapter
table
- The tablecol
- The columnpublic String getInsertStatementForNoColumns(Table table)
INSERT INTO tbl VALUES(DEFAULT)
getInsertStatementForNoColumns
in interface DatastoreAdapter
getInsertStatementForNoColumns
in class BaseDatastoreAdapter
table
- The tablepublic String getAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)
getAddPrimaryKeyStatement
in interface DatastoreAdapter
getAddPrimaryKeyStatement
in class BaseDatastoreAdapter
pk
- An object describing the primary key.factory
- Identifier factorypublic String getDropTableStatement(Table table)
getDropTableStatement
in interface DatastoreAdapter
getDropTableStatement
in class BaseDatastoreAdapter
table
- The table to drop.public String getCreateIndexStatement(Index idx, IdentifierFactory factory)
getCreateIndexStatement
in interface DatastoreAdapter
getCreateIndexStatement
in class BaseDatastoreAdapter
idx
- An object describing the index.factory
- Identifier factorypublic String getAutoIncrementStmt(Table table, String columnName)
getAutoIncrementStmt
in interface DatastoreAdapter
getAutoIncrementStmt
in class BaseDatastoreAdapter
table
- Table that the autoincrement is forcolumnName
- Name of the column that the autoincrement is forpublic String getAutoIncrementKeyword()
getAutoIncrementKeyword
in interface DatastoreAdapter
getAutoIncrementKeyword
in class BaseDatastoreAdapter
public String getSequenceCreateStmt(String sequence_name, Integer min, Integer max, Integer start, Integer increment, Integer cache_size)
getSequenceCreateStmt
in interface DatastoreAdapter
getSequenceCreateStmt
in class BaseDatastoreAdapter
sequence_name
- Name of the sequencemin
- Minimum value for the sequencemax
- Maximum value for the sequencestart
- Start value for the sequenceincrement
- Increment value for the sequencecache_size
- Cache size for the sequencepublic String getSequenceNextStmt(String sequence_name)
getSequenceNextStmt
in interface DatastoreAdapter
getSequenceNextStmt
in class BaseDatastoreAdapter
sequence_name
- Name of the sequencepublic boolean supportsQueryFetchSize(int size)
supportsQueryFetchSize
in interface DatastoreAdapter
supportsQueryFetchSize
in class BaseDatastoreAdapter
size
- The value to set topublic String getRangeByLimitEndOfStatementClause(long offset, long count)
getRangeByLimitEndOfStatementClause
in interface DatastoreAdapter
getRangeByLimitEndOfStatementClause
in class BaseDatastoreAdapter
offset
- The offset to return fromcount
- The number of items to returnpublic String getEscapePatternExpression()
getEscapePatternExpression
in interface DatastoreAdapter
getEscapePatternExpression
in class BaseDatastoreAdapter
public boolean isStatementCancel(SQLException sqle)
isStatementCancel
in interface DatastoreAdapter
isStatementCancel
in class BaseDatastoreAdapter
sqle
- the exceptionCopyright © 2023. All rights reserved.