Class InformixAdapter
java.lang.Object
org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
org.datanucleus.store.rdbms.adapter.InformixAdapter
- All Implemented Interfaces:
DatastoreAdapter
Provides methods for adapting SQL language elements to the Informix
database. Overrides some methods in DatabaseAdapter where Informix behaviour differs.
Informix databases must be created WITH LOG MODE ANSI, otherwise
errors like "Transaction Not Supported", "Not in transaction" will appear.
See the informix info.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
BaseDatastoreAdapter.ColumnTypeMappings
-
Field Summary
Fields inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
catalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, datastoreTypeMappingsByJavaType, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, MAX_IDENTIFIER_LENGTH, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, NONRESERVED_WORDS, reservedKeywords, SQL2003_RESERVED_WORDS, SQL92_RESERVED_WORDS, SQL99_RESERVED_WORDS, supportedJdbcTypesById, supportedOptions, unsupportedJdbcTypesById
Fields inherited from interface org.datanucleus.store.rdbms.adapter.DatastoreAdapter
ACCESS_PARENTQUERY_IN_SUBQUERY_JOINED, ALTER_TABLE_DROP_CONSTRAINT_SYNTAX, ALTER_TABLE_DROP_FOREIGN_KEY_CONSTRAINT, ANSI_CROSSJOIN_SYNTAX, ANSI_JOIN_SYNTAX, 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, COLUMN_LENGTH_SEMANTICS, CREATE_INDEX_COLUMN_ORDERING, 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, GROUP_BY_REQUIRES_ALL_SELECT_PRIMARIES, GROUPING_WITH_SELECT_FOR_UPDATE, HAVING_WITH_SELECT_FOR_UPDATE, HOLD_CURSORS_OVER_COMMIT, IDENTIFIERS_LOWERCASE, IDENTIFIERS_LOWERCASE_QUOTED, IDENTIFIERS_MIXEDCASE, IDENTIFIERS_MIXEDCASE_QUOTED, IDENTIFIERS_MIXEDCASE_QUOTED_SENSITIVE, IDENTIFIERS_MIXEDCASE_SENSITIVE, IDENTIFIERS_UPPERCASE, IDENTIFIERS_UPPERCASE_QUOTED, IDENTITY_COLUMN_TYPE_SPECIFICATION, IDENTITY_COLUMNS, IDENTITY_KEYS_NULL_SPECIFICATION, IDENTITY_PK_IN_CREATE_TABLE_COLUMN_DEF, INCLUDE_ORDERBY_COLS_IN_SELECT, INCLUDE_TABLE_INDEX_STATISTICS, LOCK_ROW_USING_OPTION_AFTER_FROM, LOCK_ROW_USING_OPTION_WITHIN_JOIN, LOCK_ROW_USING_SELECT_FOR_UPDATE, LOCK_ROW_USING_SELECT_FOR_UPDATE_NOWAIT, MULTITABLES_WITH_SELECT_FOR_UPDATE, NATIVE_ENUM_TYPE, NULL_EQUALS_EMPTY_STRING, NULLS_IN_CANDIDATE_KEYS, NULLS_KEYWORD_IN_COLUMN_OPTIONS, OPERATOR_BITWISE_AND, OPERATOR_BITWISE_OR, OPERATOR_BITWISE_XOR, ORDERBY_NULLS_DIRECTIVES, ORDERBY_NULLS_USING_CASE_NULL, ORDERBY_NULLS_USING_COLUMN_IS_NULL, ORDERBY_NULLS_USING_ISNULL, ORDERBY_USING_SELECT_COLUMN_INDEX, ORDERING_WITH_SELECT_FOR_UPDATE, PARAMETER_IN_CASE_IN_UPDATE_CLAUSE, PERSIST_OF_UNASSIGNED_CHAR, PRIMARYKEY_IN_CREATE_STATEMENTS, PROJECTION_IN_TABLE_REFERENCE_JOINS, RAW_PREFIX_LIKE_STATEMENTS, RESULTSET_TYPE_FORWARD_ONLY, RESULTSET_TYPE_SCROLL_INSENSITIVE, RESULTSET_TYPE_SCROLL_SENSITIVE, RIGHT_OUTER_JOIN, SCHEMAS_IN_TABLE_DEFINITIONS, SEQUENCES, SOME_ANY_ALL_SUBQUERY_EXPRESSIONS, STATEMENT_BATCHING, STORED_PROCEDURES, SUBQUERY_IN_HAVING, 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, UPDATE_DELETE_STATEMENT_ALLOW_TABLE_ALIAS_IN_WHERE_CLAUSE, UPDATE_STATEMENT_ALLOW_TABLE_ALIAS_IN_SET_CLAUSE, USE_UNION_ALL, VALUE_GENERATION_UUID_STRING, VIEWS
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetAddCandidateKeyStatement
(CandidateKey ck, IdentifierFactory factory) Returns the appropriate SQL to add a candidate key to its table.getAddForeignKeyStatement
(ForeignKey fk, IdentifierFactory factory) Returns the appropriate SQL to add a foreign key to its table.getAddPrimaryKeyStatement
(PrimaryKey pk, IdentifierFactory factory) Informix 11.x does not support ALTER TABLE to define a primary keyAccessor for a statement that will return the statement to use to get the datastore date.Accessor for an identifier quote string.getIdentityKeyword
(org.datanucleus.store.StoreManager storeMgr) Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).getIdentityLastValueStmt
(Table table, String columnName) Accessor for the autoincrement sql access statement for this datastore.getSQLMethodClass
(String className, String methodName, org.datanucleus.ClassLoaderResolver clr) Accessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).Class
<? extends SQLOperation> getSQLOperationClass
(String operationName) Accessor for the SQLOperation class for the specified operation (if available for this datastore).private String
DROP a NUCLEUS_STRPOS function for Informixprivate String
Creates a NUCLEUS_STRPOS function for InformixAccessor for the Vendor ID for this datastore.void
Creates the auxiliary functions/procedures in the schemaboolean
return whether this exception represents a timed out statement.protected void
loadColumnMappings
(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr) Load all datastore mappings for this RDBMS database.Create a new SQL type info from the current row of the passed ResultSet.Methods inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
addSQLTypeForJDBCType, deregisterColumnMappingsForJDBCType, getAdapterTime, getAddColumnStatement, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumnMappingClass, getColumns, getContinuationString, getCreateDatabaseStatement, getCreateIndexStatement, getCreateTableStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreProductName, getDatastoreProductVersion, getDefaultSqlTypeForJavaType, getDeleteTableStatement, getDriverMajorVersion, getDriverMinorVersion, getDropDatabaseStatement, getDropTableStatement, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentityJavaTypeForType, getInsertStatementForNoColumns, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getNumericConversionFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getPreferredDefaultSQLTypeForJDBCType, getRangeByLimitEndOfStatementClause, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getReservedWords, getSchemaName, getSelectForUpdateText, getSelectNewUUIDStmt, getSelectWithLockOption, getSequenceCreateStmt, getSequenceNextStmt, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getUpdateTableStatement, initialise, initialiseTypes, isIdentityFieldDataType, isReservedKeyword, isStatementCancel, isValidPrimaryKeyType, newFKInfo, newRDBMSColumnInfo, registerColumnMapping, registerColumnMapping, sequenceExists, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToIndexMapping, validToSelectMappingInStatement
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.datanucleus.store.rdbms.adapter.DatastoreAdapter
getIdentityKeyword
-
Constructor Details
-
InformixAdapter
Constructor.- Parameters:
metadata
- MetaData for the DB
-
-
Method Details
-
initialiseDatastore
Creates the auxiliary functions/procedures in the schema- Specified by:
initialiseDatastore
in interfaceDatastoreAdapter
- Overrides:
initialiseDatastore
in classBaseDatastoreAdapter
- Parameters:
conn
- the connection to the datastore
-
getVendorID
Description copied from interface:DatastoreAdapter
Accessor for the Vendor ID for this datastore.- Specified by:
getVendorID
in interfaceDatastoreAdapter
- Overrides:
getVendorID
in classBaseDatastoreAdapter
- Returns:
- Vendor id for this datastore
-
newSQLTypeInfo
Description copied from interface:DatastoreAdapter
Create a new SQL type info from the current row of the passed ResultSet. Allows an adapter to override particular types where the JDBC driver is known to be buggy.- Specified by:
newSQLTypeInfo
in interfaceDatastoreAdapter
- Overrides:
newSQLTypeInfo
in classBaseDatastoreAdapter
- Parameters:
rs
- ResultSet- Returns:
- The SQL type info
-
getIdentifierQuoteString
Accessor for an identifier quote string.- Specified by:
getIdentifierQuoteString
in interfaceDatastoreAdapter
- Overrides:
getIdentifierQuoteString
in classBaseDatastoreAdapter
- Returns:
- Identifier quote string.
-
getIdentityLastValueStmt
Accessor for the autoincrement sql access statement for this datastore.- Specified by:
getIdentityLastValueStmt
in interfaceDatastoreAdapter
- Overrides:
getIdentityLastValueStmt
in classBaseDatastoreAdapter
- Parameters:
table
- Name of the table that the autoincrement is forcolumnName
- Name of the column that the autoincrement is for- Returns:
- The statement for getting the latest auto-increment key
-
getIdentityKeyword
Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).- Specified by:
getIdentityKeyword
in interfaceDatastoreAdapter
- Overrides:
getIdentityKeyword
in classBaseDatastoreAdapter
- Parameters:
storeMgr
- Store Manager- Returns:
- The keyword for a column using auto-increment
-
getAddPrimaryKeyStatement
Informix 11.x does not support ALTER TABLE to define a primary key- Specified by:
getAddPrimaryKeyStatement
in interfaceDatastoreAdapter
- Overrides:
getAddPrimaryKeyStatement
in classBaseDatastoreAdapter
- Parameters:
pk
- An object describing the primary key.factory
- Identifier factory- Returns:
- The PK statement
-
getAddForeignKeyStatement
Returns the appropriate SQL to add a foreign key to its table. It should return something like:ALTER TABLE FOO ADD CONSTRAINT FOREIGN KEY (BAR, BAZ) REFERENCES ABC (COL1, COL2) CONSTRAINT FOO_FK1 ALTER TABLE FOO ADD FOREIGN KEY (BAR, BAZ) REFERENCES ABC (COL1, COL2)
- Specified by:
getAddForeignKeyStatement
in interfaceDatastoreAdapter
- Overrides:
getAddForeignKeyStatement
in classBaseDatastoreAdapter
- Parameters:
fk
- An object describing the foreign key.factory
- Identifier factory- Returns:
- The text of the SQL statement.
-
getAddCandidateKeyStatement
Returns the appropriate SQL to add a candidate key to its table. It should return something like:ALTER TABLE FOO ADD CONSTRAINT FOO_CK CONSTRAINT UNIQUE (BAZ) ALTER TABLE FOO ADD CONSTRAINT UNIQUE (BAZ)
- Specified by:
getAddCandidateKeyStatement
in interfaceDatastoreAdapter
- Overrides:
getAddCandidateKeyStatement
in classBaseDatastoreAdapter
- Parameters:
ck
- An object describing the candidate key.factory
- Identifier factory- Returns:
- The text of the SQL statement.
-
getDatastoreDateStatement
Accessor for a statement that will return the statement to use to get the datastore date.- Specified by:
getDatastoreDateStatement
in interfaceDatastoreAdapter
- Overrides:
getDatastoreDateStatement
in classBaseDatastoreAdapter
- Returns:
- SQL statement to get the datastore date
-
getSTRPOSFunction
Creates a NUCLEUS_STRPOS function for Informix- Returns:
- the SQL NUCLEUS_STRPOS function
-
getSTRPOSDropFunction
DROP a NUCLEUS_STRPOS function for Informix- Returns:
- the SQL NUCLEUS_STRPOS function
-
isStatementTimeout
Description copied from class:BaseDatastoreAdapter
return whether this exception represents a timed out statement.- Specified by:
isStatementTimeout
in interfaceDatastoreAdapter
- Overrides:
isStatementTimeout
in classBaseDatastoreAdapter
- Parameters:
sqle
- the exception- Returns:
- whether it is a timeout
-
getSQLOperationClass
Description copied from interface:DatastoreAdapter
Accessor for the SQLOperation class for the specified operation (if available for this datastore).- Specified by:
getSQLOperationClass
in interfaceDatastoreAdapter
- Overrides:
getSQLOperationClass
in classBaseDatastoreAdapter
- Parameters:
operationName
- operation name- Returns:
- SQLOperation class (or null if none available)
-
getSQLMethodClass
public Class<? extends SQLMethod> getSQLMethodClass(String className, String methodName, org.datanucleus.ClassLoaderResolver clr) Description copied from interface:DatastoreAdapter
Accessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).- Specified by:
getSQLMethodClass
in interfaceDatastoreAdapter
- Overrides:
getSQLMethodClass
in classBaseDatastoreAdapter
- Parameters:
className
- Name of the class (or null if this is a STATIC method)methodName
- Method nameclr
- ClassLoader resolver, in case className is a subclass of a supported type- Returns:
- The SQLMethod class (or null if not defined for this datastore).
-
loadColumnMappings
protected void loadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr) Load all datastore mappings for this RDBMS database.- Overrides:
loadColumnMappings
in classBaseDatastoreAdapter
- Parameters:
mgr
- the PluginManagerclr
- the ClassLoaderResolver
-