Class Oracle8Platform
java.lang.Object
org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
org.eclipse.persistence.platform.database.DatabasePlatform
org.eclipse.persistence.platform.database.OraclePlatform
org.eclipse.persistence.platform.database.oracle.Oracle8Platform
- All Implemented Interfaces:
Serializable,Cloneable,org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>,org.eclipse.persistence.internal.databaseaccess.Platform
- Direct Known Subclasses:
Oracle9Platform
Purpose: Supports certain new Oracle 8 data types, and usage of certain Oracle JDBC specific APIs.
Supports Oracle thin JDBC driver LOB >4k binding workaround.
Creates BLOB and CLOB type for byte[] and char[] for table creation.
Supports object-relational data-type creation.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intThe LOB value limits when the Locator is required for the writingprotected booleanLocator is required for Oracle thin driver to write LOB value exceeds the limitsFields inherited from class org.eclipse.persistence.platform.database.OraclePlatform
BRACKET_END, END_FROM, END_FROM_ID, FROM, FROM_ID, HINT_END, HINT_START, LOCK_END, LOCK_START_PREFIX, LOCK_START_PREFIX_WHERE, LOCK_START_SUFFIX, MAX_ROW, MIN_ROW, ORDER_BY_ID, SELECT, SELECT_ID_PREFIX, SELECT_ID_SUFFIX, shouldPrintForUpdateClause, supportsIdentity, vpdClearIdentifierQuery, vpdSetIdentifierQueryFields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform
DEFAULT_VARCHAR_SIZEFields inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
batchWritingMechanism, castSizeForVarcharParameter, classTypes, cursorCode, DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, driverName, driverSupportsNationalCharacterVarying, fieldTypes, IS_VALID_TIMEOUT, isCastRequired, maxBatchWritingSize, partitioningCallback, pingSQL, printInnerJoinInWhereClause, printOuterJoinInWhereClause, shouldBindAllParameters, shouldBindLiterals, shouldBindPartialParameters, shouldCacheAllStatements, shouldCreateIndicesOnForeignKeys, shouldForceBindAllParameters, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldOptimizeDataConversion, shouldTrimStrings, statementCacheSize, storedProcedureTerminationToken, stringBindingSize, structConverters, supportsAutoCommit, tableCreationSuffix, transactionIsolation, typeConverters, useJDBCStoredProcedureSyntax, useNationalCharacterVarying, useRownumFiltering, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesStreamsForBinding, usesStringBindingFields inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
conversionManager, dataTypesConvertedFromAClass, dataTypesConvertedToAClass, defaultNativeSequenceToTable, defaultSeqenceAtNextValue, defaultSequence, endDelimiter, platformOperators, sequences, sequencesLock, startDelimiter, supportsReturnGeneratedKeys, tableQualifier, timestampQuery -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected HashtableINTERNAL:voidcopyInto(org.eclipse.persistence.internal.databaseaccess.Platform platform) INTERNAL: Allow for conversion from the Oralce type to the Java type.createArray(String elementDataTypeName, Object[] elements, Connection connection) INTERNAL: Platforms that support java.sql.Array may override this method.createStruct(String structTypeName, Object[] attributes, Connection connection) INTERNAL: Platforms that support java.sql.Struct may override this method.voidfreeTemporaryObject(Object value) INTERNAL: Used by Oracle platforms during reading of ResultSet to free temporary LOBs.getConnection(org.eclipse.persistence.internal.sessions.AbstractSession session, Connection connection) INTERNAL: This method is used to unwrap the oracle connection wrapped by the application server.getCustomModifyValueForCall(Call call, Object value, org.eclipse.persistence.internal.helper.DatabaseField field, boolean shouldBind) INTERNAL Used by SQLCall.translate(..) Typically there is no field translation (and this is default implementation).intPUBLIC: Return the BLOB/CLOB value limits on thin driver.getRefValue(Ref ref, Connection connection) INTERNAL: Overrides DatabasePlatform method.protected booleanINTERNAL: Used in writeLOB method only to identify a BLOBprotected booleanINTERNAL: Used in writeLOB method only to identify a CLOBbooleanINTERNAL: Indicates whether app.protected booleanlobValueExceedsLimit(Object value) INTERNAL: Return if the LOB value size is larger than the limit, i.e.voidsetLobValueLimits(int lobValueLimits) PUBLIC: Set the BLOB/CLOB value limits on thin driver.voidsetShouldUseLocatorForLOBWrite(boolean usesLocatorForLOBWrite) PUBLIC: Set if the locator is required for the LOB write.booleanshouldUseCustomModifyForCall(org.eclipse.persistence.internal.helper.DatabaseField field) INTERNAL Used by SQLCall.appendModify(..) If the field should be passed to customModifyInDatabaseCall, retun true, otherwise false.booleanPUBLIC: Return if the locator is required for the LOB write.voidwriteLOB(org.eclipse.persistence.internal.helper.DatabaseField field, Object value, ResultSet resultSet, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Write LOB value - works on Oracle 10 and newerMethods inherited from class org.eclipse.persistence.platform.database.OraclePlatform
allowsSizeInProcedureArguments, appendByteArray, appendCalendar, appendDate, appendTime, appendTimestamp, buildCallWithReturning, buildFirstRowsHint, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, canBuildCallWithReturning, canUnwrapOracleConnection, checkTableExists, clearOracleConnectionCache, createExpressionFor, exceptOperator, getAssignmentString, getBatchBeginString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getDeclareBeginString, getDropCascadeString, getDropDatabaseSchemaString, getINClauseLimit, getMaxFieldNameSize, getNativeTableInfo, getObjectFromResultSet, getProcedureArgument, getProcedureCallHeader, getProcedureCallTail, getSelectForUpdateString, getSelectForUpdateWaitString, getStoredProcedureParameterPrefix, getSystemChangeNumberQuery, getTableExistsQuery, getTimestampQuery, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, initializeConnectionData, initializePlatformOperators, isAlterSequenceObjectSupported, isForUpdateCompatibleWithDistinct, isLobCompatibleWithDistinct, isLockTimeoutException, isOracle, isRowCountOutputParameterRequired, logOperator, maximumNumericValues, minimumNumericValues, operatorLocate, operatorLocate2, operatorOuterJoin, oracleDateName, printFieldNullClause, printSQLSelectStatement, regexpOperator, serverTimestampString, setSupportsIdentity, shouldPrintForUpdateClause, shouldPrintStoredProcedureArgumentNameInCall, shouldUseJDBCOuterJoinSyntax, supportsAutoConversionToNumericForArithmeticOperations, supportsIdentity, supportsSelectForUpdateNoWait, supportsSequenceObjects, supportsStoredFunctions, supportsVPD, supportsWaitForUpdate, unwrapOracleConnection, useJDBCStoredProcedureSyntax, wasFailureCommunicationBasedMethods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
addBatch, addStructConverter, allowBindingForSelectClause, appendBoolean, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildClassTypes, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, createArray, createPlatformDefaultSequence, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, getBatchDelimiterString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlPrefix, getCreateTempTableSqlSuffix, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getDefaultSequenceTableName, getDriverSupportsNVarChar, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIndexNamePrefix, getInOutputProcedureToken, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getOutputProcedureToken, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, getProcedureArgument, getProcedureArgumentString, getProcedureAsString, getProcedureBeginString, getProcedureEndString, getProcedureOptionList, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTempTableForTable, getTransactionIsolation, getTypeConverters, getUniqueConstraintDeletionString, getUseNationalCharacterVaryingTypeForString, hasPartitioningCallback, initialize, isCastRequired, isDynamicSQLRequiredForFunctions, isInformixOuterJoin, isJDBCExecuteCompliant, isNullAllowedInSelectClause, isOutputAllowWithResultSet, isXDBDocument, minimumTimeIncrement, prepareBatchStatement, printFieldIdentityClause, printFieldNotNullClause, printFieldTypeSize, printFieldTypeSize, printFieldUnique, printFieldUnique, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, registerOutputParameter, registerOutputParameter, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallBrackets, requiresProcedureCallOuputToken, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setBatchWritingMechanism, setCastSizeForVarcharParameter, setClassTypes, setCursorCode, setDriverName, setDriverSupportsNVarChar, setFieldTypes, setIsCastRequired, setMaxBatchWritingSize, setNullFromDatabaseField, setNullFromDatabaseField, setParameterValueInDatabaseCall, setParameterValueInDatabaseCall, setPartitioningCallback, setPingSQL, setPrintInnerJoinInWhereClause, setPrintOuterJoinInWhereClause, setSequenceCounterFieldName, setSequenceNameFieldName, setSequenceTableName, setShouldBindAllParameters, setShouldBindLiterals, setShouldBindPartialParameters, setShouldCacheAllStatements, setShouldCreateIndicesOnForeignKeys, setShouldForceBindAllParameters, setShouldForceFieldNamesToUpperCase, setShouldIgnoreCaseOnFieldComparisons, setShouldOptimizeDataConversion, setShouldTrimStrings, setShouldUseRownumFiltering, setStatementCacheSize, setStoredProcedureTerminationToken, setStringBindingSize, setSupportsAutoCommit, setTableCreationSuffix, setTransactionIsolation, setUseJDBCStoredProcedureSyntax, setUseNationalCharacterVaryingTypeForString, setUsesBatchWriting, setUsesByteArrayBinding, setUsesJDBCBatchWriting, setUsesNativeBatchWriting, setUsesNativeSQL, setUsesStreamsForBinding, setUsesStringBinding, shouldAlwaysUseTempStorageForModifyAll, shouldBindAllParameters, shouldBindLiterals, shouldBindPartialParameters, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnForeignKeys, shouldCreateIndicesOnUniqueKeys, shouldForceBindAllParameters, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsIndividualTableLocking, supportsLocalTempTables, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOrderByParameters, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, writeAddColumnClause, writeAutoAssignmentSetClause, writeAutoJoinWhereClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeFields, writeFieldsAutoClause, writeFieldsList, writeInsertIntoTableSql, writeJoinWhereClause, writeParameterMarker, writeTableCreationSuffix, writeUpdateOriginalFromTempTableSqlMethods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
addOperator, addSequence, addSequence, buildNativeCall, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, clone, convertObject, createConnectionCustomizer, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultNativeSequenceToTable, getDefaultSeqenceAtNextValue, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, initIdentitySequences, isAccess, isAttunity, isCloudscape, isDB2, isDB2Z, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle12, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeIdentitySequences, removeSequence, sequencesAfterCloneCleanup, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSeqenceAtNextValue, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setSupportsReturnGeneratedKeys, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsNativeSequenceNumbers, supportsReturnGeneratedKeys, toString, usesPlatformDefaultSequence
-
Field Details
-
usesLocatorForLOBWrite
protected boolean usesLocatorForLOBWriteLocator is required for Oracle thin driver to write LOB value exceeds the limits -
lobValueLimits
protected int lobValueLimitsThe LOB value limits when the Locator is required for the writing
-
-
Constructor Details
-
Oracle8Platform
public Oracle8Platform()
-
-
Method Details
-
buildFieldTypes
INTERNAL:- Overrides:
buildFieldTypesin classOraclePlatform
-
copyInto
public void copyInto(org.eclipse.persistence.internal.databaseaccess.Platform platform) INTERNAL: Allow for conversion from the Oralce type to the Java type.- Specified by:
copyIntoin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
copyIntoin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
lobValueExceedsLimit
INTERNAL: Return if the LOB value size is larger than the limit, i.e. 4k. -
getConnection
public Connection getConnection(org.eclipse.persistence.internal.sessions.AbstractSession session, Connection connection) INTERNAL: This method is used to unwrap the oracle connection wrapped by the application server. TopLink needs this unwrapped connection for certain Oracle Specific support. (ie TIMESTAMPTZ, LOB) This is added as a workaround for bug 4565190- Overrides:
getConnectionin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getCustomModifyValueForCall
public Object getCustomModifyValueForCall(Call call, Object value, org.eclipse.persistence.internal.helper.DatabaseField field, boolean shouldBind) INTERNAL Used by SQLCall.translate(..) Typically there is no field translation (and this is default implementation). However on different platforms (Oracle) there are cases such that the values for binding and appending may be different (BLOB, CLOB). In these special cases the method returns a wrapper object which knows whether it should be bound or appended and knows how to do that.- Specified by:
getCustomModifyValueForCallin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
getCustomModifyValueForCallin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldUseCustomModifyForCall
public boolean shouldUseCustomModifyForCall(org.eclipse.persistence.internal.helper.DatabaseField field) INTERNAL Used by SQLCall.appendModify(..) If the field should be passed to customModifyInDatabaseCall, retun true, otherwise false. Methods shouldCustomModifyInDatabaseCall and customModifyInDatabaseCall should be kept in sync: shouldCustomModifyInDatabaseCall should return true if and only if the field is handled by customModifyInDatabaseCall.- Specified by:
shouldUseCustomModifyForCallin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
shouldUseCustomModifyForCallin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
writeLOB
public void writeLOB(org.eclipse.persistence.internal.helper.DatabaseField field, Object value, ResultSet resultSet, org.eclipse.persistence.internal.sessions.AbstractSession session) throws SQLException INTERNAL: Write LOB value - works on Oracle 10 and newer- Overrides:
writeLOBin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
SQLException
-
isBlob
INTERNAL: Used in writeLOB method only to identify a BLOB -
isClob
INTERNAL: Used in writeLOB method only to identify a CLOB -
isNativeConnectionRequiredForLobLocator
public boolean isNativeConnectionRequiredForLobLocator()INTERNAL: Indicates whether app. server should unwrap connection to use lob locator.- Overrides:
isNativeConnectionRequiredForLobLocatorin classOraclePlatform
-
setShouldUseLocatorForLOBWrite
public void setShouldUseLocatorForLOBWrite(boolean usesLocatorForLOBWrite) PUBLIC: Set if the locator is required for the LOB write. The default is true. For Oracle thin driver, the locator is recommended for large size ( >4k for Oracle8, >5.9K for Oracle9) BLOB/CLOB value write. -
shouldUseLocatorForLOBWrite
public boolean shouldUseLocatorForLOBWrite()PUBLIC: Return if the locator is required for the LOB write. The default is true. For Oracle thin driver, the locator is recommended for large size ( >4k for Oracle8, >5.9K for Oracle9) BLOB/CLOB value write. -
getLobValueLimits
public int getLobValueLimits()PUBLIC: Return the BLOB/CLOB value limits on thin driver. The default value is 0. If usesLocatorForLOBWrite is true, locator will be used in case the lob's size is larger than lobValueLimit. -
setLobValueLimits
public void setLobValueLimits(int lobValueLimits) PUBLIC: Set the BLOB/CLOB value limits on thin driver. The default value is 0. If usesLocatorForLOBWrite is true, locator will be used in case the lob's size is larger than lobValueLimit. -
createArray
public Array createArray(String elementDataTypeName, Object[] elements, Connection connection) throws SQLException INTERNAL: Platforms that support java.sql.Array may override this method.- Overrides:
createArrayin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Returns:
- Array
- Throws:
SQLException
-
createStruct
public Struct createStruct(String structTypeName, Object[] attributes, Connection connection) throws SQLException INTERNAL: Platforms that support java.sql.Struct may override this method.- Overrides:
createStructin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Returns:
- Struct
- Throws:
SQLException
-
getRefValue
INTERNAL: Overrides DatabasePlatform method.- Overrides:
getRefValuein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Returns:
- String
- Throws:
SQLException
-
freeTemporaryObject
INTERNAL: Used by Oracle platforms during reading of ResultSet to free temporary LOBs.- Overrides:
freeTemporaryObjectin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
SQLException
-