Class SQLServerPlatform

  • 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

    public class SQLServerPlatform
    extends DatabasePlatform

    Purpose: Provides SQL Server specific behavior.

    Responsibilities:

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

      • Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

        DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, IS_VALID_TIMEOUT, shouldIgnoreCaseOnFieldComparisons, Types_NCLOB, Types_SQLXML
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      ValueReadQuery buildSelectQueryForIdentity()
      INTERNAL: Build the identity query for native sequencing.
      ValueReadQuery buildSelectQueryForSequenceObject​(java.lang.String qualifiedSeqName, java.lang.Integer size)
      INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the database and returns it.
      boolean dontBindUpdateAllQueryUsingTempTables()
      INTERNAL: In SQLServer local temporary table created by one PreparedStatement can't be used in another PreparedStatement.
      static ExpressionOperator extractOperator()
      INTERNAL: Derby does not support EXTRACT, but does have DATEPART.
      java.lang.String getBatchDelimiterString()
      Used for batch writing and sp defs.
      java.lang.String getCreationInOutputProcedureToken()
      This method is used to print the required output parameter token for the specific platform.
      java.lang.String getCreationOutputProcedureToken()
      This method is used to print the required output parameter token for the specific platform.
      java.lang.String getInOutputProcedureToken()
      This method is used to print the output parameter token when stored procedures are called
      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()
      This method is used to print the output parameter token when stored procedures are called
      java.lang.String getProcedureArgumentString()
      Used for sp defs.
      java.lang.String getProcedureCallHeader()
      Used for sp calls.
      java.lang.String getSelectForUpdateNoWaitString()
      INTERNAL: This syntax does no wait on the lock.
      java.lang.String getSelectForUpdateString()
      INTERNAL: Lock.
      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 SQLServer.
      void initializeConnectionData​(java.sql.Connection connection)
      INTERNAL: Allow initialization from the connection.
      boolean isOutputAllowWithResultSet()
      INTERNAL: Return true if output parameters can be built with result sets.
      boolean isSQLServer()  
      static ExpressionOperator locate2Operator()
      INTERNAL: create the Locate2 Operator for this platform
      java.util.Hashtable maximumNumericValues()
      Builds a table of maximum numeric values keyed on java class.
      java.util.Hashtable minimumNumericValues()
      Builds a table of minimum numeric values keyed on java class.
      ExpressionOperator modOperator()
      Override the default MOD operator.
      void printFieldIdentityClause​(java.io.Writer writer)
      INTERNAL: Append the receiver's field 'identity' constraint clause to a writer.
      void printFieldNullClause​(java.io.Writer writer)
      INTERNAL: Append the receiver's field 'NULL' constraint clause to a writer.
      boolean requiresProcedureCallBrackets()
      USed for sp calls.
      boolean requiresProcedureCallOuputToken()
      Used for sp calls.
      boolean shouldPrintInOutputTokenBeforeType()
      This is required in the construction of the stored procedures with output parameters
      boolean shouldPrintLockingClauseAfterWhereClause()
      INTERNAL: Indicates whether locking clause should be printed after where clause by SQLSelectStatement.
      boolean shouldPrintOutputTokenBeforeType()
      This is required in the construction of the stored procedures with output parameters
      boolean shouldUseJDBCOuterJoinSyntax()
      JDBC defines and outer join syntax, many drivers do not support this.
      ExpressionOperator singleArgumentSubstringOperator()
      Override the default SubstringSingleArg operator.
      boolean supportsIdentity()
      INTERNAL: Indicates whether the platform supports identity.
      boolean supportsLocalTempTables()
      INTERNAL:
      boolean supportsSequenceObjects()
      INTERNAL:
      static ExpressionOperator trim2Operator()
      INTERNAL: Build Trim operator.
      static ExpressionOperator trimOperator()
      INTERNAL: Use RTRIM(LTRIM(?)) function for trim.
      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, allowsSizeInProcedureArguments, appendLiteralToCall, appendParameter, appendParameterInternal, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildCallWithReturning, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, canBuildCallWithReturning, commitTransaction, computeMaxRowsForSQL, convertToDatabaseType, copyInto, createArray, createArray, createStruct, createStruct, executeBatch, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchBeginString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateViewString, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, getDriverSupportsNVarChar, getDropCascadeString, getDropDatabaseSchemaString, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getIndexNamePrefix, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getObjectFromResultSet, getPartitioningCallback, getPingSQL, getProcedureArgumentSetter, getProcedureAsString, getProcedureBeginString, getProcedureCallTail, getProcedureEndString, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, 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, printFieldUnique, printSQLSelectStatement, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setBatchWritingMechanism, setCastSizeForVarcharParameter, setCursorCode, setDriverName, setDriverSupportsNVarChar, setIsCastRequired, setMaxBatchWritingSize, setParameterValueInDatabaseCall, setPartitioningCallback, setPingSQL, setPrintInnerJoinInWhereClause, setPrintOuterJoinInWhereClause, setSequenceCounterFieldName, setSequenceNameFieldName, setSequenceTableName, setShouldBindAllParameters, setShouldBindLiterals, setShouldCacheAllStatements, setShouldCreateIndicesOnForeignKeys, setShouldForceFieldNamesToUpperCase, setShouldIgnoreCaseOnFieldComparisons, setShouldOptimizeDataConversion, setShouldTrimStrings, setShouldUseRownumFiltering, setStatementCacheSize, setStoredProcedureTerminationToken, setStringBindingSize, setSupportsAutoCommit, setTableCreationSuffix, setTransactionIsolation, setUseJDBCStoredProcedureSyntax, setUseNationalCharacterVaryingTypeForString, setUsesBatchWriting, setUsesByteArrayBinding, setUsesJDBCBatchWriting, setUsesNativeBatchWriting, setUsesNativeSQL, setUsesStreamsForBinding, setUsesStringBinding, shouldAlwaysUseTempStorageForModifyAll, shouldBindAllParameters, shouldBindLiterals, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnForeignKeys, shouldCreateIndicesOnUniqueKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInputTokenAtStart, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsIndividualTableLocking, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsStoredFunctions, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, supportsVPD, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, wasFailureCommunicationBased, writeAddColumnClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeInsertIntoTableSql, writeLOB, writeParameterMarker, writeTableCreationSuffix
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

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

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • SQLServerPlatform

        public SQLServerPlatform()
    • Method Detail

      • initializeConnectionData

        public void initializeConnectionData​(java.sql.Connection connection)
                                      throws java.sql.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:
        java.sql.SQLException
      • 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​(java.lang.String qualifiedSeqName,
                                                                java.lang.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 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()
        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 java.lang.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 java.lang.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 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()
        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 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
      • 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 SQLServer.
        Specified by:
        getTimestampQuery in interface org.eclipse.persistence.internal.databaseaccess.Platform
        Overrides:
        getTimestampQuery in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • getSelectForUpdateString

        public java.lang.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 java.lang.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
      • extractOperator

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

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

        public 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
      • 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 java.util.Hashtable maximumNumericValues()
        Builds a table of maximum numeric values keyed on java class. This is used for type testing but might also be useful to end users attempting to sanitize values.

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

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

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

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

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

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

        public ExpressionOperator singleArgumentSubstringOperator()
        Override the default SubstringSingleArg operator.
      • locate2Operator

        public static ExpressionOperator locate2Operator()
        INTERNAL: create the Locate2 Operator for this platform
      • printFieldIdentityClause

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