public class SymfowarePlatform extends DatabasePlatform
Developed on Symfoware Server V10
Initial SRG Passes on Symfoware Server V10
Feature Testing
----------------------
Limitations
----------------
Additional Notes
----------------
DEFAULT_VARCHAR_SIZE
DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, IS_VALID_TIMEOUT, shouldIgnoreCaseOnFieldComparisons, Types_NCLOB, Types_SQLXML
Constructor and Description |
---|
SymfowarePlatform() |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
buildCreateIndex(java.lang.String fullTableName,
java.lang.String indexName,
java.lang.String qualifier,
boolean isUnique,
java.lang.String... columnNames)
Return the CREATE INDEX string for this platform.
|
java.lang.String |
buildDropIndex(java.lang.String fullTableName,
java.lang.String indexName,
java.lang.String qualifier)
Return the DROP INDEX string for this platform.
|
ValueReadQuery |
buildSelectQueryForSequenceObject(java.lang.String seqName,
java.lang.Integer size)
Produce a DataReadQuery which updates(!) the sequence number in the DB
and returns it.
|
int |
computeMaxRowsForSQL(int firstResultIndex,
int maxResults)
Use the JDBC maxResults and firstResultIndex setting to compute a value
to use when limiting the results of a query in SQL.
|
java.lang.String |
getCreateTempTableSqlPrefix()
Returns the beginning of the SQL string to create a temporary table.
|
java.lang.String |
getDefaultSequenceTableName()
Returns the table name used by TableSequence by default.
|
java.lang.String |
getIndexNamePrefix(boolean isUniqueSetOnField)
Used to allow platforms to define their own index prefixes
|
java.lang.String |
getInOutputProcedureToken()
This method is used to print the output parameter token when stored
procedures are called.
|
java.lang.String |
getInputProcedureToken()
Used for stored procedure creation: Prefix for INPUT parameters.
|
int |
getMaxFieldNameSize()
Returns the maximum number of single byte characters that can be used in
a field name on this platform, assuming DEFAULT_DSI_NAME=CODE is
specified in Symfoware's operating environment file for the system (see
Symfoware manual).
|
java.lang.String |
getProcedureAsString()
Symfoware does not use the AS token.
|
java.lang.String |
getProcedureBeginString()
Used for stored procedure definitions.
|
java.lang.String |
getProcedureCallHeader()
Used for stored procedure calls.
|
java.lang.String |
getProcedureCallTail()
Used for stored procedure calls.
|
java.lang.String |
getProcedureEndString()
Used for stored procedure definitions.
|
java.lang.String |
getSelectForUpdateString()
Symfoware supports "for update" for row locking.
|
ValueReadQuery |
getTimestampQuery()
This method returns the query to select the timestamp
from the database.
|
boolean |
isDynamicSQLRequiredForFunctions()
Symfoware does not support the use of multiple parameters in certain functions.
This allows statements to disable binding only in these cases. |
boolean |
isForUpdateCompatibleWithDistinct()
Indicates whether SELECT DISTINCT ...
|
boolean |
isSymfoware()
Identifies this database platform as Symfoware's.
|
long |
minimumTimeIncrement()
INTERNAL:
Returns the minimum time increment supported by the platform.
|
void |
printSQLSelectStatement(DatabaseCall call,
ExpressionSQLPrinter printer,
SQLSelectStatement statement)
Print the pagination SQL using Symfoware syntax " WITH OPTION LIMIT (
<max>)".
|
boolean |
requiresProcedureBrackets()
Used for stored procedure creation: Symfoware needs brackets around
arguments declaration even if no arguments exist, and so returns true.
|
boolean |
requiresUniqueConstraintCreationOnTableCreate()
Used for table creation.
|
void |
retrieveFirstPrimaryKeyOrOne(ReportQuery subselect)
INTERNAL:
Used by Exists queries because they just need to select a single row.
|
boolean |
shouldAlwaysUseTempStorageForModifyAll()
Symfoware does not support the default syntax generated for update-all
and delete-all queries as they can include the same table in the FROM
clause of the main and the sub-queries.
|
boolean |
shouldBindLiterals()
Allows platform to choose whether to bind literals in SQL statements or
not.
Literal binding is enabled for Symfoware in general. |
boolean |
shouldCreateIndicesForPrimaryKeys()
Used for table creation.
|
boolean |
shouldCreateIndicesOnUniqueKeys()
Used for table creation.
|
boolean |
shouldPrintInputTokenAtStart()
Used for stored procedure creation: Some platforms want to print prefix
for INPUT arguments BEFORE NAME.
|
boolean |
shouldPrintOutputTokenAtStart()
This is required in the construction of the stored procedures with output
parameters
|
boolean |
shouldPrintOutputTokenBeforeType()
This is required in the construction of the stored procedures with output
parameters
|
boolean |
shouldPrintStoredProcedureArgumentNameInCall()
Symfoware stored procedure calls do not require the argument name be
printed in the call string.
E.g. |
boolean |
shouldPrintStoredProcedureVariablesAfterBeginString()
Used for stored procedure creation: Symfoware declares variables AFTER
the procedure body's BEGIN string.
|
boolean |
supportsANSIInnerJoinSyntax()
Indicates whether the ANSI syntax for inner joins (e.g.
|
boolean |
supportsForeignKeyConstraints()
Symfoware does not support foreign key constraint syntax, so returns
false.
|
boolean |
supportsGlobalTempTables()
Indicates whether the platform supports global temporary tables.
|
boolean |
supportsIndividualTableLocking()
Indicates whether locking clause could be selectively applied only to
some tables in a ReadQuery.
Symfoware platform currently only supports FOR UPDATE locking, which cannot be applied to queries that select from multiple tables. |
boolean |
supportsLockingQueriesWithMultipleTables()
Indicates whether locking clause could be applied to the query that has
more than one table.
Symfoware platform currently only supports FOR UPDATE locking, which cannot be applied to queries that select from multiple tables. |
boolean |
supportsSequenceObjects()
Indicates whether the platform supports sequence objects.
Symfoware does through global sequence objects. |
boolean |
supportsStoredFunctions()
Indicates whether the platform supports stored functions.
Although Symfoware supports some stored functions as function routines, their functionality is incompatible with the one EclipseLink provides. |
boolean |
supportsUniqueKeyConstraints()
Symfoware supports unique key constraints, so returns true.
Do note that unique constraints cannot be added/removed using "ALTER TABLE ADD/DROP CONSTRAINT" syntax. |
boolean |
wasFailureCommunicationBased(java.sql.SQLException exception,
java.sql.Connection connection,
AbstractSession sessionForProfile)
Fail-over is not implemented on platform.
|
addBatch, addStructConverter, allowsSizeInProcedureArguments, appendLiteralToCall, appendParameter, appendParameterInternal, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildCallWithReturning, buildCreateIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, canBatchWriteWithOptimisticLocking, canBuildCallWithReturning, commitTransaction, convertToDatabaseType, copyInto, createArray, createArray, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchBeginString, getBatchDelimiterString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, getDriverSupportsNVarChar, getDropCascadeString, getDropDatabaseSchemaString, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getObjectFromResultSet, getOutputProcedureToken, getPartitioningCallback, getPingSQL, getProcedureArgumentSetter, getProcedureArgumentString, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureParameterPrefix, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTempTableForTable, getTransactionIsolation, getTypeConverters, getUniqueConstraintDeletionString, getUseNationalCharacterVaryingTypeForString, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, hasPartitioningCallback, initialize, initializeConnectionData, isAlterSequenceObjectSupported, isCastRequired, isInformixOuterJoin, isJDBCExecuteCompliant, isLobCompatibleWithDistinct, isLockTimeoutException, isNullAllowedInSelectClause, isOutputAllowWithResultSet, isRowCountOutputParameterRequired, isXDBDocument, maximumNumericValues, minimumNumericValues, prepareBatchStatement, printFieldIdentityClause, printFieldNotNullClause, printFieldNullClause, printFieldTypeSize, printFieldUnique, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureCallBrackets, requiresProcedureCallOuputToken, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, 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, shouldCreateIndicesOnForeignKeys, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseJDBCOuterJoinSyntax, shouldUseRownumFiltering, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsIndexes, supportsLocalTempTables, supportsNestingOuterJoins, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, supportsTempTables, supportsUniqueColumns, supportsVPD, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, writeAddColumnClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDeleteFromTargetTableUsingTempTableSql, writeInsertIntoTableSql, writeLOB, writeParameterMarker, writeTableCreationSuffix, writeUpdateOriginalFromTempTableSql
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, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, isAccess, isAttunity, isCloudscape, isDB2, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMaxDB, isMySQL, isODBC, isOracle, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsIdentity, supportsNativeSequenceNumbers, toString, usesPlatformDefaultSequence
public boolean isDynamicSQLRequiredForFunctions()
isDynamicSQLRequiredForFunctions
in class DatabasePlatform
public boolean isForUpdateCompatibleWithDistinct()
isForUpdateCompatibleWithDistinct
in class DatabasePlatform
public boolean isSymfoware()
isSymfoware
in interface Platform
isSymfoware
in class DatasourcePlatform
public int computeMaxRowsForSQL(int firstResultIndex, int maxResults)
1. MaxRows is the index of the last row to be returned (like JDBC maxResults) 2. MaxRows is the number of rows to be returnedSymfoware uses case #2 and therefore the maxResults has to be altered based on the firstResultIndex.
computeMaxRowsForSQL
in class DatabasePlatform
MySQLPlatform
public ValueReadQuery buildSelectQueryForSequenceObject(java.lang.String seqName, java.lang.Integer size)
buildSelectQueryForSequenceObject
in class DatasourcePlatform
seqName
- known by Symfoware to be a defined sequencesize
- size of sequencepublic java.lang.String buildCreateIndex(java.lang.String fullTableName, java.lang.String indexName, java.lang.String qualifier, boolean isUnique, java.lang.String... columnNames)
buildCreateIndex
in class DatabasePlatform
fullTableName
- qualified name of the table the index is to be created onindexName
- name of the indexqualifier
- qualifier to construct qualified name of index if neededisUnique
- Indicates whether uniqe index is createdcolumnNames
- one or more columns the index is created forpublic java.lang.String buildDropIndex(java.lang.String fullTableName, java.lang.String indexName, java.lang.String qualifier)
buildDropIndex
in class DatabasePlatform
fullTableName
- qualified name of the table the index is to be created onindexName
- name of the indexqualifier
- qualifier to construct qualified name of index if neededpublic java.lang.String getCreateTempTableSqlPrefix()
shouldAlwaysUseTempStorageForModifyAll()
public java.lang.String getDefaultSequenceTableName()
getDefaultSequenceTableName
in class DatabasePlatform
public java.lang.String getIndexNamePrefix(boolean isUniqueSetOnField)
getIndexNamePrefix
in class DatabasePlatform
isUniqueSetOnField
- public java.lang.String getInOutputProcedureToken()
getInOutputProcedureToken
in class DatabasePlatform
public java.lang.String getInputProcedureToken()
getInputProcedureToken
in class DatabasePlatform
public int getMaxFieldNameSize()
getMaxFieldNameSize
in class DatabasePlatform
public java.lang.String getProcedureAsString()
getProcedureAsString
in class DatabasePlatform
public java.lang.String getProcedureCallHeader()
getProcedureCallHeader
in class DatabasePlatform
public java.lang.String getProcedureCallTail()
getProcedureCallTail
in class DatabasePlatform
public java.lang.String getProcedureBeginString()
getProcedureBeginString
in class DatabasePlatform
public java.lang.String getProcedureEndString()
getProcedureEndString
in class DatabasePlatform
public java.lang.String getSelectForUpdateString()
getSelectForUpdateString
in class DatabasePlatform
public ValueReadQuery getTimestampQuery()
getTimestampQuery
in interface Platform
getTimestampQuery
in class DatasourcePlatform
public long minimumTimeIncrement()
minimumTimeIncrement
in class DatabasePlatform
public void printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement)
printSQLSelectStatement
in class DatabasePlatform
public boolean requiresProcedureBrackets()
requiresProcedureBrackets
in class DatabasePlatform
public boolean requiresUniqueConstraintCreationOnTableCreate()
requiresUniqueConstraintCreationOnTableCreate
in class DatabasePlatform
public void retrieveFirstPrimaryKeyOrOne(ReportQuery subselect)
retrieveFirstPrimaryKeyOrOne
in class DatabasePlatform
subselect
- SymfowarePlatform
public boolean shouldAlwaysUseTempStorageForModifyAll()
shouldAlwaysUseTempStorageForModifyAll
in class DatabasePlatform
public boolean shouldBindLiterals()
shouldBindLiterals
in class DatabasePlatform
isDynamicSQLRequiredForFunctions()
public boolean shouldCreateIndicesForPrimaryKeys()
shouldCreateIndicesForPrimaryKeys
in class DatabasePlatform
public boolean shouldCreateIndicesOnUniqueKeys()
shouldCreateIndicesOnUniqueKeys
in class DatabasePlatform
public boolean shouldPrintInputTokenAtStart()
shouldPrintInputTokenAtStart
in class DatabasePlatform
public boolean shouldPrintOutputTokenBeforeType()
shouldPrintOutputTokenBeforeType
in class DatabasePlatform
public boolean shouldPrintOutputTokenAtStart()
shouldPrintOutputTokenAtStart
in class DatabasePlatform
public boolean shouldPrintStoredProcedureArgumentNameInCall()
shouldPrintStoredProcedureArgumentNameInCall
in class DatabasePlatform
public boolean shouldPrintStoredProcedureVariablesAfterBeginString()
shouldPrintStoredProcedureVariablesAfterBeginString
in class DatabasePlatform
public boolean supportsANSIInnerJoinSyntax()
supportsANSIInnerJoinSyntax
in class DatabasePlatform
public boolean supportsForeignKeyConstraints()
supportsForeignKeyConstraints
in class DatabasePlatform
public boolean supportsGlobalTempTables()
supportsGlobalTempTables
in class DatabasePlatform
shouldAlwaysUseTempStorageForModifyAll()
public boolean supportsIndividualTableLocking()
supportsIndividualTableLocking
in class DatabasePlatform
public boolean supportsLockingQueriesWithMultipleTables()
supportsLockingQueriesWithMultipleTables
in class DatabasePlatform
public boolean supportsSequenceObjects()
supportsSequenceObjects
in class DatasourcePlatform
public boolean supportsStoredFunctions()
supportsStoredFunctions
in class DatabasePlatform
public boolean supportsUniqueKeyConstraints()
supportsUniqueKeyConstraints
in class DatabasePlatform
requiresUniqueConstraintCreationOnTableCreate()
public boolean wasFailureCommunicationBased(java.sql.SQLException exception, java.sql.Connection connection, AbstractSession sessionForProfile)
wasFailureCommunicationBased
in class DatabasePlatform
EclipseLink 2.6.3, "build v20160428-59c81c5" API Reference