Class MaxDBPlatform

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.MaxDBPlatform
All Implemented Interfaces:
Serializable, Cloneable, org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>, org.eclipse.persistence.internal.databaseaccess.Platform

public final class MaxDBPlatform extends DatabasePlatform
Database Platform for SAP MaxDB.

Wiki page

Usage

The MaxDB platform is configured in the persistence.xml by the following property:

<property name="eclipselink.target-database" value="MaxDB"/>

Forward mapping with EclipseLink assumes that MaxDB is configured for unicode (in version 7.7, this is the default). Unicode mode also needs to be specified in the URL as follows:

jdbc:sapdb://localhost/E32?unicode=yes

Tested with:

  • DB: MaxDB, kernel 7.8.01 build 004-123-218-928
  • JDBC driver: MaxDB JDBC Driver, SAP AG, 7.6.06 Build 006-000-009-234 (Make-Version: 7.8.01 Build 003-123-215-703)
Limitations:
  • The platform class must not be used with XA transactions - see bug 329773.
  • SetQueryTimeout or the hint "jakarta.persistence.query.timeout" do not work on MaxDB - see bug 326503.
  • The hint "jakarta.persistence.lock.timeout" has no effect with a positive value; a value of 0 is translated to NOWAIT.
  • The maximum width of an index is 1024 bytes on MaxDB. This also limits the size of a primary key. Moreover the primary key of join tables must not exceed this limit either. As it is composed of the primary key of the two tables that are joined, the combined width of the PKs of these two tables must not exceed this limit. See bug bug 326968.
  • VARCHAR [UNICODE] columns do not preserve trailing spaces - see bug 327435.
  • VARCHAR BYTE columns do not preserve trailing 0 bytes.
  • The hint "jakarta.persistence.lock.timeout=0" (NOWAIT) has no effect when atempting to pessimistically lock an entity with inheritance type JOINED - see bug 326799.
  • Pessimistic locking with lock scope EXTENDED should be used cautiously in the presence of foreign key constraints - see bug 327472.

