Class SQLServerPlatform

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.SQLServerPlatform
All Implemented Interfaces:
Serializable, Cloneable, org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>, org.eclipse.persistence.internal.databaseaccess.Platform

public class SQLServerPlatform extends DatabasePlatform

Purpose: Provides SQL Server specific behavior.

Responsibilities:

  • Native SQL for byte[], Date, Time, & Timestamp.
  • Native sequencing using @@IDENTITY.
See Also:
  • Field Summary

    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

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected static ExpressionOperator
    INTERNAL: Function, to add months to a date.
    protected void
    appendByteArray(byte[] bytes, Writer writer)
    If using native SQL then print a byte[] as '0xFF...'
    protected void
    appendCalendar(Calendar calendar, Writer writer)
    Answer a platform correct string representation of a Calendar, suitable for SQL generation.
    protected void
    appendDate(Date date, Writer writer)
    Answer a platform correct string representation of a Date, suitable for SQL generation.
    protected void
    Write a timestamp in Sybase specific format ( yyyy-mm-dd-hh.mm.ss.fff)
    protected void
    Write a timestamp in Sybase specific format ( yyyy-mm-dd-hh.mm.ss.fff)
    protected void
    appendTime(Time time, Writer writer)
    Answer a platform correct string representation of a Time, suitable for SQL generation.
    protected void
    appendTimestamp(Timestamp timestamp, Writer writer)
    Answer a platform correct string representation of a Timestamp, suitable for SQL generation.
    protected Hashtable
    Return the mapping of class types to database types for the schema framework.
    INTERNAL: Build the identity query for native sequencing.
    INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the database and returns it.
    boolean
    INTERNAL: In SQLServer local temporary table created by one PreparedStatement can't be used in another PreparedStatement.
    protected static ExpressionOperator
    INTERNAL: Derby does not support EXTRACT, but does have DATEPART.
    Used for batch writing and sp defs.
    protected String
    INTERNAL:
    This method is used to print the required output parameter token for the specific platform.
    This method is used to print the required output parameter token for the specific platform.
    This method is used to print the output parameter token when stored procedures are called
    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 the object from the JDBC Result set.
    This method is used to print the output parameter token when stored procedures are called
    Used for sp defs.
    Used for sp calls.
    INTERNAL: This syntax does no wait on the lock.
    INTERNAL: Lock.
     
    org.eclipse.persistence.internal.helper.DatabaseTable
    getTempTableForTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
    INTERNAL:
    PUBLIC: This method returns the query to select the timestamp from the server for SQLServer.
    void
    INTERNAL: Allow initialization from the connection.
    protected void
    Initialize any platform-specific operators
    protected static ExpressionOperator
    INTERNAL: Build instring operator
    boolean
    INTERNAL: Return true if output parameters can be built with result sets.
    boolean
     
    protected static ExpressionOperator
    INTERNAL: create the Locate2 Operator for this platform
    protected static ExpressionOperator
    INTERNAL: Build the Sybase equivalent to Locate
    Builds a table of maximum numeric values keyed on java class.
    Builds a table of minimum numeric values keyed on java class.
    Override the default MOD operator.
    protected static ExpressionOperator
     
    void
    INTERNAL: Append the receiver's field 'identity' constraint clause to a writer.
    void
    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.
    boolean
    USed for sp calls.
    boolean
    Used for sp calls.
    void
    setDriverSupportsOffsetDateTime(boolean driverSupportsOffsetDateTime)
    Allow user to turn off ODT support, in case they rely on the old behavior.
    void
    setParameterValueInDatabaseCall(Object parameter, CallableStatement statement, String name, org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL Set the parameter in the JDBC statement with the given name.
    void
    setParameterValueInDatabaseCall(Object parameter, PreparedStatement statement, int index, org.eclipse.persistence.internal.sessions.AbstractSession session)
    INTERNAL Set the parameter in the JDBC statement at the given index.
    boolean
    This is required in the construction of the stored procedures with output parameters
    boolean
    INTERNAL: Indicates whether locking clause should be printed after where clause by SQLSelectStatement.
    boolean
    This is required in the construction of the stored procedures with output parameters
    boolean
    JDBC defines and outer join syntax, many drivers do not support this.
    protected static ExpressionOperator
    Override the default SubstringSingleArg operator.
    boolean
    INTERNAL: Indicates whether the platform supports identity.
    boolean
    INTERNAL:
    boolean
    INTERNAL:
    protected static ExpressionOperator
    INTERNAL: Build Sybase equivalent to TO_CHAR.
    protected static ExpressionOperator
    INTERNAL: Build Sybase equivalent to TO_DATE.
    protected static ExpressionOperator
    INTERNAL: Build Sybase equivalent to TO_CHAR.
    protected static ExpressionOperator
    INTERNAL: Build Sybase equivalent to TO_NUMBER.
    protected static ExpressionOperator
    INTERNAL: Build Trim operator.
    protected static ExpressionOperator
    INTERNAL: Use RTRIM(LTRIM(?)) function for trim.
    void
    writeUpdateOriginalFromTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, Collection pkFields, 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, 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, getIndexNamePrefix, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, getProcedureArgument, getProcedureArgument, getProcedureAsString, getProcedureBeginString, getProcedureCallTail, getProcedureEndString, getProcedureOptionList, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, 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, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, registerOutputParameter, registerOutputParameter, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, 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, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInputTokenAtStart, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsIndividualTableLocking, 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, clone, convertObject, createConnectionCustomizer, createExpressionFor, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultNativeSequenceToTable, getDefaultSeqenceAtNextValue, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getINClauseLimit, 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, isOracle, isOracle12, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, 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

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • SQLServerPlatform

      public SQLServerPlatform()
  • Method Details

    • initializeConnectionData

      public void initializeConnectionData(Connection connection) throws SQLException
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      INTERNAL: Allow initialization from the connection.
      Overrides:
      initializeConnectionData in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Throws:
      SQLException
    • setDriverSupportsOffsetDateTime

      public void setDriverSupportsOffsetDateTime(boolean driverSupportsOffsetDateTime)
      Allow user to turn off ODT support, in case they rely on the old behavior.
    • appendByteArray

      protected void appendByteArray(byte[] bytes, Writer writer) throws IOException
      If using native SQL then print a byte[] as '0xFF...'
      Overrides:
      appendByteArray in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Throws:
      IOException
    • appendDate

      protected void appendDate(Date date, Writer writer) throws 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:
      IOException
    • appendSybaseTimestamp

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

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

      protected void appendTime(Time time, Writer writer) throws 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:
      IOException
    • appendTimestamp

      protected void appendTimestamp(Timestamp timestamp, Writer writer) throws 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:
      IOException
    • appendCalendar

      protected void appendCalendar(Calendar calendar, Writer writer) throws 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:
      IOException
    • buildFieldTypes

      protected Hashtable buildFieldTypes()
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Return the mapping of class types to database types for the schema framework.
      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
    • buildSelectQueryForSequenceObject

      public ValueReadQuery buildSelectQueryForSequenceObject(String qualifiedSeqName, Integer size)
      INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the database and returns it.
      Overrides:
      buildSelectQueryForSequenceObject in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      Parameters:
      qualifiedSeqName - a defined database sequence
    • dontBindUpdateAllQueryUsingTempTables

      public boolean dontBindUpdateAllQueryUsingTempTables()
      INTERNAL: In SQLServer local temporary table created by one PreparedStatement can't be used in another PreparedStatement. Workaround is to use Statement instead of PreparedStatement.
      Overrides:
      dontBindUpdateAllQueryUsingTempTables in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getBatchDelimiterString

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

      public String getCreationInOutputProcedureToken()
      This method is used to print the required output parameter token for the specific platform. Used when stored procedures are created.
      Overrides:
      getCreationInOutputProcedureToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getCreationOutputProcedureToken

      public String getCreationOutputProcedureToken()
      This method is used to print the required output parameter token for the specific platform. Used when stored procedures are created.
      Overrides:
      getCreationOutputProcedureToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getInOutputProcedureToken

      public String getInOutputProcedureToken()
      This method is used to print the output parameter token when stored procedures are called
      Overrides:
      getInOutputProcedureToken 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 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.
    • getOutputProcedureToken

      public String getOutputProcedureToken()
      This method is used to print the output parameter token when stored procedures are called
      Overrides:
      getOutputProcedureToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getProcedureArgumentString

      public String getProcedureArgumentString()
      Used for sp defs.
      Overrides:
      getProcedureArgumentString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getProcedureCallHeader

      public String getProcedureCallHeader()
      Used for sp calls.
      Overrides:
      getProcedureCallHeader in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getStoredProcedureParameterPrefix

      public 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 SQLServer.
      Specified by:
      getTimestampQuery in interface org.eclipse.persistence.internal.databaseaccess.Platform
      Overrides:
      getTimestampQuery in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • getSelectForUpdateString

      public String getSelectForUpdateString()
      INTERNAL: Lock. UPDLOCK seems like the correct table hint to use: HOLDLOCK is too weak - doesn't lock out another read with HOLDLOCK, XLOCK is too strong - locks out another read which doesn't use any locks. UPDLOCK seems to behave exactly like Oracle's FOR UPDATE: locking out updates and other reads with FOR UPDATE but allowing other reads without locks. SQLServer seems to decide itself on the granularity of the lock - it could lock more than the returned rows (for instance a page). It could be forced to obtain to make sure to obtain row level lock: WITH (UPDLOCK, ROWLOCK) However this approach is strongly discouraged because it can consume too much resources: selecting 900 rows from and requiring a "personal" lock for each row may not be feasible because of not enough memory available at the moment - in that case SQLServer will wait until the resource becomes available.
      Overrides:
      getSelectForUpdateString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getSelectForUpdateNoWaitString

      public String getSelectForUpdateNoWaitString()
      INTERNAL: This syntax does no wait on the lock.
      Overrides:
      getSelectForUpdateNoWaitString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • shouldPrintLockingClauseAfterWhereClause

      public boolean shouldPrintLockingClauseAfterWhereClause()
      INTERNAL: Indicates whether locking clause should be printed after where clause by SQLSelectStatement. Example: on Oracle platform (method returns true): SELECT ADDRESS_ID, ... FROM ADDRESS WHERE (ADDRESS_ID = ?) FOR UPDATE on SQLServer platform (method returns false): SELECT ADDRESS_ID, ... FROM ADDRESS WITH (UPDLOCK) WHERE (ADDRESS_ID = ?)
      Overrides:
      shouldPrintLockingClauseAfterWhereClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • initializePlatformOperators

      protected void initializePlatformOperators()
      Initialize any platform-specific operators
      Overrides:
      initializePlatformOperators in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • 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.
    • modOperator

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

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

      protected static ExpressionOperator operatorOuterJoin()
    • locate2Operator

      protected static ExpressionOperator locate2Operator()
      INTERNAL: create the Locate2 Operator for this platform
    • addMonthsOperator

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

      protected static ExpressionOperator inStringOperator()
      INTERNAL: Build instring operator
    • toNumberOperator

      protected static ExpressionOperator toNumberOperator()
      INTERNAL: Build Sybase equivalent to TO_NUMBER.
    • toDateToStringOperator

      protected static ExpressionOperator toDateToStringOperator()
      INTERNAL: Build Sybase equivalent to TO_CHAR.
    • toDateOperator

      protected static ExpressionOperator toDateOperator()
      INTERNAL: Build Sybase equivalent to TO_DATE.
    • toCharOperator

      protected static ExpressionOperator toCharOperator()
      INTERNAL: Build Sybase equivalent to TO_CHAR.
    • locateOperator

      protected static ExpressionOperator locateOperator()
      INTERNAL: Build the Sybase equivalent to Locate
    • 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
    • isSQLServer

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

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

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

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

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

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

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

      public void printFieldIdentityClause(Writer writer) throws ValidationException
      INTERNAL: 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(Writer writer) throws ValidationException
      INTERNAL: Append the receiver's field 'NULL' constraint clause to a writer.
      Overrides:
      printFieldNullClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Throws:
      ValidationException
    • 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
    • shouldPrintInOutputTokenBeforeType

      public boolean shouldPrintInOutputTokenBeforeType()
      This is required in the construction of the stored procedures with output parameters
      Overrides:
      shouldPrintInOutputTokenBeforeType in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • shouldPrintOutputTokenBeforeType

      public boolean shouldPrintOutputTokenBeforeType()
      This is required in the construction of the stored procedures with output parameters
      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. SQLServer 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
    • supportsSequenceObjects

      public boolean supportsSequenceObjects()
      INTERNAL:
      Overrides:
      supportsSequenceObjects in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • supportsLocalTempTables

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

      protected 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
      Parameters:
      table - is original table for which temp table is created.
      Returns:
      temporary table
    • writeUpdateOriginalFromTempTableSql

      public void writeUpdateOriginalFromTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, Collection pkFields, Collection assignedFields) throws IOException
      INTERNAL:
      Overrides:
      writeUpdateOriginalFromTempTableSql in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Parameters:
      writer - for writing the sql
      table - is original table for which temp table is created.
      pkFields - primary key fields for the original table.
      assignedFields - fields to be assigned a new value.
      Throws:
      IOException
    • 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)
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      INTERNAL: Print the SQL representation of the statement on a stream, storing the fields in the DatabaseCall.
      Overrides:
      printSQLSelectStatement in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getObjectFromResultSet

      public Object getObjectFromResultSet(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session) throws SQLException
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      INTERNAL: Get the object from the JDBC Result set. Added to allow other platforms to override.
      Overrides:
      getObjectFromResultSet in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Throws:
      SQLException
      See Also:
      • "org.eclipse.persistence.platform.database.oracle.Oracle9Plaform"
    • setParameterValueInDatabaseCall

      public void setParameterValueInDatabaseCall(Object parameter, PreparedStatement statement, int index, org.eclipse.persistence.internal.sessions.AbstractSession session) throws SQLException
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      INTERNAL Set the parameter in the JDBC statement at the given index. This support a wide range of different parameter types, and is heavily optimized for common types.
      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
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      INTERNAL Set the parameter in the JDBC statement with the given name. This support a wide range of different parameter types, and is heavily optimized for common types.
      Overrides:
      setParameterValueInDatabaseCall in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Throws:
      SQLException