public class Informix11Platform extends InformixPlatform
InformixPlatform
that fixes many EclipseLink bugs
related to Informix support.DEFAULT_VARCHAR_SIZE
DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, IS_VALID_TIMEOUT, shouldIgnoreCaseOnFieldComparisons, Types_NCLOB, Types_SQLXML
Constructor and Description |
---|
Informix11Platform()
Creates a new
Informix11Platform . |
Modifier and Type | Method and Description |
---|---|
boolean |
dontBindUpdateAllQueryUsingTempTables()
Returns
true when invoked to indicate that parameter
binding must not be used when working with temporary
tables as part of an UPDATE query. |
java.lang.Object |
getObjectFromResultSet(java.sql.ResultSet resultSet,
int columnNumber,
int jdbcType,
AbstractSession session)
Overrides
DatabasePlatform.getObjectFromResultSet(ResultSet,
int, int, AbstractSession) so that if the supplied jdbcType is equal to Types.LONGVARCHAR , then the ResultSet.getString(int) method (instead of the ResultSet.getObject(int) method) is used to fetch the "raw"
value of the column indicated by the supplied columnNumber from the supplied ResultSet . |
DatabaseTable |
getTempTableForTable(DatabaseTable table)
Overrides the superclass implementation to return a new
DatabaseTable with no DatabaseTable.getTableQualifier(). |
boolean |
isInformixOuterJoin()
Overrides the default behavior to return
false ,
indicating that ANSI OUTER JOIN syntax should be used,
since all modern versions of Informix support it. |
boolean |
shouldAlwaysUseTempStorageForModifyAll()
Returns
true when invoked to force Informix to use
temporary storage when constructing bulk UPDATE
statements. |
boolean |
supportsLocalTempTables()
Returns
true when invoked to indicate that Informix does
indeed support local temporary tables. |
void |
writeUpdateOriginalFromTempTableSql(java.io.Writer writer,
DatabaseTable table,
java.util.Collection pkFields,
java.util.Collection assignedFields)
Overrides
DatabasePlatform.writeUpdateOriginalFromTempTableSql(Writer,
DatabaseTable, Collection, Collection) to ensure that a SET clause that is supposed to set a value for only one column
does not wrap that column name in parentheses. |
buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, getMaxFieldNameSize, getSelectForUpdateString, initializeConnectionData, isAlterSequenceObjectSupported, isInformix, maximumNumericValues, minimumNumericValues, printFieldIdentityClause, printFieldTypeSize, requiresProcedureCallBrackets, shouldPrintConstraintNameAfter, shouldSelectIncludeOrderBy, supportsIdentity, supportsSequenceObjects
addBatch, addStructConverter, allowsSizeInProcedureArguments, appendLiteralToCall, appendParameter, appendParameterInternal, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildCallWithReturning, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, canBuildCallWithReturning, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, copyInto, createArray, createArray, createStruct, createStruct, executeBatch, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchBeginString, getBatchDelimiterString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, getDriverSupportsNVarChar, getDropCascadeString, getDropDatabaseSchemaString, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getIndexNamePrefix, getInOutputProcedureToken, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getOutputProcedureToken, getPartitioningCallback, getPingSQL, getProcedureArgumentSetter, getProcedureArgumentString, getProcedureAsString, getProcedureBeginString, getProcedureCallHeader, getProcedureCallTail, getProcedureEndString, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureParameterPrefix, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTransactionIsolation, getTypeConverters, getUniqueConstraintDeletionString, getUseNationalCharacterVaryingTypeForString, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, hasPartitioningCallback, initialize, isCastRequired, isDynamicSQLRequiredForFunctions, isForUpdateCompatibleWithDistinct, isJDBCExecuteCompliant, isLobCompatibleWithDistinct, isLockTimeoutException, isNullAllowedInSelectClause, isOutputAllowWithResultSet, isRowCountOutputParameterRequired, isXDBDocument, minimumTimeIncrement, prepareBatchStatement, printFieldNotNullClause, printFieldNullClause, printFieldUnique, printSQLSelectStatement, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallOuputToken, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setBatchWritingMechanism, setCastSizeForVarcharParameter, setCursorCode, setDriverName, setDriverSupportsNVarChar, setIsCastRequired, setMaxBatchWritingSize, setParameterValueInDatabaseCall, setPartitioningCallback, setPingSQL, setPrintInnerJoinInWhereClause, setPrintOuterJoinInWhereClause, setSequenceCounterFieldName, setSequenceNameFieldName, setSequenceTableName, setShouldBindAllParameters, setShouldBindLiterals, setShouldCacheAllStatements, setShouldCreateIndicesOnForeignKeys, setShouldForceFieldNamesToUpperCase, setShouldIgnoreCaseOnFieldComparisons, setShouldOptimizeDataConversion, setShouldTrimStrings, setShouldUseRownumFiltering, setStatementCacheSize, setStoredProcedureTerminationToken, setStringBindingSize, setSupportsAutoCommit, setTableCreationSuffix, setTransactionIsolation, setUseJDBCStoredProcedureSyntax, setUseNationalCharacterVaryingTypeForString, setUsesBatchWriting, setUsesByteArrayBinding, setUsesJDBCBatchWriting, setUsesNativeBatchWriting, setUsesNativeSQL, setUsesStreamsForBinding, setUsesStringBinding, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnForeignKeys, shouldCreateIndicesOnUniqueKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintFieldIdentityClause, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseJDBCOuterJoinSyntax, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsIndividualTableLocking, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsStoredFunctions, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, supportsVPD, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, wasFailureCommunicationBased, writeAddColumnClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeInsertIntoTableSql, writeLOB, writeParameterMarker, writeTableCreationSuffix
addSequence, addSequence, buildNativeCall, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, clone, convertObject, createConnectionCustomizer, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultNativeSequenceToTable, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getTimestampQuery, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, isAccess, isAttunity, isCloudscape, isDB2, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isMaxDB, isMySQL, isODBC, isOracle, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, supportsNativeSequenceNumbers, toString, usesPlatformDefaultSequence
public Informix11Platform()
Informix11Platform
. Calls DatabasePlatform.setShouldBindLiterals(boolean)
with false
as a
parameter value.public boolean isInformixOuterJoin()
false
,
indicating that ANSI OUTER JOIN
syntax should be used,
since all modern versions of Informix support it.isInformixOuterJoin
in class InformixPlatform
false
when invokedpublic boolean dontBindUpdateAllQueryUsingTempTables()
true
when invoked to indicate that parameter
binding must not be used when working with temporary
tables as part of an UPDATE
query.
Parsing the English is a little difficult in this method name. It means: "Do not bind parameters in queries that are part of an overall 'update all' operation where temporary tables are being used."
dontBindUpdateAllQueryUsingTempTables
in class DatabasePlatform
true
when invokedpublic boolean shouldAlwaysUseTempStorageForModifyAll()
true
when invoked to force Informix to use
temporary storage when constructing bulk UPDATE
statements.shouldAlwaysUseTempStorageForModifyAll
in class DatabasePlatform
true
in all casespublic boolean supportsLocalTempTables()
true
when invoked to indicate that Informix does
indeed support local temporary tables.
local is defined by EclipseLink in DatabasePlatform
to mean:
"Local" means that several threads may create
temporary tables with the same name.
Local temporary table is created in the beginning of UpdateAllQuery
execution and dropped in the end of it.
supportsLocalTempTables
in class DatabasePlatform
true
when invokedpublic DatabaseTable getTempTableForTable(DatabaseTable table)
DatabaseTable
with no DatabaseTable.getTableQualifier(). Informix 11.50 and above do
not support table qualifiers of any kind on temporary tables.getTempTableForTable
in class DatabasePlatform
table
- the DatabaseTable
for which a temporary
DatabaseTable
should be returned; must not be null
DatabaseTable
with no table qualifierjava.lang.IllegalArgumentException
- if table
is null
public void writeUpdateOriginalFromTempTableSql(java.io.Writer writer, DatabaseTable table, java.util.Collection pkFields, java.util.Collection assignedFields) throws java.io.IOException
DatabasePlatform.writeUpdateOriginalFromTempTableSql(Writer,
DatabaseTable, Collection, Collection)
to ensure that a SET
clause that is supposed to set a value for only one column
does not wrap that column name in parentheses.
The code for this method is identical to that of the stock
H2Platform
, since the H2 database has the same
requirement.
writeUpdateOriginalFromTempTableSql
in class DatabasePlatform
writer
- the Writer
that will be writing SQL; must
not be null
table
- the DatabaseTable
to be updated; must not be
null
pkFields
- a Collection
of DatabaseField
s
each of which is a primary key of the table to be updated; must
not be null
assignedFields
- a Collection
of DatabaseField
s that are receiving updated values; must not be
null
java.io.IOException
- if an input/output error is thrown by the
supplied Writer
java.lang.NullPointerException
- if any of the supplied parameters
is null
public java.lang.Object getObjectFromResultSet(java.sql.ResultSet resultSet, int columnNumber, int jdbcType, AbstractSession session) throws java.sql.SQLException
DatabasePlatform.getObjectFromResultSet(ResultSet,
int, int, AbstractSession)
so that if the supplied jdbcType
is equal to Types.LONGVARCHAR
, then the ResultSet.getString(int)
method (instead of the ResultSet.getObject(int)
method) is used to fetch the "raw"
value of the column indicated by the supplied columnNumber
from the supplied ResultSet
.
This works around an issue with the Informix JDBC driver,
version 3.70.JC7 and earlier, where a TEXT
column is
reported to be mappable to the JDBC type of LONGVARCHAR
, but the actual object returned by
ResultSet.getObject(int)
is a byte[]
(instead of
either a char[]
or a String
). Invoking ResultSet.getString(int)
instead returns the desired result.
getObjectFromResultSet
in class DatabasePlatform
resultSet
- the ResultSet
to get an Object
from; may be
null
columnNumber
- the 1
-based column number indicating
the column to usejdbcType
- an int
indicating the JDBC type of which the column in the ResultSet
indicated
by the supplied columnNumber
is expected to besession
- an AbstractSession
that, when used at all,
is passed to the superclass implementation of this method; may be
null
Object
resulting from a call to ResultSet.getObject(int)
; may be null
java.sql.SQLException
- if any error occursEclipseLink 2.6.3, "build v20160428-59c81c5" API Reference