Class Oracle9Platform

  • 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:
    Oracle10Platform

    public class Oracle9Platform
    extends Oracle8Platform

    Purpose: Supports usage of certain Oracle JDBC specific APIs.

    Supports binding NCHAR, NVARCHAR, NCLOB types as required by Oracle JDBC drivers.

    Supports Oracle JDBC TIMESTAMP, TIMESTAMPTZ, TIMESTAMPLTZ types.

    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected String driverVersion  
      protected boolean isConnectionDataInitialized  
      protected boolean isLtzTimestampInGmt  
      protected boolean isTimestampInGmt  
      static Class NCHAR  
      static Class NCLOB  
      static Class NSTRING  
      protected boolean shouldPrintCalendar  
      protected boolean shouldTruncateDate
      Indicates whether time component of java.sql.Date should be truncated (hours, minutes, seconds all set to zero) before been passed as a parameter to PreparedStatement.
      static Class XMLTYPE  
      • 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

      Constructors 
      Constructor Description
      Oracle9Platform()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int addBatch​(PreparedStatement statement)
      INTERNAL: This gets called on each iteration to add parameters to the batch Needs to be implemented so that it returns the number of rows successfully modified by this statement for optimistic locking purposes (if useNativeBatchWriting is enabled, and the call uses optimistic locking).
      protected void appendCalendar​(Calendar calendar, Writer writer)
      INTERNAL: Appends an Oracle specific Timestamp with timezone and daylight time elements 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.
      protected Map<String,​Class> buildClassTypes()
      INTERNAL: Add TIMESTAMP, TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE
      protected Hashtable buildFieldTypes()
      INTERNAL: Add XMLType as the default database type for org.w3c.dom.Documents.
      protected String buildFirstRowsHint​(int max)
      Build the hint string used for first rows.
      protected Vector buildFromStringCharVec​(Class javaClass)  
      protected Vector buildToNClobVec()  
      protected Vector buildToNStringCharVec()  
      protected Vector buildToTIMESTAMPVec()  
      boolean canUnwrapOracleConnection()
      INTERNAL: Indicates whether this Oracle platform can unwrap Oracle connection.
      void clearConnectionData()  
      void clearOracleConnectionCache​(Connection conn)
      INTERNAL: Clears both implicit and explicit caches of OracleConnection
      Object clone()  
      Object convertObject​(Object sourceObject, Class javaClass)
      INTERNAL: Allow for conversion from the Oracle type to the Java type.
      void copyInto​(org.eclipse.persistence.internal.databaseaccess.Platform platform)
      Copy the state into the new platform.
      org.eclipse.persistence.internal.databaseaccess.ConnectionCustomizer createConnectionCustomizer​(org.eclipse.persistence.internal.databaseaccess.Accessor accessor, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL:
      int executeBatch​(Statement statement, boolean isStatementPrepared)
      INTERNAL: This gets called on each batch statement execution Needs to be implemented so that it returns the number of rows successfully modified by this statement for optimistic locking purposes (if useNativeBatchWriting is enabled, and the call uses optimistic locking).
      String getConnectionUserName()
      INTERNAL: Returns user name retrieved from JDBC connection.
      Object getCustomModifyValueForCall​(Call call, Object value, org.eclipse.persistence.internal.helper.DatabaseField field, boolean shouldBind)
      INTERNAL: Used by SQLCall.translate(..) The binding *must* be performed (NCHAR, NSTRING, NCLOB).
      Vector getDataTypesConvertedFrom​(Class javaClass)
      INTERNAL: Return the list of Classes that can be converted to from the passed in javaClass.
      Vector getDataTypesConvertedTo​(Class javaClass)
      INTERNAL: Return the list of Classes that can be converted from to the passed in javaClass.
      String getDriverVersion()
      INTERNAL: Return the driver version.
      int getJDBCType​(Class javaType)
      Return the JDBC type for the Java type.
      int getJDBCTypeForSetNull​(org.eclipse.persistence.internal.helper.DatabaseField field)
      Return the JDBC type for the given database field to be passed to Statement.setNull The Oracle driver does not like the OPAQUE type so VARCHAR must be used.
      int getLobValueLimits()
      PUBLIC: Return the BLOB/CLOB value limits on thin driver.
      Object getObjectFromResultSet​(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Get a timestamp value from a result set.
      Timestamp getTimestampFromServer​(org.eclipse.persistence.internal.sessions.AbstractSession session, String sessionName)
      INTERNAL: Answer the timestamp from the server.
      Object getTIMESTAMPLTZFromResultSet​(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Get a TIMESTAMPLTZ value from a result set.
      ValueReadQuery getTimestampQuery()
      INTERNAL: This method returns the query to select the SYSTIMESTAMP as TIMESTAMPTZ from the server for Oracle9i.
      Object getTIMESTAMPTZFromResultSet​(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Get a TIMESTAMPTZ value from a result set.
      protected org.eclipse.persistence.internal.platform.database.oracle.XMLTypeFactory getXMLTypeFactory()
      INTERNAL: Lazy initialization of xmlTypeFactory allows to avoid loading xdb-dependent class XMLTypeFactoryImpl unless xdb is used.
      void initializeConnectionData​(Connection connection)
      INTERNAL:
      protected void initializePlatformOperators()
      INTERNAL: Allow the use of XMLType operators on this platform.
      protected boolean isClob​(Class type)
      INTERNAL: Used in write LOB method only to identify a CLOB.
      boolean isLtzTimestampInGmt()
      INTERNAL: Return if ltz timestamps are returned in GMT by the driver.
      boolean isOracle9()
      PUBLIC: Return is this is the Oracle 9 platform.
      protected boolean isOracle9Specific​(Class type)
      INTERNAL: Return if the type is a special oracle type.
      boolean isTimestampInGmt()
      INTERNAL: Return if timestamps are returned in GMT by the driver.
      boolean isXDBDocument​(Object obj)
      INTERNAL: Indicates whether the passed object is an instance of XDBDocument.
      Statement prepareBatchStatement​(Statement statement, int maxBatchWritingSize)
      INTERNAL: Allows setting the batch size on the statement Is used with parameterized SQL, and should only be passed in prepared statements
      String serverTimestampString()
      INTERNAL: Return the current SYSTIMESTAMP as TIMESTAMPTZ from the server.
      void setLobValueLimits​(int lobValueLimits)
      PUBLIC: Set the BLOB/CLOB value limits on thin driver.
      void setParameterValueInDatabaseCall​(Object parameter, CallableStatement statement, String name, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Note that index (not index+1) is used in statement.setObject(index, parameter) Binding starts with a 1 not 0, so make sure that index > 0.
      void setParameterValueInDatabaseCall​(Object parameter, PreparedStatement statement, int index, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Note that index (not index+1) is used in statement.setObject(index, parameter) Binding starts with a 1 not 0, so make sure that index > 0.
      void setShouldTruncateDate​(boolean shouldTruncateDate)
      PUBLIC: Indicates whether time component of java.sql.Date should be truncated (hours, minutes, seconds all set to zero) before been passed as a parameter to PreparedStatement.
      boolean shouldTruncateDate()
      PUBLIC: Indicates whether time component of java.sql.Date should be truncated (hours, minutes, seconds all set to zero) before been passed as a parameter to PreparedStatement.
      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.
      boolean supportsConnectionUserName()
      INTERNAL: User name from JDBC connection is stored in initializeConnectionData(Connection).
      Connection unwrapOracleConnection​(Connection connection)
      INTERNAL: If can unwrap returns unwrapped Oracle connection, otherwise original connection.
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

        addStructConverter, allowBindingForSelectClause, appendBoolean, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, createArray, createPlatformDefaultSequence, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeStoredProcedure, getBatchDelimiterString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlPrefix, getCreateTempTableSqlSuffix, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getDefaultSequenceTableName, getDriverSupportsNVarChar, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIndexNamePrefix, getInOutputProcedureToken, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, 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, minimumTimeIncrement, 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, 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, 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, writeUpdateOriginalFromTempTableSql
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

        addOperator, addSequence, addSequence, buildNativeCall, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, getConversionManager, getDefaultNativeSequenceToTable, getDefaultSeqenceAtNextValue, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, initIdentitySequences, isAccess, isAttunity, isCloudscape, isDB2, isDB2Z, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle12, 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 Detail

      • NCHAR

        public static final Class NCHAR
      • NSTRING

        public static final Class NSTRING
      • NCLOB

        public static final Class NCLOB
      • XMLTYPE

        public static final Class XMLTYPE
      • driverVersion

        protected transient String driverVersion
      • shouldPrintCalendar

        protected transient boolean shouldPrintCalendar
      • isTimestampInGmt

        protected transient boolean isTimestampInGmt
      • isLtzTimestampInGmt

        protected transient boolean isLtzTimestampInGmt
      • isConnectionDataInitialized

        protected transient boolean isConnectionDataInitialized
      • shouldTruncateDate

        protected boolean shouldTruncateDate
        Indicates whether time component of java.sql.Date should be truncated (hours, minutes, seconds all set to zero) before been passed as a parameter to PreparedStatement. Starting with version 12.1 oracle jdbc Statement.setDate no longer zeroes sql.Date's entire time component (only milliseconds). Set this flag to true to make the platform to truncate days/hours/minutes before passing the date to Statement.setDate method.
    • Constructor Detail

      • Oracle9Platform

        public Oracle9Platform()
    • Method Detail

      • copyInto

        public void copyInto​(org.eclipse.persistence.internal.databaseaccess.Platform platform)
        Copy the state into the new platform.
        Specified by:
        copyInto in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        copyInto in class Oracle8Platform
      • 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 class OraclePlatform
        Throws:
        SQLException
        See Also:
        "org.eclipse.persistence.platform.database.oracle.Oracle9Plaform"
      • getTIMESTAMPTZFromResultSet

        public Object getTIMESTAMPTZFromResultSet​(ResultSet resultSet,
                                                  int columnNumber,
                                                  int type,
                                                  org.eclipse.persistence.internal.sessions.AbstractSession session)
                                           throws SQLException
        INTERNAL: Get a TIMESTAMPTZ value from a result set.
        Throws:
        SQLException
      • getTIMESTAMPLTZFromResultSet

        public Object getTIMESTAMPLTZFromResultSet​(ResultSet resultSet,
                                                   int columnNumber,
                                                   int type,
                                                   org.eclipse.persistence.internal.sessions.AbstractSession session)
                                            throws SQLException
        INTERNAL: Get a TIMESTAMPLTZ value from a result set.
        Throws:
        SQLException
      • 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:
        shouldUseCustomModifyForCall in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        shouldUseCustomModifyForCall in class Oracle8Platform
      • buildFieldTypes

        protected Hashtable buildFieldTypes()
        INTERNAL: Add XMLType as the default database type for org.w3c.dom.Documents. Add TIMESTAMP, TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE
        Overrides:
        buildFieldTypes in class Oracle8Platform
      • buildFirstRowsHint

        protected String buildFirstRowsHint​(int max)
        Build the hint string used for first rows. Allows it to be overridden
        Overrides:
        buildFirstRowsHint in class OraclePlatform
        Parameters:
        max -
        Returns:
      • buildClassTypes

        protected Map<String,​Class> buildClassTypes()
        INTERNAL: Add TIMESTAMP, TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE
        Overrides:
        buildClassTypes in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • clone

        public Object clone()
        Specified by:
        clone in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        clone in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • convertObject

        public Object convertObject​(Object sourceObject,
                                    Class javaClass)
                             throws ConversionException,
                                    DatabaseException
        INTERNAL: Allow for conversion from the Oracle type to the Java type.
        Specified by:
        convertObject in interface org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>
        Specified by:
        convertObject in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        convertObject in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
        Parameters:
        sourceObject - the object that must be converted
        javaClass - the class that the object must be converted to
        Returns:
        the newly converted object
        Throws:
        ConversionException - all exceptions will be thrown as this type.
        DatabaseException
      • appendTimestamp

        protected void appendTimestamp​(Timestamp timestamp,
                                       Writer writer)
                                throws IOException
        INTERNAL: Appends an Oracle specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format. Native Format: to_timestamp ('1997-11-06 10:35:45.656' , 'yyyy-mm-dd hh:mm:ss.ff')
        Overrides:
        appendTimestamp in class OraclePlatform
        Throws:
        IOException
      • appendCalendar

        protected void appendCalendar​(Calendar calendar,
                                      Writer writer)
                               throws IOException
        INTERNAL: Appends an Oracle specific Timestamp with timezone and daylight time elements if usesNativeSQL is true, otherwise use the ODBC format. Native Format: (DST) to_timestamp_tz ('1997-11-06 10:35:45.345 America/Los_Angeles','yyyy-mm-dd hh:mm:ss.ff TZR TZD') (non-DST) to_timestamp_tz ('1997-11-06 10:35:45.345 America/Los_Angeles','yyyy-mm-dd hh:mm:ss.ff TZR')
        Overrides:
        appendCalendar in class OraclePlatform
        Throws:
        IOException
      • clearConnectionData

        public void clearConnectionData()
      • setParameterValueInDatabaseCall

        public void setParameterValueInDatabaseCall​(Object parameter,
                                                    PreparedStatement statement,
                                                    int index,
                                                    org.eclipse.persistence.internal.sessions.AbstractSession session)
                                             throws SQLException
        INTERNAL: Note that index (not index+1) is used in statement.setObject(index, parameter) Binding starts with a 1 not 0, so make sure that index > 0. Treat Calendar separately. Bind Calendar as TIMESTAMPTZ.
        Overrides:
        setParameterValueInDatabaseCall in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        SQLException
      • setParameterValueInDatabaseCall

        public void setParameterValueInDatabaseCall​(Object parameter,
                                                    CallableStatement statement,
                                                    String name,
                                                    org.eclipse.persistence.internal.sessions.AbstractSession session)
                                             throws SQLException
        INTERNAL: Note that index (not index+1) is used in statement.setObject(index, parameter) Binding starts with a 1 not 0, so make sure that index > 0. Treat Calendar separately. Bind Calendar as TIMESTAMPTZ.
        Overrides:
        setParameterValueInDatabaseCall in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        SQLException
      • getTimestampFromServer

        public Timestamp getTimestampFromServer​(org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                String sessionName)
        INTERNAL: Answer the timestamp from the server. Convert TIMESTAMPTZ to Timestamp
        Specified by:
        getTimestampFromServer in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        getTimestampFromServer in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • getTimestampQuery

        public ValueReadQuery getTimestampQuery()
        INTERNAL: This method returns the query to select the SYSTIMESTAMP as TIMESTAMPTZ from the server for Oracle9i.
        Specified by:
        getTimestampQuery in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        getTimestampQuery in class OraclePlatform
      • buildToTIMESTAMPVec

        protected Vector buildToTIMESTAMPVec()
      • buildToNStringCharVec

        protected Vector buildToNStringCharVec()
      • buildToNClobVec

        protected Vector buildToNClobVec()
      • 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.
        Overrides:
        getLobValueLimits in class Oracle8Platform
      • 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.
        Overrides:
        setLobValueLimits in class Oracle8Platform
      • isOracle9Specific

        protected boolean isOracle9Specific​(Class type)
        INTERNAL: Return if the type is a special oracle type. bug 3325122 - just checking against the 4 classes is faster than isAssignableFrom MWN.
      • isClob

        protected boolean isClob​(Class type)
        INTERNAL: Used in write LOB method only to identify a CLOB.
        Overrides:
        isClob in class Oracle8Platform
      • getCustomModifyValueForCall

        public Object getCustomModifyValueForCall​(Call call,
                                                  Object value,
                                                  org.eclipse.persistence.internal.helper.DatabaseField field,
                                                  boolean shouldBind)
        INTERNAL: Used by SQLCall.translate(..) The binding *must* be performed (NCHAR, NSTRING, NCLOB). 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:
        getCustomModifyValueForCall in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        getCustomModifyValueForCall in class Oracle8Platform
      • buildFromStringCharVec

        protected Vector buildFromStringCharVec​(Class javaClass)
      • getDataTypesConvertedFrom

        public Vector getDataTypesConvertedFrom​(Class javaClass)
        INTERNAL: Return the list of Classes that can be converted to from the passed in javaClass. oracle.sql.TIMESTAMP and NCHAR types are added in some lists.
        Overrides:
        getDataTypesConvertedFrom in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
        Parameters:
        javaClass - - the class that is converted from
        Returns:
        - a vector of classes
      • getDataTypesConvertedTo

        public Vector getDataTypesConvertedTo​(Class javaClass)
        INTERNAL: Return the list of Classes that can be converted from to the passed in javaClass. A list is added for oracle.sql.TIMESTAMP and NCHAR types.
        Overrides:
        getDataTypesConvertedTo in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
        Parameters:
        javaClass - - the class that is converted to
        Returns:
        - a vector of classes
      • getJDBCTypeForSetNull

        public int getJDBCTypeForSetNull​(org.eclipse.persistence.internal.helper.DatabaseField field)
        Return the JDBC type for the given database field to be passed to Statement.setNull The Oracle driver does not like the OPAQUE type so VARCHAR must be used.
        Overrides:
        getJDBCTypeForSetNull in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getJDBCType

        public int getJDBCType​(Class javaType)
        Return the JDBC type for the Java type. The Oracle driver does not like the OPAQUE type so VARCHAR must be used.
        Overrides:
        getJDBCType in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • executeBatch

        public int executeBatch​(Statement statement,
                                boolean isStatementPrepared)
                         throws SQLException
        INTERNAL: This gets called on each batch statement execution Needs to be implemented so that it returns the number of rows successfully modified by this statement for optimistic locking purposes (if useNativeBatchWriting is enabled, and the call uses optimistic locking).
        Overrides:
        executeBatch in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Parameters:
        isStatementPrepared - - flag is set to true if this statement is prepared
        Returns:
        - number of rows modified/deleted by this statement
        Throws:
        SQLException
      • addBatch

        public int addBatch​(PreparedStatement statement)
                     throws SQLException
        INTERNAL: This gets called on each iteration to add parameters to the batch Needs to be implemented so that it returns the number of rows successfully modified by this statement for optimistic locking purposes (if useNativeBatchWriting is enabled, and the call uses optimistic locking). Is used with parameterized SQL
        Overrides:
        addBatch in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Returns:
        - number of rows modified/deleted by this statement if it was executed (0 if it wasn't)
        Throws:
        SQLException
      • prepareBatchStatement

        public Statement prepareBatchStatement​(Statement statement,
                                               int maxBatchWritingSize)
                                        throws SQLException
        INTERNAL: Allows setting the batch size on the statement Is used with parameterized SQL, and should only be passed in prepared statements
        Overrides:
        prepareBatchStatement in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Returns:
        - statement to be used for batch writing
        Throws:
        SQLException
      • getXMLTypeFactory

        protected org.eclipse.persistence.internal.platform.database.oracle.XMLTypeFactory getXMLTypeFactory()
        INTERNAL: Lazy initialization of xmlTypeFactory allows to avoid loading xdb-dependent class XMLTypeFactoryImpl unless xdb is used.
        Returns:
        XMLTypeFactory
      • isXDBDocument

        public boolean isXDBDocument​(Object obj)
        INTERNAL: Indicates whether the passed object is an instance of XDBDocument.
        Overrides:
        isXDBDocument in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Returns:
        boolean
      • canUnwrapOracleConnection

        public boolean canUnwrapOracleConnection()
        INTERNAL: Indicates whether this Oracle platform can unwrap Oracle connection.
        Overrides:
        canUnwrapOracleConnection in class OraclePlatform
      • isOracle9

        public boolean isOracle9()
        PUBLIC: Return is this is the Oracle 9 platform.
        Specified by:
        isOracle9 in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        isOracle9 in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • createConnectionCustomizer

        public org.eclipse.persistence.internal.databaseaccess.ConnectionCustomizer createConnectionCustomizer​(org.eclipse.persistence.internal.databaseaccess.Accessor accessor,
                                                                                                               org.eclipse.persistence.internal.sessions.AbstractSession session)
        INTERNAL:
        Overrides:
        createConnectionCustomizer in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • getDriverVersion

        public String getDriverVersion()
        INTERNAL: Return the driver version.
      • isTimestampInGmt

        public boolean isTimestampInGmt()
        INTERNAL: Return if timestamps are returned in GMT by the driver.
      • isLtzTimestampInGmt

        public boolean isLtzTimestampInGmt()
        INTERNAL: Return if ltz timestamps are returned in GMT by the driver.
      • shouldTruncateDate

        public boolean shouldTruncateDate()
        PUBLIC: Indicates whether time component of java.sql.Date should be truncated (hours, minutes, seconds all set to zero) before been passed as a parameter to PreparedStatement. Starting with version 12.1 oracle jdbc Statement.setDate no longer zeroes sql.Date's entire time component (only milliseconds). "true" indicates that the platform truncates days/hours/minutes before passing the date to Statement.setDate method.
      • setShouldTruncateDate

        public void setShouldTruncateDate​(boolean shouldTruncateDate)
        PUBLIC: Indicates whether time component of java.sql.Date should be truncated (hours, minutes, seconds all set to zero) before been passed as a parameter to PreparedStatement. Starting with version 12.1 oracle jdbc Statement.setDate no longer zeroes sql.Date's entire time component (only milliseconds). Set this flag to true to make the platform to truncate days/hours/minutes before passing the date to Statement.setDate method.
      • supportsConnectionUserName

        public boolean supportsConnectionUserName()
        INTERNAL: User name from JDBC connection is stored in initializeConnectionData(Connection).
        Overrides:
        supportsConnectionUserName in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Returns:
        Always returns true
      • getConnectionUserName

        public String getConnectionUserName()
        INTERNAL: Returns user name retrieved from JDBC connection. initializeConnectionData(Connection) shall be called before this method.
        Overrides:
        getConnectionUserName in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Returns:
        User name retrieved from JDBC connection.