public class SymfowarePlatform extends DatabasePlatform
Developed on Symfoware Server V10
Initial SRG Passes on Symfoware Server V10
Feature Testing
----------------------
Limitations
----------------
Additional Notes
----------------
DEFAULT_VARCHAR_SIZEDEFAULT_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, writeUpdateOriginalFromTempTableSqladdSequence, 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, usesPlatformDefaultSequencepublic boolean isDynamicSQLRequiredForFunctions()
isDynamicSQLRequiredForFunctions in class DatabasePlatformpublic boolean isForUpdateCompatibleWithDistinct()
isForUpdateCompatibleWithDistinct in class DatabasePlatformpublic boolean isSymfoware()
isSymfoware in interface PlatformisSymfoware in class DatasourcePlatformpublic 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 DatabasePlatformMySQLPlatformpublic ValueReadQuery buildSelectQueryForSequenceObject(java.lang.String seqName, java.lang.Integer size)
buildSelectQueryForSequenceObject in class DatasourcePlatformseqName - 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 DatabasePlatformfullTableName - 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 DatabasePlatformfullTableName - 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 DatabasePlatformpublic java.lang.String getIndexNamePrefix(boolean isUniqueSetOnField)
getIndexNamePrefix in class DatabasePlatformisUniqueSetOnField - public java.lang.String getInOutputProcedureToken()
getInOutputProcedureToken in class DatabasePlatformpublic java.lang.String getInputProcedureToken()
getInputProcedureToken in class DatabasePlatformpublic int getMaxFieldNameSize()
getMaxFieldNameSize in class DatabasePlatformpublic java.lang.String getProcedureAsString()
getProcedureAsString in class DatabasePlatformpublic java.lang.String getProcedureCallHeader()
getProcedureCallHeader in class DatabasePlatformpublic java.lang.String getProcedureCallTail()
getProcedureCallTail in class DatabasePlatformpublic java.lang.String getProcedureBeginString()
getProcedureBeginString in class DatabasePlatformpublic java.lang.String getProcedureEndString()
getProcedureEndString in class DatabasePlatformpublic java.lang.String getSelectForUpdateString()
getSelectForUpdateString in class DatabasePlatformpublic ValueReadQuery getTimestampQuery()
getTimestampQuery in interface PlatformgetTimestampQuery in class DatasourcePlatformpublic long minimumTimeIncrement()
minimumTimeIncrement in class DatabasePlatformpublic void printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement)
printSQLSelectStatement in class DatabasePlatformpublic boolean requiresProcedureBrackets()
requiresProcedureBrackets in class DatabasePlatformpublic boolean requiresUniqueConstraintCreationOnTableCreate()
requiresUniqueConstraintCreationOnTableCreate in class DatabasePlatformpublic void retrieveFirstPrimaryKeyOrOne(ReportQuery subselect)
retrieveFirstPrimaryKeyOrOne in class DatabasePlatformsubselect - SymfowarePlatformpublic boolean shouldAlwaysUseTempStorageForModifyAll()
shouldAlwaysUseTempStorageForModifyAll in class DatabasePlatformpublic boolean shouldBindLiterals()
shouldBindLiterals in class DatabasePlatformisDynamicSQLRequiredForFunctions()public boolean shouldCreateIndicesForPrimaryKeys()
shouldCreateIndicesForPrimaryKeys in class DatabasePlatformpublic boolean shouldCreateIndicesOnUniqueKeys()
shouldCreateIndicesOnUniqueKeys in class DatabasePlatformpublic boolean shouldPrintInputTokenAtStart()
shouldPrintInputTokenAtStart in class DatabasePlatformpublic boolean shouldPrintOutputTokenBeforeType()
shouldPrintOutputTokenBeforeType in class DatabasePlatformpublic boolean shouldPrintOutputTokenAtStart()
shouldPrintOutputTokenAtStart in class DatabasePlatformpublic boolean shouldPrintStoredProcedureArgumentNameInCall()
shouldPrintStoredProcedureArgumentNameInCall in class DatabasePlatformpublic boolean shouldPrintStoredProcedureVariablesAfterBeginString()
shouldPrintStoredProcedureVariablesAfterBeginString in class DatabasePlatformpublic boolean supportsANSIInnerJoinSyntax()
supportsANSIInnerJoinSyntax in class DatabasePlatformpublic boolean supportsForeignKeyConstraints()
supportsForeignKeyConstraints in class DatabasePlatformpublic boolean supportsGlobalTempTables()
supportsGlobalTempTables in class DatabasePlatformshouldAlwaysUseTempStorageForModifyAll()public boolean supportsIndividualTableLocking()
supportsIndividualTableLocking in class DatabasePlatformpublic boolean supportsLockingQueriesWithMultipleTables()
supportsLockingQueriesWithMultipleTables in class DatabasePlatformpublic boolean supportsSequenceObjects()
supportsSequenceObjects in class DatasourcePlatformpublic boolean supportsStoredFunctions()
supportsStoredFunctions in class DatabasePlatformpublic boolean supportsUniqueKeyConstraints()
supportsUniqueKeyConstraints in class DatabasePlatformrequiresUniqueConstraintCreationOnTableCreate()public boolean wasFailureCommunicationBased(java.sql.SQLException exception,
java.sql.Connection connection,
AbstractSession sessionForProfile)
wasFailureCommunicationBased in class DatabasePlatformEclipseLink 2.6.3, "build v20160428-59c81c5" API Reference