EclipseLink 2.2.0, build 'v20110202-r8913' API Reference

org.eclipse.persistence.platform.database
Class OraclePlatform

java.lang.Object
  extended by org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      extended by org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
          extended by org.eclipse.persistence.platform.database.DatabasePlatform
              extended by org.eclipse.persistence.platform.database.OraclePlatform
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, org.eclipse.persistence.internal.databaseaccess.Platform

public class OraclePlatform
extends DatabasePlatform

Purpose: Provides Oracle specific behavior.

Responsibilities:

See Also:
Serialized Form
Since:
TOPLink/Java 1.0

Field Summary
protected  boolean supportsIdentity
          Advanced attribute indicating whether identity is supported, see comment to setSupportsIdentity method.
 
Fields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform
DEFAULT_VARCHAR_SIZE
 
Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
castSizeForVarcharParameter, classTypes, cursorCode, DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, fieldTypes, isCastRequired, maxBatchWritingSize, pingSQL, printOuterJoinInWhereClause, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldOptimizeDataConversion, shouldTrimStrings, statementCacheSize, stringBindingSize, structConverters, supportsAutoCommit, tableCreationSuffix, transactionIsolation, typeConverters, Types_NCLOB, Types_SQLXML, useRownumFiltering, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesStreamsForBinding, usesStringBinding
 
Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
conversionManager, dataTypesConvertedFromAClass, dataTypesConvertedToAClass, defaultSequence, endDelimiter, platformOperators, sequences, startDelimiter, tableQualifier, timestampQuery
 
Constructor Summary
OraclePlatform()
           
 
Method Summary
 boolean allowsSizeInProcedureArguments()
           
protected  void appendByteArray(byte[] bytes, java.io.Writer writer)
          INTERNAL: If using native SQL then print a byte[] literally as a hex string otherwise use ODBC format as provided in DatabasePlatform.
protected  void appendCalendar(java.util.Calendar calendar, java.io.Writer writer)
          INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format.
protected  void appendDate(java.sql.Date date, java.io.Writer writer)
          INTERNAL: Appends an Oracle specific date if usesNativeSQL is true otherwise use the ODBC format.
protected  void appendTime(java.sql.Time time, java.io.Writer writer)
          INTERNAL: Appends an Oracle specific time if usesNativeSQL is true otherwise use the ODBC format.
protected  void appendTimestamp(java.sql.Timestamp timestamp, java.io.Writer writer)
          INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format.
 ExpressionOperator atan2Operator()
          INTERNAL: Build operator.
 org.eclipse.persistence.internal.databaseaccess.DatabaseCall buildCallWithReturning(SQLCall sqlCall, java.util.Vector returnFields)
          INTERNAL: Returns null unless the platform supports call with returning
protected  java.util.Hashtable buildFieldTypes()
          INTERNAL:
 ValueReadQuery buildSelectQueryForIdentity(java.lang.String qualifiedSeqName, java.lang.Integer size)
          INTERNAL: Though Oracle doesn't support identity it could be imitated, see comment to setSupportsIdentity method.
 ValueReadQuery buildSelectQueryForSequenceObject(java.lang.String qualifiedSeqName, java.lang.Integer size)
          INTERNAL: Produce a DataReadQuery which updates(!)
 boolean canBuildCallWithReturning()
          INTERNAL: Indicates whether the platform can build call with returning.
 boolean canUnwrapOracleConnection()
          INTERNAL: Indicates whether this Oracle platform can unwrap Oracle connection.
 void clearOracleConnectionCache(java.sql.Connection conn)
          INTERNAL: Clears both implicit and explicit caches of OracleConnection on Oracle9Platform, noop here.
protected  ExpressionOperator currentDateOperator()
           
