Class SybasePlatform

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>, org.eclipse.persistence.internal.databaseaccess.Platform
    Direct Known Subclasses:
    SQLAnywherePlatform

    public class SybasePlatform
    extends DatabasePlatform

    Purpose: Provides Sybase ASE specific behavior.

    Responsibilities:

    • Native SQL for byte[], Date, Time, & Timestamp.
    • Native sequencing using @@IDENTITY.
    See Also:
    Serialized Form
    Since:
    TOPLink/Java 1.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Map typeStrings  
      • 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, Types_NCLOB, Types_SQLXML, 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
      SybasePlatform()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void appendByteArray​(byte[] bytes, java.io.Writer writer)
      If using native SQL then print a byte[] as '0xFF...'
      protected void appendCalendar​(java.util.Calendar calendar, java.io.Writer writer)
      Answer a platform correct string representation of a Calendar, suitable for SQL generation.
      protected void appendDate​(java.sql.Date date, java.io.Writer writer)
      Answer a platform correct string representation of a Date, suitable for SQL generation.
      protected void appendSybaseCalendar​(java.util.Calendar calendar, java.io.Writer writer)
      Write a timestamp in Sybase specific format ( yyyy-mm-dd-hh.mm.ss.fff)
      protected void appendSybaseTimestamp​(java.sql.Timestamp timestamp, java.io.Writer writer)
      Write a timestamp in Sybase specific format (yyyy-mm-dd-hh.mm.ss.fff).
      protected void appendTime​(java.sql.Time time, java.io.Writer writer)
      Answer a platform correct string representation of a Time, suitable for SQL generation.
      protected void appendTimestamp​(java.sql.Timestamp timestamp, java.io.Writer writer)
      Answer a platform correct string representation of a Timestamp, suitable for SQL generation.
      protected java.util.Hashtable buildFieldTypes()  
      ValueReadQuery buildSelectQueryForIdentity()
      INTERNAL: Build the identity query for native sequencing.
      protected static ExpressionOperator extractOperator()
      INTERNAL: Derby does not support EXTRACT, but does have DATEPART.
      java.lang.String getBatchDelimiterString()
      Used for batch writing and sp defs.
      protected java.lang.String getCreateTempTableSqlPrefix()
      INTERNAL:
      java.lang.String getCreationInOutputProcedureToken()  
      java.lang.String getCreationOutputProcedureToken()  
      java.lang.String getInOutputProcedureToken()  
      int getJDBCType​(java.lang.Class javaType)
      Sybase and SQL Anywhere do not support BLOB/CLOB but require LONGVARBINARY/LONGVARCHAR.
      java.lang.String getJdbcTypeName​(int jdbcType)
      INTERNAL: Returns the type name corresponding to the jdbc type
      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.String getOutputProcedureToken()  
      java.lang.String getProcedureArgumentString()
      Used for sp defs.
      java.lang.String getProcedureCallHeader()
      Used for sp calls.
      java.lang.String getProcedureCallTail()  
      java.lang.String getSelectForUpdateString()  
      java.lang.String getStoredProcedureParameterPrefix()  
      org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable​(org.eclipse.persistence.internal.helper.DatabaseTable table)
      INTERNAL:
      ValueReadQuery getTimestampQuery()
      PUBLIC: This method returns the query to select the timestamp from the server for Sybase.
      protected java.util.Map<java.lang.Integer,​java.lang.String> getTypeStrings()  
      void initializeConnectionData​(java.sql.Connection connection)  
      protected void initializePlatformOperators()
      Initialize any platform-specific operators
      protected void initializeTypeStrings()  
      boolean isOutputAllowWithResultSet()
      INTERNAL: Return true if output parameters can be built with result sets.
      boolean isSybase()  
      java.util.Hashtable<java.lang.Class<? extends java.lang.Number>,​java.lang.Number> maximumNumericValues()
      Builds a table of maximum numeric values keyed on java class.
      java.util.Hashtable<java.lang.Class<? extends java.lang.Number>,​java.lang.Number> minimumNumericValues()
      Builds a table of minimum numeric values keyed on java class.
      protected static ExpressionOperator modOperator()
      Override the default MOD operator.
      protected static ExpressionOperator operatorOuterJoin()
      Create the outer join operator for this platform
      void printFieldIdentityClause​(java.io.Writer writer)
      Append the receiver's field 'identity' constraint clause to a writer.
      void printFieldNullClause​(java.io.Writer writer)
      Append the receiver's field 'NULL' constraint clause to a writer.
      void registerOutputParameter​(java.sql.CallableStatement statement, int index, int jdbcType)
      This method is used to register output parameter on Callable Statements for Stored Procedures as each database seems to have a different method.
      void registerOutputParameter​(java.sql.CallableStatement statement, int index, int jdbcType, java.lang.String typeName)  
      boolean requiresProcedureCallBrackets()
      USed for sp calls.
      boolean requiresProcedureCallOuputToken()
      Used for sp calls.
      boolean requiresTypeNameToRegisterOutputParameter()
      INTERNAL: Indicates whether the version of CallableStatement.registerOutputParameter method that takes type name should be used.
      boolean shouldPrintInOutputTokenBeforeType()  
      boolean shouldPrintLockingClauseAfterWhereClause()
      The sybase syntax for obtaining pessimistic lock is "SELECT ADDRESS_ID, ...
      boolean shouldPrintOutputTokenBeforeType()  
      boolean shouldUseJDBCOuterJoinSyntax()
      JDBC defines and outer join syntax, many drivers do not support this.
      protected static ExpressionOperator singleArgumentSubstringOperator()
      Override the default SubstringSingleArg operator.
      boolean supportsDeleteOnCascade()
      Sybase (as of Sybase ASE 15, does not support delete on cascade).
      boolean supportsGlobalTempTables()
      INTERNAL:
      boolean supportsIdentity()
      INTERNAL: Indicates whether the platform supports identity.
      protected static ExpressionOperator sybaseAddMonthsOperator()
      INTERNAL: Function, to add months to a date.
      protected static ExpressionOperator sybaseInStringOperator()
      INTERNAL: Build instring operator
      protected static ExpressionOperator sybaseLocate2Operator()
      INTERNAL: Build the Sybase equivalent to Locate with a start index.
      protected static ExpressionOperator sybaseLocateOperator()
      INTERNAL: Build the Sybase equivalent to Locate
      protected static ExpressionOperator sybaseToCharOperator()
      INTERNAL: Build Sybase equivalent to TO_CHAR.
      protected static ExpressionOperator sybaseToCharWithFormatOperator()
      INTERNAL: Build Sybase equivalent to TO_CHAR.
      protected static ExpressionOperator sybaseToDateOperator()
      INTERNAL: Build Sybase equivalent to TO_DATE.
      protected static ExpressionOperator sybaseToDateToStringOperator()
      INTERNAL: Build Sybase equivalent to TO_CHAR.
      protected static ExpressionOperator sybaseToNumberOperator()
      INTERNAL: Build Sybase equivalent to TO_NUMBER.
      protected static ExpressionOperator trim2Operator()
      INTERNAL: Build Trim operator.
      protected static ExpressionOperator trimOperator()
      INTERNAL: Use RTRIM(LTRIM(?))
      boolean useJDBCStoredProcedureSyntax()
      Return true if this platform is to use the JDBC supported syntax for executing stored procedures.
      void writeUpdateOriginalFromTempTableSql​(java.io.Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, java.util.Collection pkFields, java.util.Collection assignedFields)
      INTERNAL:
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

        addBatch, addStructConverter, allowBindingForSelectClause, allowsSizeInProcedureArguments, appendBoolean, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildCallWithReturning, buildClassTypes, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, canBuildCallWithReturning, checkTableExists, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, copyInto, createArray, createArray, createPlatformDefaultSequence, createStruct, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchBeginString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlSuffix, getCreateViewString, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, getDriverSupportsNVarChar, getDropCascadeString, getDropDatabaseSchemaString, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getIndexNamePrefix, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCTypeForSetNull, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getObjectFromResultSet, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, getProcedureArgument, getProcedureArgument, getProcedureAsString, getProcedureBeginString, getProcedureEndString, getProcedureOptionList, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTableExistsQuery, getTransactionIsolation, getTypeConverters, getUniqueConstraintDeletionString, getUseNationalCharacterVaryingTypeForString, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, hasPartitioningCallback, initialize, isAlterSequenceObjectSupported, isCastRequired, isDynamicSQLRequiredForFunctions, isForUpdateCompatibleWithDistinct, isInformixOuterJoin, isJDBCExecuteCompliant, isLobCompatibleWithDistinct, isLockTimeoutException, isNullAllowedInSelectClause, isRowCountOutputParameterRequired, isXDBDocument, minimumTimeIncrement, prepareBatchStatement, printFieldNotNullClause, printFieldTypeSize, printFieldTypeSize, printFieldUnique, printFieldUnique, printSQLSelectStatement, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresTableInIndexDropDDL, 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, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInputTokenAtStart, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsForeignKeyConstraints, supportsIndexes, supportsIndividualTableLocking, supportsLocalTempTables, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOrderByParameters, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsStoredFunctions, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, supportsVPD, supportsWaitForUpdate, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, wasFailureCommunicationBased, writeAddColumnClause, writeAutoAssignmentSetClause, writeAutoJoinWhereClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeFields, writeFieldsAutoClause, writeFieldsList, writeInsertIntoTableSql, writeJoinWhereClause, writeLOB, writeParameterMarker, writeTableCreationSuffix
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

        addOperator, addSequence, addSequence, buildNativeCall, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, buildSelectQueryForSequenceObject, clone, convertObject, convertObject, createConnectionCustomizer, createExpressionFor, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultNativeSequenceToTable, getDefaultSeqenceAtNextValue, getDefaultSequence, getDefaultSequenceToWrite, getDriverVersion, getEndDelimiter, getINClauseLimit, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, isAccess, isAttunity, isCloudscape, isDB2, isDB2Z, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle, isOracle23, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, sequencesAfterCloneCleanup, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSeqenceAtNextValue, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setSupportsReturnGeneratedKeys, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsNativeSequenceNumbers, supportsReturnGeneratedKeys, supportsSequenceObjects, toString, usesPlatformDefaultSequence
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • typeStrings

        protected java.util.Map typeStrings
    • Constructor Detail

      • SybasePlatform

        public SybasePlatform()
    • Method Detail

      • initializeConnectionData

        public void initializeConnectionData​(java.sql.Connection connection)
                                      throws java.sql.SQLException
        Overrides:
        initializeConnectionData in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.sql.SQLException
      • getTypeStrings

        protected java.util.Map<java.lang.Integer,​java.lang.String> getTypeStrings()
      • initializeTypeStrings

        protected void initializeTypeStrings()
      • getJDBCType

        public int getJDBCType​(java.lang.Class javaType)
        Sybase and SQL Anywhere do not support BLOB/CLOB but require LONGVARBINARY/LONGVARCHAR.
        Overrides:
        getJDBCType in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • appendByteArray

        protected void appendByteArray​(byte[] bytes,
                                       java.io.Writer writer)
                                throws java.io.IOException
        If using native SQL then print a byte[] as '0xFF...'
        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
        Answer a platform correct string representation of a Date, suitable for SQL generation. Native format: 'yyyy-mm-dd
        Overrides:
        appendDate in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.io.IOException
      • appendSybaseTimestamp

        protected void appendSybaseTimestamp​(java.sql.Timestamp timestamp,
                                             java.io.Writer writer)
                                      throws java.io.IOException
        Write a timestamp in Sybase specific format (yyyy-mm-dd-hh.mm.ss.fff).
        Throws:
        java.io.IOException
      • appendTime

        protected void appendTime​(java.sql.Time time,
                                  java.io.Writer writer)
                           throws java.io.IOException
        Answer a platform correct string representation of a Time, suitable for SQL generation. The time is printed in the ODBC platform independent format {t'hh:mm:ss'}.
        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
        Answer a platform correct string representation of a Timestamp, suitable for SQL generation. The date is printed in the ODBC platform independent format {d'YYYY-MM-DD'}.
        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
        Answer a platform correct string representation of a Calendar, suitable for SQL generation. The date is printed in the ODBC platform independent format {d'YYYY-MM-DD'}.
        Overrides:
        appendCalendar in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.io.IOException
      • appendSybaseCalendar

        protected void appendSybaseCalendar​(java.util.Calendar calendar,
                                            java.io.Writer writer)
                                     throws java.io.IOException
        Write a timestamp in Sybase specific format ( yyyy-mm-dd-hh.mm.ss.fff)
        Throws:
        java.io.IOException
      • buildFieldTypes

        protected java.util.Hashtable buildFieldTypes()
        Overrides:
        buildFieldTypes in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • buildSelectQueryForIdentity

        public ValueReadQuery buildSelectQueryForIdentity()
        INTERNAL: Build the identity query for native sequencing.
        Overrides:
        buildSelectQueryForIdentity in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • shouldPrintLockingClauseAfterWhereClause

        public boolean shouldPrintLockingClauseAfterWhereClause()
        The sybase syntax for obtaining pessimistic lock is "SELECT ADDRESS_ID, ... FROM ADDRESS WITH (HOLDLOCK) WHERE (ADDRESS_ID = ?)" Please note that above only obtains shared lock. Apparently there is no way to obtain exclusive lock on Sybase using only a select statement
        Overrides:
        shouldPrintLockingClauseAfterWhereClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getSelectForUpdateString

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

        public java.lang.String getBatchDelimiterString()
        Used for batch writing and sp defs.
        Overrides:
        getBatchDelimiterString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getCreationInOutputProcedureToken

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

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

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

        public java.lang.String getJdbcTypeName​(int jdbcType)
        INTERNAL: Returns the type name corresponding to the jdbc type
        Overrides:
        getJdbcTypeName 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.
      • getOutputProcedureToken

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

        public java.lang.String getProcedureArgumentString()
        Used for sp defs.
        Overrides:
        getProcedureArgumentString 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()
        Overrides:
        getProcedureCallTail in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • useJDBCStoredProcedureSyntax

        public boolean useJDBCStoredProcedureSyntax()
        Return true if this platform is to use the JDBC supported syntax for executing stored procedures. If the driver is known to be the DataDirec driver, and the value is not set, then set to true and return.
      • getStoredProcedureParameterPrefix

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

        public ValueReadQuery getTimestampQuery()
        PUBLIC: This method returns the query to select the timestamp from the server for Sybase.
        Specified by:
        getTimestampQuery in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        getTimestampQuery in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • initializePlatformOperators

        protected void initializePlatformOperators()
        Initialize any platform-specific operators
        Overrides:
        initializePlatformOperators in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • modOperator

        protected static ExpressionOperator modOperator()
        Override the default MOD operator.
      • operatorOuterJoin

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

        protected static ExpressionOperator singleArgumentSubstringOperator()
        Override the default SubstringSingleArg operator.
      • sybaseAddMonthsOperator

        protected static ExpressionOperator sybaseAddMonthsOperator()
        INTERNAL: Function, to add months to a date.
      • sybaseInStringOperator

        protected static ExpressionOperator sybaseInStringOperator()
        INTERNAL: Build instring operator
      • sybaseToNumberOperator

        protected static ExpressionOperator sybaseToNumberOperator()
        INTERNAL: Build Sybase equivalent to TO_NUMBER.
      • sybaseToDateToStringOperator

        protected static ExpressionOperator sybaseToDateToStringOperator()
        INTERNAL: Build Sybase equivalent to TO_CHAR.
      • sybaseToDateOperator

        protected static ExpressionOperator sybaseToDateOperator()
        INTERNAL: Build Sybase equivalent to TO_DATE.
      • sybaseToCharOperator

        protected static ExpressionOperator sybaseToCharOperator()
        INTERNAL: Build Sybase equivalent to TO_CHAR.
      • sybaseToCharWithFormatOperator

        protected static ExpressionOperator sybaseToCharWithFormatOperator()
        INTERNAL: Build Sybase equivalent to TO_CHAR.
      • sybaseLocateOperator

        protected static ExpressionOperator sybaseLocateOperator()
        INTERNAL: Build the Sybase equivalent to Locate
      • sybaseLocate2Operator

        protected static ExpressionOperator sybaseLocate2Operator()
        INTERNAL: Build the Sybase equivalent to Locate with a start index. Sybase does not define this, so this gets a little complex...
      • extractOperator

        protected static ExpressionOperator extractOperator()
        INTERNAL: Derby does not support EXTRACT, but does have DATEPART.
      • trimOperator

        protected static ExpressionOperator trimOperator()
        INTERNAL: Use RTRIM(LTRIM(?)) function for trim.
      • trim2Operator

        protected static ExpressionOperator trim2Operator()
        INTERNAL: Build Trim operator.
      • isOutputAllowWithResultSet

        public boolean isOutputAllowWithResultSet()
        INTERNAL: Return true if output parameters can be built with result sets.
        Overrides:
        isOutputAllowWithResultSet in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • isSybase

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

        public java.util.Hashtable<java.lang.Class<? extends java.lang.Number>,​java.lang.Number> 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<java.lang.Class<? extends java.lang.Number>,​java.lang.Number> 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
      • printFieldIdentityClause

        public void printFieldIdentityClause​(java.io.Writer writer)
                                      throws ValidationException
        Append the receiver's field 'identity' constraint clause to a writer.
        Overrides:
        printFieldIdentityClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        ValidationException
      • printFieldNullClause

        public void printFieldNullClause​(java.io.Writer writer)
                                  throws ValidationException
        Append the receiver's field 'NULL' constraint clause to a writer.
        Overrides:
        printFieldNullClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        ValidationException
      • registerOutputParameter

        public void registerOutputParameter​(java.sql.CallableStatement statement,
                                            int index,
                                            int jdbcType)
                                     throws java.sql.SQLException
        This method is used to register output parameter on Callable Statements for Stored Procedures as each database seems to have a different method.
        Overrides:
        registerOutputParameter in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.sql.SQLException
      • registerOutputParameter

        public void registerOutputParameter​(java.sql.CallableStatement statement,
                                            int index,
                                            int jdbcType,
                                            java.lang.String typeName)
                                     throws java.sql.SQLException
        Overrides:
        registerOutputParameter in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.sql.SQLException
      • requiresProcedureCallBrackets

        public boolean requiresProcedureCallBrackets()
        USed for sp calls.
        Overrides:
        requiresProcedureCallBrackets in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • requiresProcedureCallOuputToken

        public boolean requiresProcedureCallOuputToken()
        Used for sp calls. Sybase must print output after output params.
        Overrides:
        requiresProcedureCallOuputToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • requiresTypeNameToRegisterOutputParameter

        public boolean requiresTypeNameToRegisterOutputParameter()
        INTERNAL: Indicates whether the version of CallableStatement.registerOutputParameter method that takes type name should be used.
        Overrides:
        requiresTypeNameToRegisterOutputParameter in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • shouldPrintInOutputTokenBeforeType

        public boolean shouldPrintInOutputTokenBeforeType()
        Overrides:
        shouldPrintInOutputTokenBeforeType in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • shouldPrintOutputTokenBeforeType

        public boolean shouldPrintOutputTokenBeforeType()
        Overrides:
        shouldPrintOutputTokenBeforeType in class org.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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • supportsIdentity

        public boolean supportsIdentity()
        INTERNAL: Indicates whether the platform supports identity. Sybase does through IDENTITY field types. This method is to be used *ONLY* by sequencing classes
        Overrides:
        supportsIdentity in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • supportsDeleteOnCascade

        public boolean supportsDeleteOnCascade()
        Sybase (as of Sybase ASE 15, does not support delete on cascade). Sybase ASA (SQL Anywhere does, so must use different platform).
        Overrides:
        supportsDeleteOnCascade in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • supportsGlobalTempTables

        public boolean supportsGlobalTempTables()
        INTERNAL:
        Overrides:
        supportsGlobalTempTables in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getCreateTempTableSqlPrefix

        protected java.lang.String getCreateTempTableSqlPrefix()
        INTERNAL:
        Overrides:
        getCreateTempTableSqlPrefix in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getTempTableForTable

        public org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable​(org.eclipse.persistence.internal.helper.DatabaseTable table)
        INTERNAL:
        Overrides:
        getTempTableForTable in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • writeUpdateOriginalFromTempTableSql

        public void writeUpdateOriginalFromTempTableSql​(java.io.Writer writer,
                                                        org.eclipse.persistence.internal.helper.DatabaseTable table,
                                                        java.util.Collection pkFields,
                                                        java.util.Collection assignedFields)
                                                 throws java.io.IOException
        INTERNAL:
        Overrides:
        writeUpdateOriginalFromTempTableSql in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.io.IOException