Class OraclePlatform
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
- 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:
Oracle8Platform
,Oracle8Platform
Purpose: Provides Oracle specific behavior.
Responsibilities:
- Native SQL for byte[], Date, Time, & Timestamp.
- Native sequencing named sequences.
- Native SQL/ROWNUM support for MaxRows and FirstResult filtering.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected String
protected boolean
Whether a FOR UPDATE clause should be printed at the end of the queryprotected boolean
Advanced attribute indicating whether identity is supported, see comment to setSupportsIdentity method.protected static DataModifyQuery
protected static DataModifyQuery
Fields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform
DEFAULT_VARCHAR_SIZE
Fields 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, usesStringBinding
Fields 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
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Used for stored procedure definitions.protected void
appendByteArray
(byte[] bytes, 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
(Calendar calendar, Writer writer) INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format.protected void
appendDate
(Date date, Writer writer) INTERNAL: Appends an Oracle specific date if usesNativeSQL is true otherwise use the ODBC format.protected void
appendTime
(Time time, Writer writer) INTERNAL: Appends an Oracle specific time if usesNativeSQL is true otherwise use the ODBC format.protected void
appendTimestamp
(Timestamp timestamp, Writer writer) INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format.org.eclipse.persistence.internal.databaseaccess.DatabaseCall
buildCallWithReturning
(SQLCall sqlCall, Vector returnFields) INTERNAL: Returns null unless the platform supports call with returningprotected Hashtable
INTERNAL:protected String
buildFirstRowsHint
(int max) Build the hint string used for first rows.buildSelectQueryForIdentity
(String qualifiedSeqName, Integer size) INTERNAL: Though Oracle doesn't support identity it could be imitated, see comment to setSupportsIdentity method.buildSelectQueryForSequenceObject
(String qualifiedSeqName, Integer size) INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the db and returns it.boolean
INTERNAL: Indicates whether the platform can build call with returning.boolean
INTERNAL: Indicates whether this Oracle platform can unwrap Oracle connection.boolean
checkTableExists
(org.eclipse.persistence.internal.sessions.DatabaseSessionImpl session, TableDefinition table, boolean suppressLogging) INTERNAL: Executes and evaluates query to check whether given table exists.void
INTERNAL: Clears both implicit and explicit caches of OracleConnection on Oracle9Platform, noop here.createExpressionFor
(org.eclipse.persistence.internal.helper.DatabaseField field, Expression builder, String fieldClassificationClassName) INTERNAL: Override this method if the platform needs to use a custom function based on the DatabaseFieldprotected static ExpressionOperator
INTERNAL: Create the EXCEPT operator, MINUS in Oracle.INTERNAL: Used for stored function calls.Used for batch writing and sp defs.Used for batch writing and sp defs.Used for batch writing for row count return.Used for batch writing for row count return.Used for batch writing for row count return.INTERNAL: DECLARE stanza header for Anonymous PL/SQL blockAllows DROP TABLE to cascade dropping of any dependent constraints if the database supports this option.getDropDatabaseSchemaString
(String schema) Return the drop schema definition.int
INTERNAL: Some database platforms have a limit for the number of parameters in an IN clause.int
INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.getNativeTableInfo
(String table, String creator, org.eclipse.persistence.internal.sessions.AbstractSession session) Return the catalog information through using the native SQL catalog selects.getObjectFromResultSet
(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Get a timestamp value from a result set.getProcedureArgument
(String name, Object parameter, org.eclipse.persistence.internal.databaseaccess.DatasourceCall.ParameterType parameterType, StoredProcedureCall call, org.eclipse.persistence.internal.sessions.AbstractSession session) Obtain the platform specific argument stringUsed for sp calls.Used for sp calls.Most database support a syntax.getSelectForUpdateWaitString
(Integer waitTimeout) Platforms that support the WAIT option should override this method.PUBLIC: The query to select the current system change number from Oracle.protected DataReadQuery
INTERNAL: Returns query to check whether given table exists.PUBLIC: This method returns the query to select the timestamp from the server for Oracle.getVPDClearIdentifierQuery
(String vpdIdentifier) INTERNAL: Return an Oracle defined VPD clear identifier query.getVPDCreationFunctionString
(String tableName, String tenantFieldName) INTERNAL: Return an Oracle defined VPD identifier function.getVPDCreationPolicyString
(String tableName, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Return an Oracle defined VPD identifier policy.getVPDDeletionString
(String tableName, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Return an Oracle defined VPD identifier policy deletion.getVPDSetIdentifierQuery
(String vpdIdentifier) INTERNAL: Return an Oracle defined VPD set identifier query.void
initializeConnectionData
(Connection connection) INTERNAL: Allow initialization from the connection.protected void
Initialize any platform-specific operatorsboolean
INTERNAL: Override this method if the platform supports sequence objects and it's possible to alter sequence object's increment in the database.boolean
INTERNAL: Indicates whether SELECT DISTINCT ...boolean
INTERNAL: Indicates whether SELECT DISTINCT lob FROM ...boolean
Return true if the given exception occurred as a result of a lock time out exception (WAIT clause).boolean
INTERNAL: Used by derived platforms (Oracle8Platform and higher) to indicate whether app.boolean
isOracle()
boolean
Oracle does not return the row count from PLSQL anon blocks, so an output parameter is required for this.protected static ExpressionOperator
Create the log operator for this platformBuilds a table of maximum numeric values keyed on java class.Builds a table of minimum numeric values keyed on java class.protected static ExpressionOperator
INTERNAL: Override the default locate operatorprotected static ExpressionOperator
INTERNAL: Override the default locate operatorprotected static ExpressionOperator
Create the outer join operator for this platformprotected static ExpressionOperator
INTERNAL: Oracle equivalent to DATENAME is TO_CHAR.void
printFieldNullClause
(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.protected static ExpressionOperator
INTERNAL: Create the REGEXP_LIKE operator.Return the current date and time from the server.void
setSupportsIdentity
(boolean supportsIdentity) ADVANCED: Oracle db doesn't support identity.boolean
boolean
INTERNAL: Should the variable name of a stored procedure call be printed as part of the procedure call e.g.boolean
JDBC defines and outer join syntax, many drivers do not support this.boolean
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
INTERNAL: Indicates whether the platform supports identity.boolean
Returns true if the database supports SQL syntax not to wait on a SELECT..FOR UPADTE (i.e.boolean
INTERNAL: Indicates whether the platform supports sequence objects.boolean
INTERNAL: Return if database stored functions are supported.boolean
Oracle db supports VPD.boolean
INTERNAL: Indicates whether the platform supports timeouts on For UpdateunwrapOracleConnection
(Connection connection) INTERNAL: If can unwrap returns unwrapped Oracle connection, otherwise original connection.boolean
Return true if JDBC syntax should be used for stored procedure calls.boolean
wasFailureCommunicationBased
(SQLException exception, 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, 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, copyInto, createArray, createArray, createPlatformDefaultSequence, createStruct, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, freeTemporaryObject, getBatchDelimiterString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlPrefix, getCreateTempTableSqlSuffix, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, 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, 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, shouldUseCustomModifyForCall, 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, writeLOB, writeParameterMarker, writeTableCreationSuffix, writeUpdateOriginalFromTempTableSql
Methods 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
-
vpdSetIdentifierQuery
-
vpdClearIdentifierQuery
-
shouldPrintForUpdateClause
protected boolean shouldPrintForUpdateClauseWhether a FOR UPDATE clause should be printed at the end of the query -
supportsIdentity
protected boolean supportsIdentityAdvanced attribute indicating whether identity is supported, see comment to setSupportsIdentity method. -
SELECT
-
HINT_START
-
HINT_END
-
FROM
-
END_FROM
-
MAX_ROW
-
MIN_ROW
-
LOCK_START_PREFIX
-
LOCK_START_PREFIX_WHERE
-
LOCK_START_SUFFIX
-
LOCK_END
-
SELECT_ID_PREFIX
-
SELECT_ID_SUFFIX
-
FROM_ID
-
END_FROM_ID
-
ORDER_BY_ID
-
BRACKET_END
-
-
Constructor Details
-
OraclePlatform
public OraclePlatform()
-
-
Method Details
-
initializeConnectionData
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Allow initialization from the connection.- Overrides:
initializeConnectionData
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
SQLException
-
allowsSizeInProcedureArguments
public boolean allowsSizeInProcedureArguments()Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Used for stored procedure definitions.- Overrides:
allowsSizeInProcedureArguments
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
appendByteArray
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
IOException
-
appendDate
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
IOException
-
appendTime
INTERNAL: Appends an Oracle specific time if usesNativeSQL is true otherwise use the ODBC format. Native FORMAT: to_date(#####, 'sssss').- Overrides:
appendTime
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
IOException
-
appendTimestamp
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
IOException
-
appendCalendar
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
IOException
-
buildFieldTypes
INTERNAL:- Overrides:
buildFieldTypes
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
buildFirstRowsHint
Build the hint string used for first rows. Allows it to be overridden- Parameters:
max
-- Returns:
-
buildCallWithReturning
public org.eclipse.persistence.internal.databaseaccess.DatabaseCall buildCallWithReturning(SQLCall sqlCall, Vector returnFields) INTERNAL: Returns null unless the platform supports call with returning- Overrides:
buildCallWithReturning
in classorg.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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
clearOracleConnectionCache
INTERNAL: Clears both implicit and explicit caches of OracleConnection on Oracle9Platform, noop here. -
getAssignmentString
INTERNAL: Used for stored function calls.- Overrides:
getAssignmentString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getDeclareBeginString
INTERNAL: DECLARE stanza header for Anonymous PL/SQL block -
getBatchBeginString
Used for batch writing and sp defs.- Overrides:
getBatchBeginString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getBatchEndString
Used for batch writing and sp defs.- Overrides:
getBatchEndString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getBatchRowCountDeclareString
Used for batch writing for row count return.- Overrides:
getBatchRowCountDeclareString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
isRowCountOutputParameterRequired
public boolean isRowCountOutputParameterRequired()Oracle does not return the row count from PLSQL anon blocks, so an output parameter is required for this.- Overrides:
isRowCountOutputParameterRequired
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getBatchRowCountReturnString
Used for batch writing for row count return.- Overrides:
getBatchRowCountReturnString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getDropDatabaseSchemaString
Return the drop schema definition. Subclasses should override as needed.- Overrides:
getDropDatabaseSchemaString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getBatchRowCountAssignString
Used for batch writing for row count return.- Overrides:
getBatchRowCountAssignString
in classorg.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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getNativeTableInfo
public Vector getNativeTableInfo(String table, 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. -
getProcedureCallHeader
Used for sp calls.- Overrides:
getProcedureCallHeader
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureCallTail
Used for sp calls.- Overrides:
getProcedureCallTail
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getDropCascadeString
Allows DROP TABLE to cascade dropping of any dependent constraints if the database supports this option.- Overrides:
getDropCascadeString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getSelectForUpdateString
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Most database support a syntax. although don't actually lock the row. Some require the OF some don't like it.- Overrides:
getSelectForUpdateString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getSelectForUpdateWaitString
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Platforms that support the WAIT option should override this method. By default the wait timeout is ignored.- Overrides:
getSelectForUpdateWaitString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- See Also:
-
DatabasePlatform.supportsWaitForUpdate()
-
getStoredProcedureParameterPrefix
- Overrides:
getStoredProcedureParameterPrefix
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
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: This method returns the query to select the timestamp from the server for Oracle.- Specified by:
getTimestampQuery
in interfaceorg.eclipse.persistence.internal.databaseaccess.Platform
- Overrides:
getTimestampQuery
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
getVPDClearIdentifierQuery
INTERNAL: Return an Oracle defined VPD clear identifier query.- Overrides:
getVPDClearIdentifierQuery
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getVPDCreationFunctionString
INTERNAL: Return an Oracle defined VPD identifier function. Used for DDL generation.- Overrides:
getVPDCreationFunctionString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getVPDCreationPolicyString
public String getVPDCreationPolicyString(String tableName, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Return an Oracle defined VPD identifier policy. Used for DDL generation.- Overrides:
getVPDCreationPolicyString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getVPDDeletionString
public String getVPDDeletionString(String tableName, org.eclipse.persistence.internal.sessions.AbstractSession session) INTERNAL: Return an Oracle defined VPD identifier policy deletion. Used for DDL generation.- Overrides:
getVPDDeletionString
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getVPDSetIdentifierQuery
INTERNAL: Return an Oracle defined VPD set identifier query.- Overrides:
getVPDSetIdentifierQuery
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getObjectFromResultSet
public Object getObjectFromResultSet(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session) throws 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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
SQLException
- See Also:
-
- "org.eclipse.persistence.platform.database.oracle.Oracle9Plaform"
-
initializePlatformOperators
protected void initializePlatformOperators()Initialize any platform-specific operators- Overrides:
initializePlatformOperators
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
operatorOuterJoin
Create the outer join operator for this platform -
exceptOperator
INTERNAL: Create the EXCEPT operator, MINUS in Oracle. -
regexpOperator
INTERNAL: Create the REGEXP_LIKE operator. -
operatorLocate
INTERNAL: Override the default locate operator -
operatorLocate2
INTERNAL: Override the default locate operator -
logOperator
Create the log operator for this platform -
oracleDateName
INTERNAL: Oracle equivalent to DATENAME is TO_CHAR. -
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 interfaceorg.eclipse.persistence.internal.databaseaccess.Platform
- Overrides:
isOracle
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
buildSelectQueryForSequenceObject
INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the db and returns it. Currently implemented on Oracle only.- Overrides:
buildSelectQueryForSequenceObject
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
- Parameters:
qualifiedSeqName
- known by Oracle to be a defined sequence
-
buildSelectQueryForIdentity
INTERNAL: Though Oracle doesn't support identity it could be imitated, see comment to setSupportsIdentity method.- Overrides:
buildSelectQueryForIdentity
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
- Parameters:
qualifiedSeqName
- known by Oracle to be a defined sequence
-
printFieldNullClause
INTERNAL: Append the receiver's field 'NULL' constraint clause to a writer.- Overrides:
printFieldNullClause
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
ValidationException
-
serverTimestampString
Return the current date and time from the server. -
shouldPrintStoredProcedureArgumentNameInCall
public boolean shouldPrintStoredProcedureArgumentNameInCall()INTERNAL: Should the variable name of a stored procedure call be printed as part of the procedure call e.g. EXECUTE PROCEDURE MyStoredProc(myvariable = ?)- Overrides:
shouldPrintStoredProcedureArgumentNameInCall
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureArgument
public String getProcedureArgument(String name, Object parameter, org.eclipse.persistence.internal.databaseaccess.DatasourceCall.ParameterType parameterType, StoredProcedureCall call, org.eclipse.persistence.internal.sessions.AbstractSession session) Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Obtain the platform specific argument string- Overrides:
getProcedureArgument
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldUseJDBCOuterJoinSyntax
public boolean shouldUseJDBCOuterJoinSyntax()JDBC defines and outer join syntax, many drivers do not support this. So we normally avoid it.- Overrides:
shouldUseJDBCOuterJoinSyntax
in classorg.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 classorg.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 classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
supportsIdentity
public boolean supportsIdentity()INTERNAL: Indicates whether the platform supports identity. This method is to be used *ONLY* by sequencing classes- Overrides:
supportsIdentity
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsVPD
public boolean supportsVPD()Oracle db supports VPD.- Overrides:
supportsVPD
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsWaitForUpdate
public boolean supportsWaitForUpdate()Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Indicates whether the platform supports timeouts on For Update- Overrides:
supportsWaitForUpdate
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- See Also:
-
DatabasePlatform.getSelectForUpdateWaitString(Integer waitTimeout)
-
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) -
canUnwrapOracleConnection
public boolean canUnwrapOracleConnection()INTERNAL: Indicates whether this Oracle platform can unwrap Oracle connection. -
unwrapOracleConnection
INTERNAL: If can unwrap returns unwrapped Oracle connection, otherwise original connection. -
useJDBCStoredProcedureSyntax
public boolean useJDBCStoredProcedureSyntax()Return true if JDBC syntax should be used for stored procedure calls. -
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 classorg.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 classorg.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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
isLobCompatibleWithDistinct
public boolean isLobCompatibleWithDistinct()INTERNAL: Indicates whether SELECT DISTINCT lob FROM ... (where lob is BLOB or CLOB) is allowed by the platform (Oracle doesn't allow this).- Overrides:
isLobCompatibleWithDistinct
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
isLockTimeoutException
Return true if the given exception occurred as a result of a lock time out exception (WAIT clause).- Overrides:
isLockTimeoutException
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- See Also:
-
wasFailureCommunicationBased
public boolean wasFailureCommunicationBased(SQLException exception, 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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintForUpdateClause
public boolean shouldPrintForUpdateClause()- Overrides:
shouldPrintForUpdateClause
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
createExpressionFor
public Expression createExpressionFor(org.eclipse.persistence.internal.helper.DatabaseField field, Expression builder, String fieldClassificationClassName) Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
INTERNAL: Override this method if the platform needs to use a custom function based on the DatabaseField- Overrides:
createExpressionFor
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
- Returns:
- An expression for the given field set equal to a parameter matching the field
-
getTableExistsQuery
INTERNAL: Returns query to check whether given table exists. Query execution returns a row when table exists or empty result otherwise.- Overrides:
getTableExistsQuery
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Parameters:
table
- database table meta-data- Returns:
- query to check whether given table exists
-
checkTableExists
public boolean checkTableExists(org.eclipse.persistence.internal.sessions.DatabaseSessionImpl session, TableDefinition table, boolean suppressLogging) INTERNAL: Executes and evaluates query to check whether given table exists. Returned value depends on returned result set being empty or not.- Overrides:
checkTableExists
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Parameters:
session
- current database sessiontable
- database table meta-datasuppressLogging
- whether to suppress logging during query execution- Returns:
- value of
true
if given table exists orfalse
otherwise
-
getINClauseLimit
public int getINClauseLimit()Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
INTERNAL: Some database platforms have a limit for the number of parameters in an IN clause.- Overrides:
getINClauseLimit
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-