Class HANAPlatform
- 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.HANAPlatform
-
- 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 final class HANAPlatform extends DatabasePlatform
Database Platform for SAP HANA
Feature Testing
----------------------- DDL Generation - Succeeds
- Outer Join - Succeeds
- Subquery - Succeeds
- Stored Procedure Calls - Not supported
- Stored Procedure Generation - Not supported
- Native Sequences/Identifier fields - Succeeds
- JPA Bulk Update/Delete - Succeeds with Limitations
- Batch Reading - Succeeds
- Batch Writing - Succeeds
- Pessimistic Locking - Succeeds with Limitations
- First Result/Limit - Succeeds with Limitations
- Expression Framework - Succeeds with Limitations
- Delimiters - Succeeds
- Auto Detection - Succeeds
Limitations
----------------- Reserved SQL keywords cannot be used as table, column or sequence names. Use a different name, or enclose the name in double quotes. For example: @Column(name="\"LANGUAGE\"")
- Pessimistic locking adds 'FOR UPDATE' to the SELECT statement, and cannot be used with queries that use DISTINCT.
- Pessimistic locking cannot be used with queries that select from multiple tables.
- The LockNoWait option of Pessimistic Locking cannot be used; it is ignored when specified (i.e. only 'FOR UPDATE' is added to the SELECT statement).
- Bulk update and delete operations that require multiple tables to be accessed cannot be used (e.g. bulk operation on an entity that is part of an inheritance hierarchy, UpdateAll and DeleteAll queries). <li>'= NULL' and '<> NULL' cannot be used for null comparisons in the WHERE clause. Use 'IS (NOT) NULL' instead.
- Scrollable cursors are not supported.
- Query timeouts are not supported.
- Author:
- Reiner Singer (SAP AG), Sabine Heider (SAP AG)
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform
DEFAULT_VARCHAR_SIZE
-
-
Constructor Summary
Constructors Constructor Description HANAPlatform()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ValueReadQuery
buildSelectQueryForSequenceObject(java.lang.String sequenceName, java.lang.Integer size)
INTERNAL: Returns query used to read value generated by sequence object (like Oracle sequence).boolean
canBatchWriteWithOptimisticLocking(org.eclipse.persistence.internal.databaseaccess.DatabaseCall call)
INTERNAL: Supports Batch Writing with Optimistic Locking.int
computeMaxRowsForSQL(int firstResultIndex, int maxResults)
INTERNAL: Use the JDBC maxResults and firstResultIndex setting to compute a value to use when limiting the results of a query in SQL.static ExpressionOperator
createLocate2Operator()
INTERNAL: Build locate operator with 3 params i.e.static ExpressionOperator
createLocateOperator()
INTERNAL: Build locate operator i.e.int
executeBatch(java.sql.Statement statement, boolean isStatementPrepared)
Internal: This gets called on each batch statement execution Needs to be implemented so that it returns the number of rows successfully modified by this statement for optimistic locking purposes.java.lang.String
getInputProcedureToken()
Used for stored procedure creation: Prefix for INPUT parameters.int
getMaxFieldNameSize()
INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.java.lang.String
getOutputProcedureToken()
This method is used to print the output parameter token when stored procedures are calledjava.lang.String
getProcedureCallHeader()
Used for sp calls.java.lang.String
getProcedureCallTail()
Used for sp calls.org.eclipse.persistence.internal.helper.DatabaseTable
getTempTableForTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
INTERNAL: May override this method if the platform support temporary tables.boolean
isForUpdateCompatibleWithDistinct()
INTERNAL: Indicates whether SELECT DISTINCT ...boolean
isHANA()
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
requiresProcedureCallOuputToken()
Used for sp calls.boolean
requiresUniqueConstraintCreationOnTableCreate()
Used for table creation.boolean
shouldAlwaysUseTempStorageForModifyAll()
INTERNAL: That method affects UpdateAllQuery and DeleteAllQuery execution.boolean
shouldBindLiterals()
PUBLIC: Allows platform to choose whether to bind literals in DatabaseCalls or not.boolean
shouldOptimizeDataConversion()
Return if our driver level data conversion optimization is enabled.boolean
shouldPrintOuterJoinInWhereClause()
Some database require outer joins to be given in the where clause, others require it in the from clause.boolean
shouldPrintStoredProcedureArgumentNameInCall()
INTERNAL: Should the variable name of a stored procedure call be printed as part of the procedure call e.g.boolean
shouldUseJDBCOuterJoinSyntax()
JDBC defines and outer join syntax, many drivers do not support this.boolean
supportsForeignKeyConstraints()
boolean
supportsGlobalTempTables()
INTERNAL: Indicates whether the platform supports global temporary tables.boolean
supportsIndividualTableLocking()
INTERNAL: Indicates whether locking clause could be selectively applied only to some tables in a ReadQuery.boolean
supportsLocalTempTables()
INTERNAL: Indicates whether the platform supports local temporary tables.boolean
supportsNativeSequenceNumbers()
boolean
supportsSequenceObjects()
INTERNAL: Indicates whether the platform supports sequence objects.boolean
supportsStoredFunctions()
boolean
usesStringBinding()
void
writeAddColumnClause(java.io.Writer writer, org.eclipse.persistence.internal.sessions.AbstractSession session, TableDefinition table, FieldDefinition field)
INTERNAL: May need to override this method if the platform supports ALTER TABLE ADD <column> and the generated sql doesn't work.-
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, canBuildCallWithReturning, commitTransaction, convertToDatabaseType, copyInto, createArray, createArray, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchBeginString, getBatchDelimiterString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, getDriverSupportsNVarChar, getDropCascadeString, getDropDatabaseSchemaString, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getIndexNamePrefix, getInOutputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getObjectFromResultSet, getPartitioningCallback, getPingSQL, getProcedureArgumentSetter, getProcedureArgumentString, getProcedureAsString, getProcedureBeginString, getProcedureEndString, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSelectForUpdateString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureParameterPrefix, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTransactionIsolation, getTypeConverters, getUniqueConstraintDeletionString, getUseNationalCharacterVaryingTypeForString, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, hasPartitioningCallback, initialize, initializeConnectionData, isAlterSequenceObjectSupported, isCastRequired, isDynamicSQLRequiredForFunctions, isInformixOuterJoin, isJDBCExecuteCompliant, isLobCompatibleWithDistinct, isLockTimeoutException, isNullAllowedInSelectClause, isOutputAllowWithResultSet, isRowCountOutputParameterRequired, isXDBDocument, maximumNumericValues, minimumNumericValues, minimumTimeIncrement, prepareBatchStatement, printFieldIdentityClause, printFieldNotNullClause, printFieldNullClause, printFieldTypeSize, printFieldUnique, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallBrackets, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, 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, shouldBindAllParameters, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnForeignKeys, shouldCreateIndicesOnUniqueKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsIndexes, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsTempTables, supportsUniqueColumns, supportsUniqueKeyConstraints, supportsVPD, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, wasFailureCommunicationBased, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeInsertIntoTableSql, writeLOB, writeParameterMarker, writeTableCreationSuffix, writeUpdateOriginalFromTempTableSql
-
Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
addSequence, addSequence, buildNativeCall, buildSelectQueryForIdentity, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, clone, convertObject, createConnectionCustomizer, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultNativeSequenceToTable, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getTimestampQuery, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, isAccess, isAttunity, isCloudscape, isDB2, isDBase, isDerby, isFirebird, isH2, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsIdentity, toString, usesPlatformDefaultSequence
-
-
-
-
Method Detail
-
isHANA
public boolean isHANA()
- Specified by:
isHANA
in interfaceorg.eclipse.persistence.internal.databaseaccess.Platform
- Overrides:
isHANA
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
usesStringBinding
public boolean usesStringBinding()
- Overrides:
usesStringBinding
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
requiresUniqueConstraintCreationOnTableCreate
public boolean requiresUniqueConstraintCreationOnTableCreate()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Used for table creation. If a database platform does not support ALTER TABLE syntax to add/drop unique constraints (like Symfoware), overriding this method will allow the constraint to be specified in the CREATE TABLE statement. This only affects unique constraints specified using the UniqueConstraint annotation or equivalent method. Columns for which the 'unique' attribute is set to true will be declared 'UNIQUE' in the CREATE TABLE statement regardless of the return value of this method.- Overrides:
requiresUniqueConstraintCreationOnTableCreate
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Returns:
- whether unique constraints should be declared as part of the CREATE TABLE statement instead of in separate ALTER TABLE ADD/DROP statements.
-
isForUpdateCompatibleWithDistinct
public boolean isForUpdateCompatibleWithDistinct()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Indicates whether SELECT DISTINCT ... FOR UPDATE is allowed by the platform (Oracle doesn't allow this).- Overrides:
isForUpdateCompatibleWithDistinct
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsIndividualTableLocking
public boolean supportsIndividualTableLocking()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Indicates whether locking clause could be selectively applied only to some tables in a ReadQuery. Example: the following locks the rows in SALARY table, doesn't lock the rows in EMPLOYEE table: on Oracle platform (method returns true): SELECT t0.EMP_ID..., t1.SALARY FROM EMPLOYEE t0, SALARY t1 WHERE ... FOR UPDATE t1.SALARY on SQLServer platform (method returns true): SELECT t0.EMP_ID..., t1.SALARY FROM EMPLOYEE t0, SALARY t1 WITH (UPDLOCK) WHERE ...- Overrides:
supportsIndividualTableLocking
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
createLocateOperator
public static ExpressionOperator createLocateOperator()
INTERNAL: Build locate operator i.e. LOCATE("ob", t0.F_NAME)
-
createLocate2Operator
public static ExpressionOperator createLocate2Operator()
INTERNAL: Build locate operator with 3 params i.e. LOCATE("coffee", t0.DESCRIP, 4). Last parameter is a start at.
-
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 classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
computeMaxRowsForSQL
public int computeMaxRowsForSQL(int firstResultIndex, int maxResults)
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Use the JDBC maxResults and firstResultIndex setting to compute a value to use when limiting the results of a query in SQL. These limits tend to be used in two ways. 1. MaxRows is the index of the last row to be returned (like JDBC maxResults) 2. MaxRows is the number of rows to be returned By default, we assume case 1 and simply return the value of maxResults. Subclasses may provide an override- Overrides:
computeMaxRowsForSQL
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- See Also:
MySQLPlatform
-
shouldOptimizeDataConversion
public boolean shouldOptimizeDataConversion()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Return if our driver level data conversion optimization is enabled. This can be disabled as some drivers perform data conversion themselves incorrectly.- Overrides:
shouldOptimizeDataConversion
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsNativeSequenceNumbers
public final boolean supportsNativeSequenceNumbers()
- Overrides:
supportsNativeSequenceNumbers
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
buildSelectQueryForSequenceObject
public final ValueReadQuery buildSelectQueryForSequenceObject(java.lang.String sequenceName, java.lang.Integer size)
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
INTERNAL: Returns query used to read value generated by sequence object (like Oracle sequence). In case the other version of this method (taking no parameters) returns null, this method is called every time sequence object NativeSequence reads. If the platform supportsSequenceObjects then (at least) one of buildSelectQueryForSequenceObject methods should return non-null query.- Overrides:
buildSelectQueryForSequenceObject
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
supportsGlobalTempTables
public final boolean supportsGlobalTempTables()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Indicates whether the platform supports global temporary tables. "Global" means that an attempt to create temporary table with the same name for the second time results in exception. EclipseLink attempts to create global temporary table in the beginning of UpdateAllQuery, execution and assumes that it already exists in case SQLException results. In the end of UpdateAllQuery execution all rows are removed from the temporary table - it is necessary in case the same temporary table will be used by another UpdateAllQuery in the same transaction. Override this method if the platform supports global temporary tables. Note that this method is ignored in case supportsLocalTempTables() returns true.- Overrides:
supportsGlobalTempTables
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getTempTableForTable
public org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable(org.eclipse.persistence.internal.helper.DatabaseTable table)
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: May override this method if the platform support temporary tables.- Overrides:
getTempTableForTable
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Returns:
- DatabaseTable temorary table
-
getMaxFieldNameSize
public final int getMaxFieldNameSize()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.- Overrides:
getMaxFieldNameSize
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsLocalTempTables
public final boolean supportsLocalTempTables()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Indicates whether the platform supports local temporary tables. "Local" means that several threads may create temporary tables with the same name. Local temporary table is created in the beginning of UpdateAllQuery execution and dropped in the end of it. Override this method if the platform supports local temporary tables.- Overrides:
supportsLocalTempTables
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldAlwaysUseTempStorageForModifyAll
public final boolean shouldAlwaysUseTempStorageForModifyAll()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: That method affects UpdateAllQuery and DeleteAllQuery execution. In case it returns false modify all queries would attempt to proceed without using temporary storage if it is possible. In case it returns true modify all queries would use temporary storage unless each modify statement doesn't reference any other tables. May need to override this method if the platform can't handle the sql generated for modify all queries without using temporary storage.- Overrides:
shouldAlwaysUseTempStorageForModifyAll
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldBindLiterals
public final boolean shouldBindLiterals()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
PUBLIC: Allows platform to choose whether to bind literals in DatabaseCalls or not.- Overrides:
shouldBindLiterals
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintOuterJoinInWhereClause
public final boolean shouldPrintOuterJoinInWhereClause()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Some database require outer joins to be given in the where clause, others require it in the from clause.- Overrides:
shouldPrintOuterJoinInWhereClause
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldUseJDBCOuterJoinSyntax
public final boolean shouldUseJDBCOuterJoinSyntax()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
JDBC defines and outer join syntax, many drivers do not support this. So we normally avoid it.- Overrides:
shouldUseJDBCOuterJoinSyntax
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsSequenceObjects
public boolean supportsSequenceObjects()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
INTERNAL: Indicates whether the platform supports sequence objects. This method is to be used *ONLY* by sequencing classes- Overrides:
supportsSequenceObjects
in classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
canBatchWriteWithOptimisticLocking
public boolean canBatchWriteWithOptimisticLocking(org.eclipse.persistence.internal.databaseaccess.DatabaseCall call)
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: Supports Batch Writing with Optimistic Locking.- Overrides:
canBatchWriteWithOptimisticLocking
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
executeBatch
public int executeBatch(java.sql.Statement statement, boolean isStatementPrepared) throws java.sql.SQLException
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Internal: This gets called on each batch statement execution Needs to be implemented so that it returns the number of rows successfully modified by this statement for optimistic locking purposes.- Overrides:
executeBatch
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
isStatementPrepared
- - flag is set to true if this statement is prepared- Returns:
- - number of rows modified/deleted by this statement
- Throws:
java.sql.SQLException
-
supportsForeignKeyConstraints
public boolean supportsForeignKeyConstraints()
- Overrides:
supportsForeignKeyConstraints
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getInputProcedureToken
public java.lang.String getInputProcedureToken()
Used for stored procedure creation: Prefix for INPUT parameters. Not required on most platforms.- Overrides:
getInputProcedureToken
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getOutputProcedureToken
public java.lang.String getOutputProcedureToken()
This method is used to print the output parameter token when stored procedures are called- Overrides:
getOutputProcedureToken
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureCallTail
public java.lang.String getProcedureCallTail()
Used for sp calls.- Overrides:
getProcedureCallTail
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintStoredProcedureArgumentNameInCall
public boolean shouldPrintStoredProcedureArgumentNameInCall()
INTERNAL: Should the variable name of a stored procedure call be printed as part of the procedure call e.g. EXECUTE PROCEDURE MyStoredProc(myvariable = ?)- Overrides:
shouldPrintStoredProcedureArgumentNameInCall
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
requiresProcedureCallOuputToken
public boolean requiresProcedureCallOuputToken()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Used for sp calls. Sybase must print output after output params.- Overrides:
requiresProcedureCallOuputToken
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsStoredFunctions
public boolean supportsStoredFunctions()
- Overrides:
supportsStoredFunctions
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
writeAddColumnClause
public void writeAddColumnClause(java.io.Writer writer, org.eclipse.persistence.internal.sessions.AbstractSession session, TableDefinition table, FieldDefinition field) throws java.io.IOException
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
INTERNAL: May need to override this method if the platform supports ALTER TABLE ADD <column> and the generated sql doesn't work. Write the string that follows ALTER TABLE to create a sql statement for the platform in order to append a new column to an existing table.- Overrides:
writeAddColumnClause
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
- Throws:
java.io.IOException
-
getProcedureCallHeader
public java.lang.String getProcedureCallHeader()
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
Used for sp calls.- Overrides:
getProcedureCallHeader
in classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
-