Class PervasivePlatform

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>, org.eclipse.persistence.internal.databaseaccess.Platform

    public class PervasivePlatform
    extends DatabasePlatform

    Purpose: Provides Pervasive SQL DBMS specific behavior.

    Pervasive SQL Platform file
    Contributed by: Pervasive Software, Inc.
    Contributed under bug: 392109

    Developed on Pervasive PSQL Server 11.30

    • Eclipselink Core SRG Test passes with known limitations.
    • Eclipselink JPA SRG Test passes with known limitations.
    • Eclipselink stored procedure tests "CustomSQLTestModel", "StoredProcedureGeneratorModel" pass with known limitations.

    Limitations

    • Updates are not supported on joined queries or queries with group by.
    • The platform method getSelectForUpdateString() currently returns an empty string. This is to avoid avoid joined queries with FOR UPDATE in them, which Pervasive does not support.
    • Columns used in indexes must total no more than 255 bytes in length.
    • Pervasive SQL does not support dynamic parameters in the SELECT list.
    • IDENTITY columns are either 2- or 4-byte integers. Foreign keys referencing such columns must use the same datatypes.
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int DEFAULT_CHAR_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, Types_NCLOB, Types_SQLXML, 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.util.Map<java.lang.String,​java.lang.Class> buildClassTypes()  
      protected java.util.Hashtable buildFieldTypes()  
      ValueReadQuery buildSelectQueryForIdentity()
      INTERNAL: Build the identity query for native sequencing.
      protected ExpressionOperator dateToStringOperator()
      Cloned from MySQLPlatform.java
      protected java.lang.String getCreateTempTableSqlPrefix()
      INTERNAL:
      java.lang.String getInOutputProcedureToken()
      Pervasive uses the INOUT keyword, as opposed to "IN OUT".
      java.lang.String getInputProcedureToken()
      Pervasive uses IN prefix for INPUT parameters.
      java.lang.String getProcedureArgumentString()
      Pervasive uses ":" as prefix for procedure arguments.
      java.lang.String getProcedureBeginString()
      Pervasive requires BEGIN in a procedure statement.
      java.lang.String getProcedureCallHeader()
      Pervasive uses CALL or EXECUTE not CALL PROCEDURE or EXECUTE PROCEDURE
      java.lang.String getProcedureEndString()
      Pervasive requires END in a procedure statement.
      java.lang.String getSelectForUpdateString()
      Temporary workaround to avoid joined queries with FOR UPDATE in them
      java.lang.String getStoredProcedureParameterPrefix()
      Pervasive uses ":" as prefix for procedure parameters.
      org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable​(org.eclipse.persistence.internal.helper.DatabaseTable table)
      INTERNAL:
      protected void initializePlatformOperators()  
      boolean isForUpdateCompatibleWithDistinct()
      INTERNAL: Indicates whether SELECT DISTINCT ...
      boolean isPervasive()
      Answers whether platform is Pervasive
      void printFieldIdentityClause​(java.io.Writer writer)
      Append the receiver's field 'identity' constraint clause to a writer.
      void printFieldTypeSize​(java.io.Writer writer, FieldDefinition field, org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition fieldType, boolean shouldPrintFieldIdentityClause)
      Taken from org.eclipse.persistence\foundation\org.eclipse.persistence.core\src\org\eclipse\persistence\platform\database\AccessPlatform.java
      boolean requiresProcedureBrackets()
      In CREATE PROCEDURE, Pervasive requires brackets after the procedure name, even if there are no arguments.
      boolean requiresProcedureCallOuputToken()
      Pervasive requires the OUTPUT keyword for output parameters
      boolean shouldPrintLockingClauseAfterWhereClause()
      Attempts to remove FOR UPDATE from queries
      boolean shouldPrintStoredProcedureArgumentNameInCall()
      INTERNAL: Pervasive SQL stored procedure calls do not require the argument name be printed in the call string e.g. call MyStoredProc(?)
      boolean shouldUseJDBCOuterJoinSyntax()
      JDBC defines an outer join syntax which many drivers do not support.
      ExpressionOperator singleArgumentSubstringOperator()
      Override the default SubstringSingleArg operator.
      boolean supportsDeleteOnCascade()
      Setting this to false (cf.
      boolean supportsGlobalTempTables()  
      boolean supportsIdentity()
      Indicates whether the platform supports identity.
      boolean supportsLocalTempTables()
      INTERNAL:
      boolean supportsLockingQueriesWithMultipleTables()
      INTERNAL: Indicates whether locking clause could be applied to the query that has more than one table
      protected ExpressionOperator toCharOperator()
      Cloned from MySQLPlatform.java
      protected ExpressionOperator toDateOperator()
      Cloned from MySQLPlatform.java
      protected ExpressionOperator toNumberOperator()  
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

        addBatch, addStructConverter, allowBindingForSelectClause, allowsSizeInProcedureArguments, appendBoolean, appendByteArray, appendCalendar, appendDate, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, appendTime, appendTimestamp, 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, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchBeginString, getBatchDelimiterString, getBatchEndString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getClassTypes, getConnection, getConnectionUserName, getConstraintDeletionString, getCreateDatabaseSchemaString, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlSuffix, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getCursorCode, getCustomModifyValueForCall, getDefaultSequenceTableName, getDriverSupportsNVarChar, getDropCascadeString, getDropDatabaseSchemaString, getFieldTypeDefinition, getFieldTypes, getFunctionCallHeader, getIdentifierQuoteCharacter, getIndexNamePrefix, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxFieldNameSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getObjectFromResultSet, getOutputProcedureToken, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, getProcedureArgument, getProcedureArgument, getProcedureAsString, getProcedureCallTail, getProcedureOptionList, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTableExistsQuery, 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, printFieldNotNullClause, printFieldNullClause, printFieldTypeSize, printFieldUnique, printFieldUnique, printSQLSelectStatement, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, registerOutputParameter, registerOutputParameter, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureCallBrackets, requiresTableInIndexDropDDL, requiresTypeNameToRegisterOutputParameter, requiresUniqueConstraintCreationOnTableCreate, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setBatchWritingMechanism, setCastSizeForVarcharParameter, setClassTypes, setCursorCode, setDriverName, setDriverSupportsNVarChar, setFieldTypes, setIsCastRequired, setMaxBatchWritingSize, setNullFromDatabaseField, setNullFromDatabaseField, setParameterValueInDatabaseCall, setParameterValueInDatabaseCall, 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, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintOuterJoinInWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsForeignKeyConstraints, supportsIndexes, supportsIndividualTableLocking, 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, writeUpdateOriginalFromTempTableSql
      • Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

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

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

      • PervasivePlatform

        public PervasivePlatform()
    • Method Detail

      • buildClassTypes

        protected java.util.Map<java.lang.String,​java.lang.Class> buildClassTypes()
        Overrides:
        buildClassTypes in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • buildFieldTypes

        protected java.util.Hashtable buildFieldTypes()
        Overrides:
        buildFieldTypes in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getInOutputProcedureToken

        public java.lang.String getInOutputProcedureToken()
        Pervasive uses the INOUT keyword, as opposed to "IN OUT".
        Overrides:
        getInOutputProcedureToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getInputProcedureToken

        public java.lang.String getInputProcedureToken()
        Pervasive uses IN prefix for INPUT parameters.
        Overrides:
        getInputProcedureToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getProcedureArgumentString

        public java.lang.String getProcedureArgumentString()
        Pervasive uses ":" as prefix for procedure arguments.
        Overrides:
        getProcedureArgumentString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getProcedureBeginString

        public java.lang.String getProcedureBeginString()
        Pervasive requires BEGIN in a procedure statement.
        Overrides:
        getProcedureBeginString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • requiresProcedureBrackets

        public boolean requiresProcedureBrackets()
        In CREATE PROCEDURE, Pervasive requires brackets after the procedure name, even if there are no arguments.
        Overrides:
        requiresProcedureBrackets in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getProcedureCallHeader

        public java.lang.String getProcedureCallHeader()
        Pervasive uses CALL or EXECUTE not CALL PROCEDURE or EXECUTE PROCEDURE
        Overrides:
        getProcedureCallHeader in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getProcedureEndString

        public java.lang.String getProcedureEndString()
        Pervasive requires END in a procedure statement.
        Overrides:
        getProcedureEndString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getStoredProcedureParameterPrefix

        public java.lang.String getStoredProcedureParameterPrefix()
        Pervasive uses ":" as prefix for procedure parameters.
        Overrides:
        getStoredProcedureParameterPrefix in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • requiresProcedureCallOuputToken

        public boolean requiresProcedureCallOuputToken()
        Pervasive requires the OUTPUT keyword for output parameters
        Overrides:
        requiresProcedureCallOuputToken in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • initializePlatformOperators

        protected void initializePlatformOperators()
        Overrides:
        initializePlatformOperators in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • shouldPrintStoredProcedureArgumentNameInCall

        public boolean shouldPrintStoredProcedureArgumentNameInCall()
        INTERNAL: Pervasive SQL stored procedure calls do not require the argument name be printed in the call string e.g. call MyStoredProc(?) instead of call MyStoredProc(myvariable = ?)
        Overrides:
        shouldPrintStoredProcedureArgumentNameInCall in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • toDateOperator

        protected ExpressionOperator toDateOperator()
        Cloned from MySQLPlatform.java
      • toCharOperator

        protected ExpressionOperator toCharOperator()
        Cloned from MySQLPlatform.java
      • dateToStringOperator

        protected ExpressionOperator dateToStringOperator()
        Cloned from MySQLPlatform.java
      • isPervasive

        public boolean isPervasive()
        Answers whether platform is Pervasive
        Overrides:
        isPervasive in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • shouldUseJDBCOuterJoinSyntax

        public boolean shouldUseJDBCOuterJoinSyntax()
        JDBC defines an outer join syntax which many drivers do not support. So we normally avoid it.
        Overrides:
        shouldUseJDBCOuterJoinSyntax in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • printFieldIdentityClause

        public void printFieldIdentityClause​(java.io.Writer writer)
                                      throws ValidationException
        Append the receiver's field 'identity' constraint clause to a writer. Taken from org.eclipse.persistence\foundation\org.eclipse.persistence.core\src\org\eclipse\persistence\platform\database\AccessPlatform.java
        Overrides:
        printFieldIdentityClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        ValidationException
      • singleArgumentSubstringOperator

        public ExpressionOperator singleArgumentSubstringOperator()
        Override the default SubstringSingleArg operator. Cloned from SybasePlatform.java
      • supportsIdentity

        public boolean supportsIdentity()
        Indicates whether the platform supports identity.
        Overrides:
        supportsIdentity in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • supportsLocalTempTables

        public boolean supportsLocalTempTables()
        INTERNAL:
        Overrides:
        supportsLocalTempTables in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • supportsGlobalTempTables

        public boolean supportsGlobalTempTables()
        Overrides:
        supportsGlobalTempTables in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getCreateTempTableSqlPrefix

        protected java.lang.String getCreateTempTableSqlPrefix()
        INTERNAL:
        Overrides:
        getCreateTempTableSqlPrefix in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • getTempTableForTable

        public org.eclipse.persistence.internal.helper.DatabaseTable getTempTableForTable​(org.eclipse.persistence.internal.helper.DatabaseTable table)
        INTERNAL:
        Overrides:
        getTempTableForTable in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • printFieldTypeSize

        public void printFieldTypeSize​(java.io.Writer writer,
                                       FieldDefinition field,
                                       org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition fieldType,
                                       boolean shouldPrintFieldIdentityClause)
                                throws java.io.IOException
        Taken from org.eclipse.persistence\foundation\org.eclipse.persistence.core\src\org\eclipse\persistence\platform\database\AccessPlatform.java
        Overrides:
        printFieldTypeSize in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
        Throws:
        java.io.IOException
      • buildSelectQueryForIdentity

        public ValueReadQuery buildSelectQueryForIdentity()
        INTERNAL: Build the identity query for native sequencing. Taken verbatim from org.eclipse.persistence\foundation\org.eclipse.persistence.core\src\org\eclipse\persistence\platform\database\SQLServerPlatform.java
        Overrides:
        buildSelectQueryForIdentity in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      • getSelectForUpdateString

        public java.lang.String getSelectForUpdateString()
        Temporary workaround to avoid joined queries with FOR UPDATE in them
        Overrides:
        getSelectForUpdateString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • isForUpdateCompatibleWithDistinct

        public boolean isForUpdateCompatibleWithDistinct()
        INTERNAL: Indicates whether SELECT DISTINCT ... FOR UPDATE is allowed by the platform (Oracle doesn't allow this).
        Overrides:
        isForUpdateCompatibleWithDistinct in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • supportsDeleteOnCascade

        public boolean supportsDeleteOnCascade()
        Setting this to false (cf. Sybase) to work around problem that unspecified default delete rule is RESTRICT, even when not allowed due to self-referencing table.
        Overrides:
        supportsDeleteOnCascade in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • shouldPrintLockingClauseAfterWhereClause

        public boolean shouldPrintLockingClauseAfterWhereClause()
        Attempts to remove FOR UPDATE from queries
        Overrides:
        shouldPrintLockingClauseAfterWhereClause in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      • supportsLockingQueriesWithMultipleTables

        public boolean supportsLockingQueriesWithMultipleTables()
        INTERNAL: Indicates whether locking clause could be applied to the query that has more than one table
        Overrides:
        supportsLockingQueriesWithMultipleTables in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform