- 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:
- Serialized Form
- Since:
- TOPLink/Java 1.0
-
-
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, uuidQuery
-
-
Constructor Summary
Constructors Constructor Description SQLServerPlatform()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static ExpressionOperatoraddMonthsOperator()INTERNAL: Function, to add months to a date.protected voidappendByteArray(byte[] bytes, Writer writer)If using native SQL then print a byte[] as '0xFF...'protected voidappendCalendar(Calendar calendar, Writer writer)Answer a platform correct string representation of a Calendar, suitable for SQL generation.protected voidappendDate(Date date, Writer writer)Answer a platform correct string representation of a Date, suitable for SQL generation.protected voidappendSybaseCalendar(Calendar calendar, Writer writer)Write a timestamp in Sybase specific format ( yyyy-mm-dd-hh.mm.ss.fff)protected voidappendSybaseTimestamp(Timestamp timestamp, Writer writer)Write a timestamp in Sybase specific format ( yyyy-mm-dd-hh.mm.ss.fff)protected voidappendTime(Time time, Writer writer)Answer a platform correct string representation of a Time, suitable for SQL generation.protected voidappendTimestamp(Timestamp timestamp, Writer writer)Answer a platform correct string representation of a Timestamp, suitable for SQL generation.protected Map<String,Class<?>>buildClassTypes()Return the mapping of class types to database types for the schema framework.protected Hashtable<Class<?>,org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition>buildFieldTypes()Return the mapping of class types to database types for the schema framework.ValueReadQuerybuildSelectQueryForIdentity()INTERNAL: Build the identity query for native sequencing.ValueReadQuerybuildSelectQueryForSequenceObject(String qualifiedSeqName, Integer size)INTERNAL: Produce a DataReadQuery which updates(!) the sequence number in the database and returns it.Map<Object,Object>connectionProperties()INTERNAL: Get platform specific connection properties.booleandontBindUpdateAllQueryUsingTempTables()INTERNAL: In SQLServer local temporary table created by one PreparedStatement can't be used in another PreparedStatement.StringgetBatchDelimiterString()Used for batch writing and sp defs.protected StringgetCreateTempTableSqlPrefix()INTERNAL:StringgetCreationInOutputProcedureToken()This method is used to print the required output parameter token for the specific platform.StringgetCreationOutputProcedureToken()This method is used to print the required output parameter token for the specific platform.StringgetInOutputProcedureToken()This method is used to print the output parameter token when stored procedures are calledintgetMaxFieldNameSize()INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.VectorgetNativeTableInfo(String table, String creator, org.eclipse.persistence.internal.sessions.AbstractSession session)Return the catalog information through using the native SQL catalog selects.ObjectgetObjectFromResultSet(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session)INTERNAL: Get the object from the JDBC Result set.StringgetOutputProcedureToken()This method is used to print the output parameter token when stored procedures are calledStringgetProcedureArgumentString()Used for sp defs.StringgetProcedureCallHeader()Used for sp calls.StringgetSelectForUpdateNoWaitString()INTERNAL: This syntax does no wait on the lock.StringgetSelectForUpdateString()INTERNAL: Lock.StringgetStoredProcedureParameterPrefix()org.eclipse.persistence.internal.helper.DatabaseTablegetTempTableForTable(org.eclipse.persistence.internal.helper.DatabaseTable table)INTERNAL:ValueReadQuerygetTimestampQuery()PUBLIC: This method returns the query to select the timestamp from the server for SQLServer.voidinitializeConnectionData(Connection connection)INTERNAL: Allow initialization from the connection.protected voidinitializePlatformOperators()Initialize any platform-specific operatorsprotected static ExpressionOperatorinStringOperator()INTERNAL: Build instring operatorbooleanisOutputAllowWithResultSet()INTERNAL: Return true if output parameters can be built with result sets.booleanisSQLServer()protected static ExpressionOperatorlocate2Operator()INTERNAL: create the Locate2 Operator for this platformprotected static ExpressionOperatorlocateOperator()INTERNAL: Build the Sybase equivalent to LocateHashtable<Class<? extends Number>,? super Number>maximumNumericValues()Builds a table of maximum numeric values keyed on java class.Hashtable<Class<? extends Number>,? super Number>minimumNumericValues()Builds a table of minimum numeric values keyed on java class.protected ExpressionOperatormodOperator()Override the default MOD operator.protected static ExpressionOperatoroperatorOuterJoin()voidprintFieldIdentityClause(Writer writer)INTERNAL: Append the receiver's field 'identity' constraint clause to a writer.voidprintFieldNullClause(Writer writer)INTERNAL: Append the receiver's field 'NULL' constraint clause to a writer.voidprintSQLSelectStatement(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.booleanrequiresProcedureCallBrackets()USed for sp calls.booleanrequiresProcedureCallOuputToken()Used for sp calls.voidsetDriverSupportsOffsetDateTime(boolean driverSupportsOffsetDateTime)Allow user to turn off ODT support, in case they rely on the old behavior.voidsetParameterValueInDatabaseCall(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.voidsetParameterValueInDatabaseCall(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.booleanshouldPrintInOutputTokenBeforeType()This is required in the construction of the stored procedures with output parametersbooleanshouldPrintLockingClauseAfterWhereClause()INTERNAL: Indicates whether locking clause should be printed after where clause by SQLSelectStatement.booleanshouldPrintOutputTokenBeforeType()This is required in the construction of the stored procedures with output parametersbooleanshouldUseJDBCOuterJoinSyntax()JDBC defines and outer join syntax, many drivers do not support this.protected static ExpressionOperatorsingleArgumentSubstringOperator()Override the default SubstringSingleArg operator.booleansupportsIdentity()INTERNAL: Indicates whether the platform supports identity.booleansupportsLocalTempTables()INTERNAL:booleansupportsSequenceObjects()INTERNAL:protected static ExpressionOperatortoCharOperator()INTERNAL: Build Sybase equivalent to TO_CHAR.protected static ExpressionOperatortoDateOperator()INTERNAL: Build Sybase equivalent to TO_DATE.protected static ExpressionOperatortoDateToStringOperator()INTERNAL: Build Sybase equivalent to TO_CHAR.protected static ExpressionOperatortoNumberOperator()INTERNAL: Build Sybase equivalent to TO_NUMBER.protected static ExpressionOperatortrim2Operator()INTERNAL: Build Trim operator.protected static ExpressionOperatortrimOperator()INTERNAL: Use RTRIM(LTRIM(?)) function for trim.voidwriteUpdateOriginalFromTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, Collection<org.eclipse.persistence.internal.helper.DatabaseField> pkFields, Collection<org.eclipse.persistence.internal.helper.DatabaseField> 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, 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, getJsonPlatform, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, 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, getDriverVersion, getEndDelimiter, getINClauseLimit, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getUpdateSequenceQuery, getUUIDQuery, hasDefaultSequence, initializeDefaultQueries, initIdentitySequences, isAccess, isAttunity, isCloudscape, isDB2, isDB2Z, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMariaDB, isMaxDB, isMySQL, isODBC, isOracle, isOracle12, isOracle23, 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, setUUIDQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsNativeSequenceNumbers, supportsReturnGeneratedKeys, toString, usesPlatformDefaultSequence
-
-
-
-
Method Detail
-
connectionProperties
public Map<Object,Object> connectionProperties()
Description copied from interface:org.eclipse.persistence.internal.databaseaccess.PlatformINTERNAL: Get platform specific connection properties.- Returns:
- properties to be added to connection properties
-
initializeConnectionData
public void initializeConnectionData(Connection connection) throws SQLException
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformINTERNAL: Allow initialization from the connection.- Overrides:
initializeConnectionDatain classorg.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 IOExceptionIf using native SQL then print a byte[] as '0xFF...'- Overrides:
appendByteArrayin classorg.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:
appendDatein classorg.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:
appendTimein classorg.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:
appendTimestampin classorg.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:
appendCalendarin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
buildClassTypes
protected Map<String,Class<?>> buildClassTypes()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformReturn the mapping of class types to database types for the schema framework.- Overrides:
buildClassTypesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
buildFieldTypes
protected Hashtable<Class<?>,org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition> buildFieldTypes()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformReturn the mapping of class types to database types for the schema framework.- Overrides:
buildFieldTypesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
buildSelectQueryForIdentity
public ValueReadQuery buildSelectQueryForIdentity()
INTERNAL: Build the identity query for native sequencing.- Overrides:
buildSelectQueryForIdentityin classorg.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:
buildSelectQueryForSequenceObjectin classorg.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:
dontBindUpdateAllQueryUsingTempTablesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getBatchDelimiterString
public String getBatchDelimiterString()
Used for batch writing and sp defs.- Overrides:
getBatchDelimiterStringin classorg.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:
getCreationInOutputProcedureTokenin classorg.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:
getCreationOutputProcedureTokenin classorg.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:
getInOutputProcedureTokenin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getMaxFieldNameSize
public int getMaxFieldNameSize()
INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.- Overrides:
getMaxFieldNameSizein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getNativeTableInfo
public Vector getNativeTableInfo(String table, String creator, org.eclipse.persistence.internal.sessions.AbstractSession session)
Return the catalog information through using the native SQL catalog selects. This is required because many JDBC driver do not support meta-data. Willcards can be passed as arguments.
-
getOutputProcedureToken
public String getOutputProcedureToken()
This method is used to print the output parameter token when stored procedures are called- Overrides:
getOutputProcedureTokenin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureArgumentString
public String getProcedureArgumentString()
Used for sp defs.- Overrides:
getProcedureArgumentStringin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureCallHeader
public String getProcedureCallHeader()
Used for sp calls.- Overrides:
getProcedureCallHeaderin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getStoredProcedureParameterPrefix
public String getStoredProcedureParameterPrefix()
- Overrides:
getStoredProcedureParameterPrefixin classorg.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:
getTimestampQueryin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
getTimestampQueryin classorg.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:
getSelectForUpdateStringin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getSelectForUpdateNoWaitString
public String getSelectForUpdateNoWaitString()
INTERNAL: This syntax does no wait on the lock.- Overrides:
getSelectForUpdateNoWaitStringin classorg.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:
shouldPrintLockingClauseAfterWhereClausein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
initializePlatformOperators
protected void initializePlatformOperators()
Initialize any platform-specific operators- Overrides:
initializePlatformOperatorsin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
trimOperator
protected static ExpressionOperator trimOperator()
INTERNAL: Use RTRIM(LTRIM(?)) function for trim.
-
trim2Operator
protected static ExpressionOperator trim2Operator()
INTERNAL: Build Trim operator.
-
maximumNumericValues
public Hashtable<Class<? extends Number>,? super 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:
maximumNumericValuesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
minimumNumericValues
public Hashtable<Class<? extends Number>,? super 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:
minimumNumericValuesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
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:
isOutputAllowWithResultSetin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
isSQLServer
public boolean isSQLServer()
- Specified by:
isSQLServerin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
isSQLServerin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
printFieldIdentityClause
public void printFieldIdentityClause(Writer writer) throws ValidationException
INTERNAL: Append the receiver's field 'identity' constraint clause to a writer.- Overrides:
printFieldIdentityClausein classorg.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:
printFieldNullClausein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
ValidationException
-
requiresProcedureCallBrackets
public boolean requiresProcedureCallBrackets()
USed for sp calls.- Overrides:
requiresProcedureCallBracketsin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
requiresProcedureCallOuputToken
public boolean requiresProcedureCallOuputToken()
Used for sp calls. Sybase must print output after output params.- Overrides:
requiresProcedureCallOuputTokenin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintInOutputTokenBeforeType
public boolean shouldPrintInOutputTokenBeforeType()
This is required in the construction of the stored procedures with output parameters- Overrides:
shouldPrintInOutputTokenBeforeTypein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintOutputTokenBeforeType
public boolean shouldPrintOutputTokenBeforeType()
This is required in the construction of the stored procedures with output parameters- Overrides:
shouldPrintOutputTokenBeforeTypein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldUseJDBCOuterJoinSyntax
public boolean shouldUseJDBCOuterJoinSyntax()
JDBC defines and outer join syntax, many drivers do not support this. So we normally avoid it.- Overrides:
shouldUseJDBCOuterJoinSyntaxin classorg.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:
supportsIdentityin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
supportsSequenceObjects
public boolean supportsSequenceObjects()
INTERNAL:- Overrides:
supportsSequenceObjectsin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
supportsLocalTempTables
public boolean supportsLocalTempTables()
INTERNAL:- Overrides:
supportsLocalTempTablesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getCreateTempTableSqlPrefix
protected String getCreateTempTableSqlPrefix()
INTERNAL:- Overrides:
getCreateTempTableSqlPrefixin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getTempTableForTable
public org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
INTERNAL:- Overrides:
getTempTableForTablein classorg.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<org.eclipse.persistence.internal.helper.DatabaseField> pkFields, Collection<org.eclipse.persistence.internal.helper.DatabaseField> assignedFields) throws IOException
INTERNAL:- Overrides:
writeUpdateOriginalFromTempTableSqlin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Parameters:
writer- for writing the sqltable- 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.DatabasePlatformINTERNAL: Print the SQL representation of the statement on a stream, storing the fields in the DatabaseCall.- Overrides:
printSQLSelectStatementin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getObjectFromResultSet
public Object getObjectFromResultSet(ResultSet resultSet, int columnNumber, int type, org.eclipse.persistence.internal.sessions.AbstractSession session) throws SQLException
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformINTERNAL: Get the object from the JDBC Result set. Added to allow other platforms to override.- Overrides:
getObjectFromResultSetin classorg.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.DatabasePlatformINTERNAL 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:
setParameterValueInDatabaseCallin classorg.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.DatabasePlatformINTERNAL 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:
setParameterValueInDatabaseCallin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
SQLException
-
-