protected  ExpressionOperator currentTimeOperator()
           
 java.lang.String getAssignmentString()
          INTERNAL: Used for stored function calls.
 java.lang.String getBatchBeginString()
          Used for batch writing and sp defs.
 java.lang.String getBatchEndString()
          Used for batch writing and sp defs.
 java.lang.String getDeclareBeginString()
          INTERNAL: DECLARE stanza header for Anonymous PL/SQL block
 int getMaxFieldNameSize()
          INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.
 java.util.Vector getNativeTableInfo(java.lang.String table, java.lang.String creator, org.eclipse.persistence.internal.sessions.AbstractSession session)
          Return the catalog information through using the native SQL catalog selects.
 java.lang.Object getObjectFromResultSet(java.sql.ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Get a timestamp value from a result set.
 java.lang.String getProcedureArgumentSetter()
          Used for sp calls.
 java.lang.String getProcedureCallHeader()
          Used for sp calls.
 java.lang.String getProcedureCallTail()
          Used for sp calls.
 java.lang.String getSelectForUpdateString()
           
 java.lang.String getSelectForUpdateWaitString(java.lang.Integer waitTimeout)
           
 java.lang.String getStoredProcedureParameterPrefix()
           
 java.lang.String getStoredProcedureTerminationToken()
           
 ValueReadQuery getSystemChangeNumberQuery()
          PUBLIC: The query to select the current system change number from Oracle.
 ValueReadQuery getTimestampQuery()
          PUBLIC: This method returns the query to select the timestamp from the server for Oracle.
protected  void initializePlatformOperators()
          Initialize any platform-specific operators
 boolean isAlterSequenceObjectSupported()
          INTERNAL: Override this method if the platform supports sequence objects and it's possible to alter sequence object's increment in the database.
 boolean isForUpdateCompatibleWithDistinct()
          INTERNAL: Indicates whether SELECT DISTINCT ...
 boolean isLockTimeoutException(DatabaseException e)
          Return true if the given exception occurred as a result of a lock time out exception (WAIT clause).
 boolean isNativeConnectionRequiredForLobLocator()
          INTERNAL: Used by derived platforms (Oracle8Platform and higher) to indicate whether app. server should unwrap connection to use lob locator.
 boolean isOracle()
           
protected  ExpressionOperator logOperator()
          Create the log operator for this platform
 java.util.Hashtable maximumNumericValues()
          Builds a table of maximum numeric values keyed on java class.
 java.util.Hashtable minimumNumericValues()
          Builds a table of minimum numeric values keyed on java class.
protected  ExpressionOperator operatorLocate()
          INTERNAL: Override the default locate operator
protected  ExpressionOperator operatorLocate2()
          INTERNAL: Override the default locate operator
protected  ExpressionOperator operatorOuterJoin()
          Create the outer join operator for this platform
 void printFieldNullClause(java.io.Writer writer)
          INTERNAL: Append the receiver's field 'NULL' constraint clause to a writer.
 void printSQLSelectStatement(org.eclipse.persistence.internal.databaseaccess.DatabaseCall call, org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter printer, org.eclipse.persistence.internal.expressions.SQLSelectStatement statement)
          INTERNAL: Print the SQL representation of the statement on a stream, storing the fields in the DatabaseCall.
 java.lang.String serverTimestampString()
          Return the current date and time from the server.
 void setSupportsIdentity(boolean supportsIdentity)
          ADVANCED: Oracle db doesn't support identity.
 boolean shouldUseJDBCOuterJoinSyntax()
          JDBC defines and outer join syntax, many drivers do not support this.
 boolean supportsAutoConversionToNumericForArithmeticOperations()
          Some db allow VARCHAR db field to be used in arithmetic operations automatically converting them to numeric: UPDATE OL_PHONE SET PHONE_ORDER_VARCHAR = (PHONE_ORDER_VARCHAR + 1) WHERE ...
 boolean supportsIdentity()
          INTERNAL: Indicates whether the platform supports identity.
 boolean supportsSelectForUpdateNoWait()
          Returns true if the database supports SQL syntax not to wait on a SELECT..FOR UPADTE (i.e.
 boolean supportsSequenceObjects()
          INTERNAL: Indicates whether the platform supports sequence objects.
 boolean supportsStoredFunctions()
          INTERNAL: Return if database stored functions are supported.
protected  ExpressionOperator todayOperator()
          Create the sysdate operator for this platform
 java.sql.Connection unwrapOracleConnection(java.sql.Connection connection)
          INTERNAL: If can unwrap returns unwrapped Oracle connection, otherwise original connection.
 boolean wasFailureCommunicationBased(java.sql.SQLException exception, java.sql.Connection connection, org.eclipse.persistence.internal.sessions.AbstractSession sessionForProfile)
          INTERNAL: A call to this method will perform a platform based check on the connection and exception error code to determine if the connection is still valid or if a communication error has occurred.
 
Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
addBatch, addStructConverter, appendBoolean, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, autoCommit, beginTransaction, buildClassTypes, buildCreateIndex, buildDropIndex, buildProcedureCallString, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, copyInto, createArray, createArray, createPlatformDefaultSequence, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, freeTemporaryObject, getBatchDelimiterString, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConstraintDeletionString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlPrefix, getCreateTempTableSqlSuffix, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getInOutputProcedureToken, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getOutputProcedureToken, getPingSQL, getProcedureArgumentString, getProcedureAsString, getProcedureBeginString, getProcedureEndString, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTempTableForTable, getTransactionIsolation, getTypeConverters, initialize, isCastRequired, isDynamicSQLRequiredForFunctions, isInformixOuterJoin, isNullAllowedInSelectClause, isXDBDocument, prepareBatchStatement, printFieldIdentityClause, printFieldNotNullClause, printFieldTypeSize, printFieldTypeSize, printFieldUnique, printFieldUnique, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, processResultSet, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallBrackets, requiresProcedureCallOuputToken, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setCastSizeForVarcharParameter, setClassTypes, setCursorCode, setFieldTypes, setIsCastRequired, setMaxBatchWritingSize, setNullFromDatabaseField, setParameterValueInDatabaseCall, setPingSQL, setPrintOuterJoinInWhereClause, setSequenceCounterFieldName, setSequenceNameFieldName, setSequenceTableName, setShouldBindAllParameters, setShouldBindLiterals, setShouldCacheAllStatements, setShouldForceFieldNamesToUpperCase, setShouldIgnoreCaseOnFieldComparisons, setShouldOptimizeDataConversion, setShouldTrimStrings, setShouldUseRownumFiltering, setStatementCacheSize, setStringBindingSize, setSupportsAutoCommit, setTableCreationSuffix, setTransactionIsolation, setUsesBatchWriting, setUsesByteArrayBinding, setUsesJDBCBatchWriting, setUsesNativeBatchWriting, setUsesNativeSQL, setUsesStreamsForBinding, setUsesStringBinding, shouldAlwaysUseTempStorageForModifyAll, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnUniqueKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldNativeSequenceUseTransaction, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsIndividualTableLocking, supportsLocalTempTables, supportsLockingQueriesWithMultipleTables, supportsNativeSequenceNumbers, supportsNestingOuterJoins, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, writeAutoAssignmentSetClause, writeAutoJoinWhereClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeFields, writeFieldsAutoClause, writeFieldsList, writeInsertIntoTableSql, writeJoinWhereClause, writeLOB, writeParameterMarker, writeTableCreationSuffix, writeUpdateOriginalFromTempTableSql
 
Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
addOperator, addSequence, clone, convertObject, createConnectionCustomizer, createSequences, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getUpdateSequenceQuery, hasDefaultSequence, isAccess, isAttunity, isCloudscape, isDB2, isDBase, isDerby, isFirebird, isH2, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle9, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, sequencesAfterCloneCleanup, setConversionManager, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, toString, usesPlatformDefaultSequence
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

supportsIdentity

protected boolean supportsIdentity
Advanced attribute indicating whether identity is supported, see comment to setSupportsIdentity method.

Constructor Detail

OraclePlatform

public OraclePlatform()
Method Detail

allowsSizeInProcedureArguments

public boolean allowsSizeInProcedureArguments()
Overrides:
allowsSizeInProcedureArguments in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

appendByteArray

protected void appendByteArray(byte[] bytes,
                               java.io.Writer writer)
                        throws java.io.IOException
INTERNAL: If using native SQL then print a byte[] literally as a hex string otherwise use ODBC format as provided in DatabasePlatform.

Overrides:
appendByteArray in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.io.IOException

appendDate

protected void appendDate(java.sql.Date date,
                          java.io.Writer writer)
                   throws java.io.IOException
INTERNAL: Appends an Oracle specific date if usesNativeSQL is true otherwise use the ODBC format. Native FORMAT: to_date('1997-11-06','yyyy-mm-dd')

Overrides:
appendDate in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.io.IOException

appendTime

protected void appendTime(java.sql.Time time,
                          java.io.Writer writer)
                   throws java.io.IOException
INTERNAL: Appends an Oracle specific time if usesNativeSQL is true otherwise use the ODBC format. Native FORMAT: to_date(#####, 'sssss').

Overrides:
appendTime in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.io.IOException

appendTimestamp

protected void appendTimestamp(java.sql.Timestamp timestamp,
                               java.io.Writer writer)
                        throws java.io.IOException
INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format. Native Format: to_date ('1997-11-06 10:35:45.0' , 'yyyy-mm-dd hh:mm:ss.n')

Overrides:
appendTimestamp in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.io.IOException

appendCalendar

protected void appendCalendar(java.util.Calendar calendar,
                              java.io.Writer writer)
                       throws java.io.IOException
INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format. Native Format: to_date ('1997-11-06 10:35:45.0' , 'yyyy-mm-dd hh:mm:ss.n')

Overrides:
appendCalendar in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.io.IOException

atan2Operator

public ExpressionOperator atan2Operator()
INTERNAL: Build operator.


buildFieldTypes

protected java.util.Hashtable buildFieldTypes()
INTERNAL:

Overrides:
buildFieldTypes in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

buildCallWithReturning

public org.eclipse.persistence.internal.databaseaccess.DatabaseCall buildCallWithReturning(SQLCall sqlCall,
                                                                                           java.util.Vector returnFields)
INTERNAL: Returns null unless the platform supports call with returning

Overrides:
buildCallWithReturning in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

canBuildCallWithReturning

public boolean canBuildCallWithReturning()
INTERNAL: Indicates whether the platform can build call with returning. In case this method returns true, buildCallWithReturning method may be called.

Overrides:
canBuildCallWithReturning in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

clearOracleConnectionCache

public void clearOracleConnectionCache(java.sql.Connection conn)
INTERNAL: Clears both implicit and explicit caches of OracleConnection on Oracle9Platform, noop here.


getAssignmentString

public java.lang.String getAssignmentString()
INTERNAL: Used for stored function calls.

Overrides:
getAssignmentString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getDeclareBeginString

public java.lang.String getDeclareBeginString()
INTERNAL: DECLARE stanza header for Anonymous PL/SQL block


getBatchBeginString

public java.lang.String getBatchBeginString()
Used for batch writing and sp defs.

Overrides:
getBatchBeginString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getBatchEndString

public java.lang.String getBatchEndString()
Used for batch writing and sp defs.

Overrides:
getBatchEndString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getMaxFieldNameSize

public int getMaxFieldNameSize()
INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.

Overrides:
getMaxFieldNameSize in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getNativeTableInfo

public java.util.Vector getNativeTableInfo(java.lang.String table,
                                           java.lang.String creator,
                                           org.eclipse.persistence.internal.sessions.AbstractSession session)
Return the catalog information through using the native SQL catalog selects. This is required because many JDBC driver do not support meta-data. Willcards can be passed as arguments.


getProcedureArgumentSetter

public java.lang.String getProcedureArgumentSetter()
Used for sp calls.

Overrides:
getProcedureArgumentSetter in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getProcedureCallHeader

public java.lang.String getProcedureCallHeader()
Used for sp calls.

Overrides:
getProcedureCallHeader in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getProcedureCallTail

public java.lang.String getProcedureCallTail()
Used for sp calls.

Overrides:
getProcedureCallTail in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getSelectForUpdateString

public java.lang.String getSelectForUpdateString()
Overrides:
getSelectForUpdateString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getSelectForUpdateWaitString

public java.lang.String getSelectForUpdateWaitString(java.lang.Integer waitTimeout)
Overrides:
getSelectForUpdateWaitString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getStoredProcedureParameterPrefix

public java.lang.String getStoredProcedureParameterPrefix()
Overrides:
getStoredProcedureParameterPrefix in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getStoredProcedureTerminationToken

public java.lang.String getStoredProcedureTerminationToken()
Overrides:
getStoredProcedureTerminationToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

getSystemChangeNumberQuery

public ValueReadQuery getSystemChangeNumberQuery()
PUBLIC: The query to select the current system change number from Oracle. In order to execute this query a database administrator may need to grant execute permission on pl/sql package DBMS_FLASHBACK.


getTimestampQuery

public ValueReadQuery getTimestampQuery()
PUBLIC: This method returns the query to select the timestamp from the server for Oracle.

Specified by:
getTimestampQuery in interface org.eclipse.persistence.internal.databaseaccess.Platform
Overrides:
getTimestampQuery in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

getObjectFromResultSet

public java.lang.Object getObjectFromResultSet(java.sql.ResultSet resultSet,
                                               int columnNumber,
                                               int type,
                                               org.eclipse.persistence.internal.sessions.AbstractSession session)
                                        throws java.sql.SQLException
INTERNAL: Get a timestamp value from a result set. Overrides the default behavior to specifically return a timestamp. Added to overcome an issue with the oracle 9.0.1.4 JDBC driver.

Overrides:
getObjectFromResultSet in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
java.sql.SQLException

initializePlatformOperators

protected void initializePlatformOperators()
Initialize any platform-specific operators

Overrides:
initializePlatformOperators in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

isNativeConnectionRequiredForLobLocator

public boolean isNativeConnectionRequiredForLobLocator()
INTERNAL: Used by derived platforms (Oracle8Platform and higher) to indicate whether app. server should unwrap connection to use lob locator.


isOracle

public boolean isOracle()
Specified by:
isOracle in interface org.eclipse.persistence.internal.databaseaccess.Platform
Overrides:
isOracle in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

logOperator

protected ExpressionOperator logOperator()
Create the log operator for this platform


maximumNumericValues

public java.util.Hashtable maximumNumericValues()
Builds a table of maximum numeric values keyed on java class. This is used for type testing but might also be useful to end users attempting to sanitize values.

NOTE: BigInteger & BigDecimal maximums are dependent upon their precision & Scale

Overrides:
maximumNumericValues in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

minimumNumericValues

public java.util.Hashtable minimumNumericValues()
Builds a table of minimum numeric values keyed on java class. This is used for type testing but might also be useful to end users attempting to sanitize values.

NOTE: BigInteger & BigDecimal minimums are dependent upon their precision & Scale

Overrides:
minimumNumericValues in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

buildSelectQueryForSequenceObject

public ValueReadQuery buildSelectQueryForSequenceObject(java.lang.String qualifiedSeqName,
                                                        java.lang.Integer size)
INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the db and returns it. Currently implemented on Oracle only.

Overrides:
buildSelectQueryForSequenceObject in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Parameters:
qualifiedSeqName - known by Oracle to be a defined sequence

buildSelectQueryForIdentity

public ValueReadQuery buildSelectQueryForIdentity(java.lang.String qualifiedSeqName,
                                                  java.lang.Integer size)
INTERNAL: Though Oracle doesn't support identity it could be imitated, see comment to setSupportsIdentity method.

Overrides:
buildSelectQueryForIdentity in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Parameters:
qualifiedSeqName - known by Oracle to be a defined sequence

operatorOuterJoin

protected ExpressionOperator operatorOuterJoin()
Create the outer join operator for this platform


operatorLocate

protected ExpressionOperator operatorLocate()
INTERNAL: Override the default locate operator


operatorLocate2

protected ExpressionOperator operatorLocate2()
INTERNAL: Override the default locate operator


printFieldNullClause

public void printFieldNullClause(java.io.Writer writer)
                          throws ValidationException
INTERNAL: Append the receiver's field 'NULL' constraint clause to a writer.

Overrides:
printFieldNullClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Throws:
ValidationException

serverTimestampString

public java.lang.String serverTimestampString()
Return the current date and time from the server.


shouldUseJDBCOuterJoinSyntax

public boolean shouldUseJDBCOuterJoinSyntax()
JDBC defines and outer join syntax, many drivers do not support this. So we normally avoid it.

Overrides:
shouldUseJDBCOuterJoinSyntax in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

supportsAutoConversionToNumericForArithmeticOperations

public boolean supportsAutoConversionToNumericForArithmeticOperations()
Some db allow VARCHAR db field to be used in arithmetic operations automatically converting them to numeric: UPDATE OL_PHONE SET PHONE_ORDER_VARCHAR = (PHONE_ORDER_VARCHAR + 1) WHERE ... SELECT ... WHERE ... t0.MANAGED_ORDER_VARCHAR BETWEEN 1 AND 4 ...

Overrides:
supportsAutoConversionToNumericForArithmeticOperations in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

supportsSequenceObjects

public boolean supportsSequenceObjects()
INTERNAL: Indicates whether the platform supports sequence objects. This method is to be used *ONLY* by sequencing classes

Overrides:
supportsSequenceObjects in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

supportsIdentity

public boolean supportsIdentity()
INTERNAL: Indicates whether the platform supports identity. This method is to be used *ONLY* by sequencing classes

Overrides:
supportsIdentity in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

setSupportsIdentity

public void setSupportsIdentity(boolean supportsIdentity)
ADVANCED: Oracle db doesn't support identity. However it's possible to get identity-like behavior using sequence in an insert trigger - that's the only case when supportsIdentity should be set to true: in this case all the sequences that have shouldAcquireValueAfterInsert set to true will keep this setting (it would've been reversed in case identity is not supported). Note that with supportsIdentity==true attempt to create tables that have identity fields will fail - Oracle doesn't support identity. Therefore if there's table creation reqiured it should be done with supportsIdentity==false, then set the flag to true and reset sequencing (or logout and login the session).


supportsStoredFunctions

public boolean supportsStoredFunctions()
INTERNAL: Return if database stored functions are supported.

Overrides:
supportsStoredFunctions in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

supportsSelectForUpdateNoWait

public boolean supportsSelectForUpdateNoWait()
Returns true if the database supports SQL syntax not to wait on a SELECT..FOR UPADTE (i.e. In Oracle adding NOWAIT to the end will accomplish this)


todayOperator

protected ExpressionOperator todayOperator()
Create the sysdate operator for this platform


currentDateOperator

protected ExpressionOperator currentDateOperator()

currentTimeOperator

protected ExpressionOperator currentTimeOperator()

canUnwrapOracleConnection

public boolean canUnwrapOracleConnection()
INTERNAL: Indicates whether this Oracle platform can unwrap Oracle connection.


unwrapOracleConnection

public java.sql.Connection unwrapOracleConnection(java.sql.Connection connection)
INTERNAL: If can unwrap returns unwrapped Oracle connection, otherwise original connection.


printSQLSelectStatement

public void printSQLSelectStatement(org.eclipse.persistence.internal.databaseaccess.DatabaseCall call,
                                    org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter printer,
                                    org.eclipse.persistence.internal.expressions.SQLSelectStatement statement)
INTERNAL: Print the SQL representation of the statement on a stream, storing the fields in the DatabaseCall. This implementation works MaxRows and FirstResult into the SQL using Oracle's ROWNUM to filter values if shouldUseRownumFiltering is true.

Overrides:
printSQLSelectStatement in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

isAlterSequenceObjectSupported

public boolean isAlterSequenceObjectSupported()
INTERNAL: Override this method if the platform supports sequence objects and it's possible to alter sequence object's increment in the database.

Overrides:
isAlterSequenceObjectSupported in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

isForUpdateCompatibleWithDistinct

public boolean isForUpdateCompatibleWithDistinct()
INTERNAL: Indicates whether SELECT DISTINCT ... FOR UPDATE is allowed by the platform (Oracle doesn't allow this).

Overrides:
isForUpdateCompatibleWithDistinct in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

isLockTimeoutException

public boolean isLockTimeoutException(DatabaseException e)
Return true if the given exception occurred as a result of a lock time out exception (WAIT clause).

Overrides:
isLockTimeoutException in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

wasFailureCommunicationBased

public boolean wasFailureCommunicationBased(java.sql.SQLException exception,
                                            java.sql.Connection connection,
                                            org.eclipse.persistence.internal.sessions.AbstractSession sessionForProfile)
INTERNAL: A call to this method will perform a platform based check on the connection and exception error code to determine if the connection is still valid or if a communication error has occurred. If a communication error has occurred then the query may be retried. If this platform is unable to determine if the error was communication based it will return false forcing the error to be thrown to the user.

Overrides:
wasFailureCommunicationBased in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

EclipseLink 2.2.0, build 'v20110202-r8913' API Reference