See Also:
Author:
Markus KARG (markus at headcrashing.eu), afischbach, agoerler, Sabine Heider (sabine.heider at sap.com), Konstantin Schwed (konstantin.schwed at sap.com)
  • Field Summary

    Fields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform

    DEFAULT_VARCHAR_SIZE

    Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform

    batchWritingMechanism, castSizeForVarcharParameter, classTypes, cursorCode, DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, driverName, driverSupportsNationalCharacterVarying, fieldTypes, IS_VALID_TIMEOUT, isCastRequired, maxBatchWritingSize, partitioningCallback, pingSQL, printInnerJoinInWhereClause, printOuterJoinInWhereClause, shouldBindAllParameters, shouldBindLiterals, shouldBindPartialParameters, shouldCacheAllStatements, shouldCreateIndicesOnForeignKeys, shouldForceBindAllParameters, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldOptimizeDataConversion, shouldTrimStrings, statementCacheSize, storedProcedureTerminationToken, stringBindingSize, structConverters, supportsAutoCommit, tableCreationSuffix, transactionIsolation, typeConverters, useJDBCStoredProcedureSyntax, useNationalCharacterVarying, useRownumFiltering, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesStreamsForBinding, usesStringBinding

    Fields inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform

    conversionManager, dataTypesConvertedFromAClass, dataTypesConvertedToAClass, defaultNativeSequenceToTable, defaultSeqenceAtNextValue, defaultSequence, endDelimiter, platformOperators, sequences, sequencesLock, startDelimiter, supportsReturnGeneratedKeys, tableQualifier, timestampQuery
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Hashtable
    Return the mapping of class types to database types for the schema framework.
    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.
    protected String
    INTERNAL: Override this method if the platform supports temporary tables.
    int
    INTERNAL: returns the maximum number of characters that can be used in a field name on this platform.
    This syntax does no wait on the lock.
    Most database support a syntax.
    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.
    protected void
    Initialize any platform-specific operators
    boolean
    INTERNAL: Indicates whether SELECT DISTINCT ...
    boolean
     
    protected void
    printFieldTypeSize(Writer writer, FieldDefinition field, org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition fieldType)
     
    boolean
    INTERNAL: That method affects UpdateAllQuery and DeleteAllQuery execution.
    boolean
    PUBLIC: Allows platform to choose whether to bind literals in DatabaseCalls or not.
    boolean
    Return if our driver level data conversion optimization is enabled.
    boolean
    Some database require outer joins to be given in the where clause, others require it in the from clause.
    boolean
    JDBC defines and outer join syntax, many drivers do not support this.
    boolean
    INTERNAL: Indicates whether locking clause could be selectively applied only to some tables in a ReadQuery.
    boolean
    INTERNAL: Indicates whether the platform supports local temporary tables.
    boolean
     
    boolean
    INTERNAL: Indicates whether the platform supports sequence objects.
    boolean
     

    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, buildClassTypes, buildCreateIndex, buildCreateIndex, buildDropIndex, buildDropIndex, buildProcedureCallString, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, 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, getIndexNamePrefix, getInOutputProcedureToken, getInputProcedureToken, getJDBCOuterJoinString, getJDBCType, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getMaxBatchWritingSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getNoWaitString, getObjectFromResultSet, getOutputProcedureToken, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, getProcedureArgument, getProcedureArgument, getProcedureArgumentString, getProcedureAsString, getProcedureBeginString, getProcedureCallHeader, getProcedureCallTail, getProcedureEndString, getProcedureOptionList, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequencePreallocationSize, getSequenceTableName, getStatementCacheSize, getStoredProcedureParameterPrefix, 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, printFieldIdentityClause, printFieldNotNullClause, printFieldNullClause, printFieldTypeSize, printFieldUnique, printFieldUnique, printSQLSelectStatement, printStoredFunctionReturnKeyWord, printValuelist, printValuelist, registerOutputParameter, registerOutputParameter, registerOutputParameter, registerOutputParameter, requiresNamedPrimaryKeyConstraints, requiresProcedureBrackets, requiresProcedureCallBrackets, requiresProcedureCallOuputToken, 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, shouldBindAllParameters, shouldBindPartialParameters, shouldCacheAllStatements, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnForeignKeys, shouldCreateIndicesOnUniqueKeys, shouldForceBindAllParameters, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldPrintAliasForUpdate, shouldPrintConstraintNameAfter, shouldPrintFieldIdentityClause, shouldPrintForUpdateClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintInputTokenAtStart, shouldPrintLockingClauseAfterWhereClause, shouldPrintOutputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureArgumentNameInCall, shouldPrintStoredProcedureVariablesAfterBeginString, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsAutoConversionToNumericForArithmeticOperations, supportsConnectionUserName, supportsCountDistinctWithMultipleFields, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsGlobalTempTables, supportsIndexes, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOrderByParameters, supportsOuterJoinsWithBrackets, supportsPrimaryKeyConstraint, 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, buildSelectQueryForIdentity, buildSelectQueryForSequenceObject, clone, convertObject, createConnectionCustomizer, createExpressionFor, getConversionManager, getDataTypesConvertedFrom, getDataTypesConvertedTo, getDefaultNativeSequenceToTable, getDefaultSeqenceAtNextValue, getDefaultSequence, getDefaultSequenceToWrite, getEndDelimiter, getINClauseLimit, getOperator, getPlatformOperators, getSelectSequenceQuery, getSequence, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getTimestampQuery, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, initIdentitySequences, isAccess, isAttunity, isCloudscape, isDB2, isDB2Z, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMySQL, isODBC, isOracle, isOracle12, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeIdentitySequences, removeSequence, sequencesAfterCloneCleanup, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSeqenceAtNextValue, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setSupportsReturnGeneratedKeys, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsIdentity, supportsReturnGeneratedKeys, toString, usesPlatformDefaultSequence

    Methods inherited from class java.lang.Object

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

    • MaxDBPlatform

      public MaxDBPlatform()
  • Method Details

    • 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getSelectForUpdateString

      public String getSelectForUpdateString()
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Most database support a syntax. although don't actually lock the row. Some require the OF some don't like it.
      Overrides:
      getSelectForUpdateString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getSelectForUpdateNoWaitString

      public String getSelectForUpdateNoWaitString()
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      This syntax does no wait on the lock. (i.e. In Oracle adding FOR UPDATE NOWAIT to the end will accomplish this)
      Overrides:
      getSelectForUpdateNoWaitString in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • buildFieldTypes

      protected Hashtable buildFieldTypes()
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Return the mapping of class types to database types for the schema framework.
      Overrides:
      buildFieldTypes in class org.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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • printFieldTypeSize

      protected void printFieldTypeSize(Writer writer, FieldDefinition field, org.eclipse.persistence.internal.databaseaccess.FieldTypeDefinition fieldType) throws IOException
      Overrides:
      printFieldTypeSize in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Throws:
      IOException
    • initializePlatformOperators

      protected void initializePlatformOperators()
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
      Initialize any platform-specific operators
      Overrides:
      initializePlatformOperators in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • supportsNativeSequenceNumbers

      public boolean supportsNativeSequenceNumbers()
      Overrides:
      supportsNativeSequenceNumbers in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • buildSelectQueryForSequenceObject

      public ValueReadQuery buildSelectQueryForSequenceObject(String sequenceName, 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 class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • getCreateTempTableSqlPrefix

      protected String getCreateTempTableSqlPrefix()
      Description copied from class: org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      INTERNAL: Override this method if the platform supports temporary tables. This should contain the beginning of sql string for creating temporary table - the sql statement name, for instance: "CREATE GLOBAL TEMPORARY TABLE ". Don't forget to end it with a space.
      Overrides:
      getCreateTempTableSqlPrefix in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • getMaxFieldNameSize

      public 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • supportsLocalTempTables

      public 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 class org.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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
      Parameters:
      table - is original table for which temp table is created.
      Returns:
      temporary table
    • isMaxDB

      public boolean isMaxDB()
      Specified by:
      isMaxDB in interface org.eclipse.persistence.internal.databaseaccess.Platform
      Overrides:
      isMaxDB in class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • shouldAlwaysUseTempStorageForModifyAll

      public 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • shouldBindLiterals

      public 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • shouldPrintOuterJoinInWhereClause

      public 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • shouldUseJDBCOuterJoinSyntax

      public 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 class org.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 class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
    • supportsStoredFunctions

      public boolean supportsStoredFunctions()
      Overrides:
      supportsStoredFunctions in class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
    • 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 class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform