public class Informix11Platform extends InformixPlatform
InformixPlatform that fixes many EclipseLink bugs related to Informix support.DEFAULT_VARCHAR_SIZE| Constructor and Description |
|---|
Informix11Platform()
Creates a new
JenzabarInformixPlatform. |
| 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, org.eclipse.persistence.internal.sessions.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. |
org.eclipse.persistence.internal.helper.DatabaseTable |
getTempTableForTable(org.eclipse.persistence.internal.helper.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, org.eclipse.persistence.internal.helper.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, isAlterSequenceObjectSupported, isInformix, maximumNumericValues, minimumNumericValues, printFieldIdentityClause, requiresProcedureCallBrackets, shouldPrintConstraintNameAfter, shouldSelectIncludeOrderBy, supportsIdentity, supportsSequenceObjectsaddBatch, 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, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, 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, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, hasPartitioningCallback, initialize, initializeConnectionData, isCastRequired, isDynamicSQLRequiredForFunctions, isForUpdateCompatibleWithDistinct, isJDBCExecuteCompliant, isLobCompatibleWithDistinct, isLockTimeoutException, isNullAllowedInSelectClause, isOutputAllowWithResultSet, isRowCountOutputParameterRequired, isXDBDocument, minimumTimeIncrement, prepareBatchStatement, printFieldNotNullClause, printFieldNullClause, printFieldTypeSize, printFieldUnique, printSQLSelectStatement, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallOuputToken, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setBatchWritingMechanism, setCastSizeForVarcharParameter, setCursorCode, setDriverName, setIsCastRequired, setMaxBatchWritingSize, setParameterValueInDatabaseCall, setPartitioningCallback, setPingSQL, setPrintInnerJoinInWhereClause, setPrintOuterJoinInWhereClause, setSequenceCounterFieldName, setSequenceNameFieldName, setSequenceTableName, setShouldBindAllParameters, setShouldBindLiterals, setShouldCacheAllStatements, setShouldCreateIndicesOnForeignKeys, setShouldForceFieldNamesToUpperCase, setShouldIgnoreCaseOnFieldComparisons, setShouldOptimizeDataConversion, setShouldTrimStrings, setShouldUseRownumFiltering, setStatementCacheSize, setStringBindingSize, setSupportsAutoCommit, setTableCreationSuffix, setTransactionIsolation, setUseJDBCStoredProcedureSyntax, setUsesBatchWriting, setUsesByteArrayBinding, setUsesJDBCBatchWriting, setUsesNativeBatchWriting, setUsesNativeSQL, setUsesStreamsForBinding, setUsesStringBinding, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnForeignKeys, shouldCreateIndicesOnUniqueKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintFieldIdentityClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseJDBCOuterJoinSyntax, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, 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, writeTableCreationSuffixaddSequence, 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, usesPlatformDefaultSequencepublic Informix11Platform()
JenzabarInformixPlatform. 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 InformixPlatformfalse 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 org.eclipse.persistence.internal.databaseaccess.DatabasePlatformtrue when invokedpublic boolean shouldAlwaysUseTempStorageForModifyAll()
true when invoked to force Informix to use temporary storage when constructing bulk UPDATE statements.shouldAlwaysUseTempStorageForModifyAll in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatformtrue 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 org.eclipse.persistence.internal.databaseaccess.DatabasePlatformtrue when invokedpublic org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable(org.eclipse.persistence.internal.helper.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 org.eclipse.persistence.internal.databaseaccess.DatabasePlatformtable - the DatabaseTable for which a temporary DatabaseTable should be returned; must not be nullDatabaseTable with no table qualifierjava.lang.IllegalArgumentException - if table is null
public void writeUpdateOriginalFromTempTableSql(java.io.Writer writer,
org.eclipse.persistence.internal.helper.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 org.eclipse.persistence.internal.databaseaccess.DatabasePlatformwriter - the Writer that will be writing SQL; must not be nulltable - the DatabaseTable to be updated; must not be nullpkFields - a Collection of DatabaseFields each of which is a primary key of the table to be updated; must not be nullassignedFields - a Collection of DatabaseFields that are receiving updated values; must not be nulljava.io.IOException - if an input/output error is thrown by the supplied Writerjava.lang.NullPointerException - if any of the supplied parameters is null
public java.lang.Object getObjectFromResultSet(java.sql.ResultSet resultSet,
int columnNumber,
int jdbcType,
org.eclipse.persistence.internal.sessions.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 org.eclipse.persistence.internal.databaseaccess.DatabasePlatformresultSet - the ResultSet to get an Object from; may be nullcolumnNumber - 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 nullObject resulting from a call to ResultSet.getObject(int); may be nulljava.sql.SQLException - if any error occurs