Class InformixAdapter
- java.lang.Object
-
- org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
-
- org.datanucleus.store.rdbms.adapter.InformixAdapter
-
- All Implemented Interfaces:
DatastoreAdapter
public class InformixAdapter extends BaseDatastoreAdapter
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 Constructor Description InformixAdapter(java.sql.DatabaseMetaData metadata)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.StringgetAddCandidateKeyStatement(CandidateKey ck, IdentifierFactory factory)Returns the appropriate SQL to add a candidate key to its table.java.lang.StringgetAddForeignKeyStatement(ForeignKey fk, IdentifierFactory factory)Returns the appropriate SQL to add a foreign key to its table.java.lang.StringgetAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)Informix 11.x does not support ALTER TABLE to define a primary keyjava.lang.StringgetDatastoreDateStatement()Accessor for a statement that will return the statement to use to get the datastore date.java.lang.StringgetIdentifierQuoteString()Accessor for an identifier quote string.java.lang.StringgetIdentityKeyword(org.datanucleus.store.StoreManager storeMgr)Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).java.lang.StringgetIdentityLastValueStmt(Table table, java.lang.String columnName)Accessor for the autoincrement sql access statement for this datastore.java.lang.Class<? extends SQLMethod>getSQLMethodClass(java.lang.String className, java.lang.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).java.lang.Class<? extends SQLOperation>getSQLOperationClass(java.lang.String operationName)Accessor for the SQLOperation class for the specified operation (if available for this datastore).private java.lang.StringgetSTRPOSDropFunction()DROP a NUCLEUS_STRPOS function for Informixprivate java.lang.StringgetSTRPOSFunction()Creates a NUCLEUS_STRPOS function for Informixjava.lang.StringgetVendorID()Accessor for the Vendor ID for this datastore.voidinitialiseDatastore(java.sql.Connection conn)Creates the auxiliary functions/procedures in the schemabooleanisStatementTimeout(java.sql.SQLException sqle)return whether this exception represents a timed out statement.protected voidloadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.SQLTypeInfonewSQLTypeInfo(java.sql.ResultSet rs)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
-
-
-
-
Method Detail
-
initialiseDatastore
public void initialiseDatastore(java.sql.Connection conn)
Creates the auxiliary functions/procedures in the schema- Specified by:
initialiseDatastorein interfaceDatastoreAdapter- Overrides:
initialiseDatastorein classBaseDatastoreAdapter- Parameters:
conn- the connection to the datastore
-
getVendorID
public java.lang.String getVendorID()
Description copied from interface:DatastoreAdapterAccessor for the Vendor ID for this datastore.- Specified by:
getVendorIDin interfaceDatastoreAdapter- Overrides:
getVendorIDin classBaseDatastoreAdapter- Returns:
- Vendor id for this datastore
-
newSQLTypeInfo
public SQLTypeInfo newSQLTypeInfo(java.sql.ResultSet rs)
Description copied from interface:DatastoreAdapterCreate 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:
newSQLTypeInfoin interfaceDatastoreAdapter- Overrides:
newSQLTypeInfoin classBaseDatastoreAdapter- Parameters:
rs- ResultSet- Returns:
- The SQL type info
-
getIdentifierQuoteString
public java.lang.String getIdentifierQuoteString()
Accessor for an identifier quote string.- Specified by:
getIdentifierQuoteStringin interfaceDatastoreAdapter- Overrides:
getIdentifierQuoteStringin classBaseDatastoreAdapter- Returns:
- Identifier quote string.
-
getIdentityLastValueStmt
public java.lang.String getIdentityLastValueStmt(Table table, java.lang.String columnName)
Accessor for the autoincrement sql access statement for this datastore.- Specified by:
getIdentityLastValueStmtin interfaceDatastoreAdapter- Overrides:
getIdentityLastValueStmtin 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
public java.lang.String getIdentityKeyword(org.datanucleus.store.StoreManager storeMgr)
Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).- Specified by:
getIdentityKeywordin interfaceDatastoreAdapter- Overrides:
getIdentityKeywordin classBaseDatastoreAdapter- Parameters:
storeMgr- Store Manager- Returns:
- The keyword for a column using auto-increment
-
getAddPrimaryKeyStatement
public java.lang.String getAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)
Informix 11.x does not support ALTER TABLE to define a primary key- Specified by:
getAddPrimaryKeyStatementin interfaceDatastoreAdapter- Overrides:
getAddPrimaryKeyStatementin classBaseDatastoreAdapter- Parameters:
pk- An object describing the primary key.factory- Identifier factory- Returns:
- The PK statement
-
getAddForeignKeyStatement
public java.lang.String getAddForeignKeyStatement(ForeignKey fk, IdentifierFactory factory)
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:
getAddForeignKeyStatementin interfaceDatastoreAdapter- Overrides:
getAddForeignKeyStatementin classBaseDatastoreAdapter- Parameters:
fk- An object describing the foreign key.factory- Identifier factory- Returns:
- The text of the SQL statement.
-
getAddCandidateKeyStatement
public java.lang.String getAddCandidateKeyStatement(CandidateKey ck, IdentifierFactory factory)
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:
getAddCandidateKeyStatementin interfaceDatastoreAdapter- Overrides:
getAddCandidateKeyStatementin classBaseDatastoreAdapter- Parameters:
ck- An object describing the candidate key.factory- Identifier factory- Returns:
- The text of the SQL statement.
-
getDatastoreDateStatement
public java.lang.String getDatastoreDateStatement()
Accessor for a statement that will return the statement to use to get the datastore date.- Specified by:
getDatastoreDateStatementin interfaceDatastoreAdapter- Overrides:
getDatastoreDateStatementin classBaseDatastoreAdapter- Returns:
- SQL statement to get the datastore date
-
getSTRPOSFunction
private java.lang.String getSTRPOSFunction()
Creates a NUCLEUS_STRPOS function for Informix- Returns:
- the SQL NUCLEUS_STRPOS function
-
getSTRPOSDropFunction
private java.lang.String getSTRPOSDropFunction()
DROP a NUCLEUS_STRPOS function for Informix- Returns:
- the SQL NUCLEUS_STRPOS function
-
isStatementTimeout
public boolean isStatementTimeout(java.sql.SQLException sqle)
Description copied from class:BaseDatastoreAdapterreturn whether this exception represents a timed out statement.- Specified by:
isStatementTimeoutin interfaceDatastoreAdapter- Overrides:
isStatementTimeoutin classBaseDatastoreAdapter- Parameters:
sqle- the exception- Returns:
- whether it is a timeout
-
getSQLOperationClass
public java.lang.Class<? extends SQLOperation> getSQLOperationClass(java.lang.String operationName)
Description copied from interface:DatastoreAdapterAccessor for the SQLOperation class for the specified operation (if available for this datastore).- Specified by:
getSQLOperationClassin interfaceDatastoreAdapter- Overrides:
getSQLOperationClassin classBaseDatastoreAdapter- Parameters:
operationName- operation name- Returns:
- SQLOperation class (or null if none available)
-
getSQLMethodClass
public java.lang.Class<? extends SQLMethod> getSQLMethodClass(java.lang.String className, java.lang.String methodName, org.datanucleus.ClassLoaderResolver clr)
Description copied from interface:DatastoreAdapterAccessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).- Specified by:
getSQLMethodClassin interfaceDatastoreAdapter- Overrides:
getSQLMethodClassin 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:
loadColumnMappingsin classBaseDatastoreAdapter- Parameters:
mgr- the PluginManagerclr- the ClassLoaderResolver
-
-