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.MySQLPlatform
- All Implemented Interfaces:
Serializable,Cloneable,org.eclipse.persistence.internal.core.databaseaccess.CorePlatform<org.eclipse.persistence.internal.helper.ConversionManager>,org.eclipse.persistence.internal.databaseaccess.Platform,DDLPlatform
- Direct Known Subclasses:
MariaDBPlatform
Purpose: Provides MySQL specific behavior.
Responsibilities:
- Native SQL for Date, Time, & Timestamp.
- Native sequencing.
- Mapping of class types to database types for the schema framework.
- Pessimistic locking.
- Platform specific operators.
- See Also:
-
Field Summary
Fields inherited from class org.eclipse.persistence.platform.database.DatabasePlatform
DEFAULT_VARCHAR_SIZEFields inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
batchWritingMechanism, castSizeForVarcharParameter, cursorCode, DEFAULT_MAX_BATCH_WRITING_SIZE, DEFAULT_PARAMETERIZED_MAX_BATCH_WRITING_SIZE, driverName, driverSupportsNationalCharacterVarying, IS_VALID_TIMEOUT, isCastRequired, maxBatchWritingSize, partitioningCallback, pingSQL, printInnerJoinInWhereClause, printOuterJoinInWhereClause, shouldBindAllParameters, shouldBindLiterals, shouldBindPartialParameters, shouldCacheAllStatements, shouldForceBindAllParameters, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldOptimizeDataConversion, shouldTrimStrings, statementCacheSize, stringBindingSize, structConverters, supportsAutoCommit, transactionIsolation, typeConverters, useJDBCStoredProcedureSyntax, useNationalCharacterVarying, useRownumFiltering, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesStreamsForBinding, usesStringBindingFields inherited from class org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
conversionManager, dataTypesConvertedFromAClass, dataTypesConvertedToAClass, defaultNativeSequenceToTable, defaultSeqenceAtNextValue, defaultSequence, endDelimiter, platformOperators, sequences, sequencesLock, startDelimiter, supportsReturnGeneratedKeys, tableQualifier, timestampQuery, uuidQueryFields inherited from interface org.eclipse.persistence.tools.schemaframework.DDLPlatform
CLASS_TYPES, DB_TYPES, TYPE_BIG_DECIMAL, TYPE_BIG_INTEGER, TYPE_BINARY, TYPE_BLOB, TYPE_BOOLEAN, TYPE_BYTE, TYPE_CHAR, TYPE_CLOB, TYPE_DATE, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_NUMBER, TYPE_NUMERIC, TYPE_SHORT, TYPE_TIME, TYPE_TIMESTAMP, TYPE_VARCHAR -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidappendCalendar(Calendar calendar, Writer writer) Appends an MySQL specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format.protected voidappendDate(Date date, Writer writer) Appends an MySQL specific date if usesNativeSQL is true otherwise use the ODBC format.protected voidappendTime(Time time, Writer writer) Appends an MySQL specific time if usesNativeSQL is true otherwise use the ODBC format.protected voidappendTimestamp(Timestamp timestamp, Writer writer) Appends an MySQL specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format.protected Map<Class<?>, FieldDefinition.DatabaseType> Return the mapping of class types to database types for the schema framework.buildProcedureCallString(StoredProcedureCall call, org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord row) Return the stored procedure syntax for this platform.INTERNAL: Build the identity query for native sequencing.booleancanBatchWriteWithOptimisticLocking(org.eclipse.persistence.internal.databaseaccess.DatabaseCall call) INTERNAL: Supports Batch Writing with Optimistic Locking.booleancheckTableExists(org.eclipse.persistence.internal.sessions.AbstractSession session, TableDefinition table, boolean suppressLogging) INTERNAL: Executes and evaluates query to check whether given table exists.intcomputeMaxRowsForSQL(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.protected ExpressionOperatorINTERNAL: Create the current date operator for this platform.static ExpressionOperatorINTERNAL: MySQL specificcurrentTimeoperator.static ExpressionOperatorINTERNAL: MySQL specificcurrentTimeStampoperator.protected ExpressionOperatorINTERNAL: Build MySQL equivalent to TO_CHAR.Used for constraint deletion.protected StringINTERNAL: MySQL temp table syntax, used for update-all, delete-all queries.getDropDatabaseSchemaString(String schema) Return the drop schema SQL syntax.Used for stored function calls.This method is used to print the output parameter token when stored procedures are calledintgetJDBCType(Class<?> javaType) Return the JDBC type for the Java type.Used for stored procedure defs.Used for stored procedure defs.INTERNAL: Used for stored procedure calls.Used for sp calls.Used for stored procedure defs.INTERNAL: Used for pessimistic locking.protected DataReadQueryINTERNAL: Returns query to check whether given table exists.INTERNAL: This method returns the query to select the timestamp from the server for MySQL.Used for constraint deletion.INTERNAL: This method returns the query to select the UUID from the server for MySQL.voidinitializeConnectionData(Connection connection) INTERNAL: Allow initialization from the connection.protected voidInitialize any platform-specific operators.booleanINTERNAL: Indicates whether SELECT DISTINCT ...booleanisMySQL()Answers whether platform is MySQL.protected ExpressionOperatorINTERNAL: Build MySQL equivalent to LTRIM(string_exp, character).static ExpressionOperatorINTERNAL: MySQL specificlocalDateTimeoperator.static ExpressionOperatorINTERNAL: MySQL specificlocalTimeoperator.protected ExpressionOperatorINTERNAL: Create the 10 based log operator for this platform.voidprintFieldIdentityClause(Writer writer) Prints the platform-specific identity clause for a field (e.g., AUTO_INCREMENT).voidprintSQLSelectStatement(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.voidINTERNAL: Prints return keyword for StoredFunctionDefinition: CREATE FUNCTION StoredFunction_In (P_IN BIGINT) RETURN BIGINT The method was introduced because MySQL requires "RETURNS" instead: CREATE FUNCTION StoredFunction_In (P_IN BIGINT) RETURNS BIGINTbooleanUsed for stored procedure creation: MySQL platforms need brackets around arguments declaration even if no arguments exist.booleanINTERNAL: Return if this database requires the table name when dropping an index.protected ExpressionOperatorINTERNAL: Build MySQL equivalent to RTRIM(string_exp, character).booleanINTERNAL: MySQL supports temp tables for update-all, delete-all queries.booleanINTERNAL: MySQL FOR UPDATE clause has to be the lastbooleanThis is required in the construction of the stored procedures with output parametersbooleanINTERNAL: MySQL stored procedure calls do not require the argument name be printed in the call string e.g. call MyStoredProc(?)booleanINTERNAL: JDBC defines an outer join syntax which many drivers do not support.booleanSome db allow VARCHAR db field to be used in arithmetic operations automatically converting them to numeric: UPDATE OL_PHONE SET PHONE_ORDER_VARCHAR = (PHONE_ORDER_VARCHAR + 1) WHERE ...booleanINTERNAL: Indicates whether the platform supports the count distinct function with multiple fields.booleanWhether locking read concurrency withNOWAITis supported.booleanOverride this method if the platform supports setting fractional seconds precision in a SQL time or timestamp data type.booleanINTERNAL: MySQL supports temp tables for update-all, delete-all queries.booleanINTERNAL: Indicates whether the platform supports identity.booleanINTERNAL: Indicates whether locking clause could be selectively applied only to some tables in a ReadQuery.booleanprotected ExpressionOperatorINTERNAL: Build MySQL equivalent to TO_CHAR.protected ExpressionOperatorINTERNAL: Build MySQL equivalent to TO_DATE.static ExpressionOperatortoday()INTERNAL: MySQL specifictodayoperator.protected ExpressionOperatorINTERNAL: Build MySQL equivalent to TO_NUMBER.voidwriteDeleteFromTargetTableUsingTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, org.eclipse.persistence.internal.helper.DatabaseTable targetTable, Collection<org.eclipse.persistence.internal.helper.DatabaseField> pkFields, Collection<org.eclipse.persistence.internal.helper.DatabaseField> targetPkFields, org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform platform) INTERNAL: Writes MySQL specific SQL for accessing temp tables for delete-all queries.voidwriteParameterMarker(Writer writer, org.eclipse.persistence.internal.expressions.ParameterExpression expression, org.eclipse.persistence.internal.sessions.AbstractRecord record, org.eclipse.persistence.internal.databaseaccess.DatabaseCall call) voidwriteUpdateOriginalFromTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, Collection<org.eclipse.persistence.internal.helper.DatabaseField> pkFields, Collection<org.eclipse.persistence.internal.helper.DatabaseField> assignedFields) INTERNAL: Writes MySQL specific SQL for accessing temp tables for update-all queries.Methods inherited from class org.eclipse.persistence.internal.databaseaccess.DatabasePlatform
addBatch, addStructConverter, allowBindingForSelectClause, appendBoolean, appendByteArray, appendLiteralToCall, appendLiteralToCallWithBinding, appendNumber, appendParameter, appendParameterInternal, appendString, autoCommit, beginTransaction, buildBatchCriteria, buildBatchCriteriaForComplexId, buildCallWithReturning, buildCreateIndex, buildDropIndex, buildJavaTypes, canBuildCallWithReturning, checkSequenceExists, commitTransaction, convertToDatabaseType, copyInto, createArray, createArray, createPlatformDefaultSequence, createStruct, createStruct, createStruct, dontBindUpdateAllQueryUsingTempTables, executeBatch, executeStoredProcedure, freeTemporaryObject, getAssignmentString, getBatchRowCountAssignString, getBatchRowCountDeclareString, getBatchRowCountReturnString, getBatchWritingMechanism, getCastSizeForVarcharParameter, getConnection, getConnectionUserName, getCreateTempTableSqlBodyForTable, getCreateTempTableSqlSuffix, getCursorCode, getCustomModifyValueForCall, getDatabaseType, getDatabaseTypes, getDefaultSequenceTableName, getDriverSupportsNVarChar, getExecuteBatchRowCounts, getJavaTypes, getJDBCOuterJoinString, getJDBCType, getJDBCTypeForSetNull, getJdbcTypeName, getJsonPlatform, getMaxBatchWritingSize, getNoWaitString, getObjectFromResultSet, getParameterValueFromDatabaseCall, getParameterValueFromDatabaseCall, getPartitioningCallback, getPingSQL, getProcedureArgument, getQualifiedName, getQualifiedSequenceTableName, getRefValue, getRefValue, getSelectForUpdateNoWaitString, getSelectForUpdateOfString, getSelectForUpdateWaitString, getSequenceCounterFieldName, getSequenceNameFieldName, getSequenceTableName, getStatementCacheSize, getStoredProcedureParameterPrefix, getStoredProcedureTerminationToken, getStringBindingSize, getStructConverters, getTableCreationSuffix, getTempTableForTable, getTransactionIsolation, getTypeConverters, getUseNationalCharacterVaryingTypeForString, getVPDClearIdentifierQuery, getVPDCreationFunctionString, getVPDCreationPolicyString, getVPDDeletionString, getVPDSetIdentifierQuery, hasPartitioningCallback, initialize, isCastRequired, isDynamicSQLRequiredForFunctions, isInformixOuterJoin, isJDBCExecuteCompliant, isLobCompatibleWithDistinct, isLockTimeoutException, isNullAllowedInSelectClause, isOutputAllowWithResultSet, isRowCountOutputParameterRequired, isXDBDocument, maximumNumericValues, minimumNumericValues, minimumTimeIncrement, prepareBatchStatement, printValuelist, printValuelist, registerOutputParameter, registerOutputParameter, registerOutputParameter, registerOutputParameter, requiresProcedureCallBrackets, requiresProcedureCallOuputToken, requiresTypeNameToRegisterOutputParameter, retrieveFirstPrimaryKeyOrOne, rollbackTransaction, setBatchWritingMechanism, setCastSizeForVarcharParameter, setCursorCode, setDatabaseTypes, setDriverName, setDriverSupportsNVarChar, setExecuteBatchRowCounts, setIsCastRequired, setJavaTypes, 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, shouldBindLiterals, shouldBindPartialParameters, shouldCacheAllStatements, shouldCreateIndicesOnForeignKeys, shouldForceBindAllParameters, shouldForceFieldNamesToUpperCase, shouldIgnoreCaseOnFieldComparisons, shouldIgnoreException, shouldOptimizeDataConversion, shouldPrintAliasForUpdate, shouldPrintFieldIdentityClause, shouldPrintInnerJoinInWhereClause, shouldPrintInOutputTokenBeforeType, shouldPrintLockingClauseAfterWhereClause, shouldPrintOuterJoinInWhereClause, shouldTempTableSpecifyPrimaryKeys, shouldTrimStrings, shouldUseCustomModifyForCall, shouldUseGetSetNString, shouldUseRownumFiltering, supportsANSIInnerJoinSyntax, supportsAutoCommit, supportsConnectionUserName, supportsLocalTempTables, supportsLockingQueriesWithMultipleTables, supportsNestingOuterJoins, supportsOrderByParameters, supportsOuterJoinsWithBrackets, supportsTempTables, supportsVPD, supportsWaitForUpdate, usesBatchWriting, usesByteArrayBinding, usesJDBCBatchWriting, usesNativeBatchWriting, usesNativeSQL, usesSequenceTable, usesStreamsForBinding, usesStringBinding, wasFailureCommunicationBased, writeAddColumnClause, writeAutoAssignmentSetClause, writeAutoJoinWhereClause, writeCleanUpTempTableSql, writeCreateTempTableSql, writeDropColumnClause, writeFields, writeFieldsAutoClause, writeFieldsList, writeInsertIntoTableSql, writeJoinWhereClause, writeLOB, writeTruncateTableMethods 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, getSequencePreallocationSize, getSequences, getSequencesToWrite, getStartDelimiter, getTableQualifier, getTimestampFromServer, getUpdateSequenceQuery, hasDefaultSequence, initializeDefaultQueries, isAccess, isAttunity, isCloudscape, isDB2, isDB2Z, isDBase, isDerby, isFirebird, isH2, isHANA, isHSQL, isInformix, isMariaDB, isMaxDB, isODBC, isOracle, isOracle12, isOracle23, isOracle9, isPervasive, isPointBase, isPostgreSQL, isSQLAnywhere, isSQLServer, isSybase, isSymfoware, isTimesTen, isTimesTen7, removeAllSequences, removeSequence, sequencesAfterCloneCleanup, setConversionManager, setDefaultNativeSequenceToTable, setDefaultSeqenceAtNextValue, setDefaultSequence, setEndDelimiter, setSelectSequenceNumberQuery, setSequencePreallocationSize, setSequences, setStartDelimiter, setSupportsReturnGeneratedKeys, setTableQualifier, setTimestampQuery, setUpdateSequenceQuery, setUUIDQuery, shouldNativeSequenceUseTransaction, shouldPrepare, shouldSelectDistinctIncludeOrderBy, shouldSelectIncludeOrderBy, supportsNativeSequenceNumbers, supportsReturnGeneratedKeys, supportsSequenceObjects, toString, usesPlatformDefaultSequenceMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.persistence.tools.schemaframework.DDLPlatform
allowsSizeInProcedureArguments, buildCreateIndex, buildDropIndex, buildSequenceObjectAlterIncrementWriter, buildSequenceObjectCreationWriter, buildSequenceObjectDeletionWriter, getBatchBeginString, getBatchDelimiterString, getBatchEndString, getCreateDatabaseSchemaString, getCreateViewString, getCreationInOutputProcedureToken, getCreationOutputProcedureToken, getDatabaseType, getDatabaseType, getDropCascadeString, getEndDelimiter, getIndexNamePrefix, getInputProcedureToken, getMaxFieldNameSize, getMaxForeignKeyNameSize, getMaxIndexNameSize, getMaxUniqueKeyNameSize, getOutputProcedureToken, getProcedureArgumentString, getProcedureOptionList, getStartDelimiter, isAlterSequenceObjectSupported, printFieldNotNullClause, printFieldNullClause, printFieldTypeSize, printFieldTypeSize, printFieldUnique, requiresNamedPrimaryKeyConstraints, requiresUniqueConstraintCreationOnTableCreate, shouldCreateIndicesForPrimaryKeys, shouldCreateIndicesOnUniqueKeys, shouldPrintConstraintNameAfter, shouldPrintInputTokenAtStart, shouldPrintOutputTokenBeforeType, shouldPrintStoredProcedureVariablesAfterBeginString, supportsDeleteOnCascade, supportsForeignKeyConstraints, supportsIndexes, supportsPrimaryKeyConstraint, supportsUniqueColumns, supportsUniqueKeyConstraints, writeTableCreationSuffixMethods inherited from interface org.eclipse.persistence.internal.databaseaccess.Platform
connectionProperties
-
Constructor Details
-
MySQLPlatform
public MySQLPlatform()
-
-
Method Details
-
initializeConnectionData
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformINTERNAL: Allow initialization from the connection.- Overrides:
initializeConnectionDatain classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
SQLException
-
supportsForUpdateNoWait
public boolean supportsForUpdateNoWait()Whether locking read concurrency withNOWAITis supported. Requires MySQL 8.0.1 or later.- Returns:
- value of
truewhen locking read concurrency withNOWAITis supported orfalseotherwise
-
appendDate
Appends an MySQL specific date if usesNativeSQL is true otherwise use the ODBC format. Native FORMAT: 'YYYY-MM-DD'- Overrides:
appendDatein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
appendTime
Appends an MySQL specific time if usesNativeSQL is true otherwise use the ODBC format. Native FORMAT: 'HH:MM:SS'.- Overrides:
appendTimein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
appendTimestamp
Appends an MySQL specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format. Native Format: 'YYYY-MM-DD HH:MM:SS'- Overrides:
appendTimestampin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
appendCalendar
Appends an MySQL specific Timestamp, if usesNativeSQL is true otherwise use the ODBC format. Native Format: 'YYYY-MM-DD HH:MM:SS'- Overrides:
appendCalendarin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
getJDBCType
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformReturn the JDBC type for the Java type.- Overrides:
getJDBCTypein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
buildSelectQueryForIdentity
INTERNAL: Build the identity query for native sequencing.- Overrides:
buildSelectQueryForIdentityin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
buildProcedureCallString
public String buildProcedureCallString(StoredProcedureCall call, org.eclipse.persistence.internal.sessions.AbstractSession session, org.eclipse.persistence.internal.sessions.AbstractRecord row) Return the stored procedure syntax for this platform.- Overrides:
buildProcedureCallStringin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
computeMaxRowsForSQL
public 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. 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
MySQL uses case #2 and therefore the maxResults has to be altered based on the firstResultIndex
- Overrides:
computeMaxRowsForSQLin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- See Also:
-
canBatchWriteWithOptimisticLocking
public boolean canBatchWriteWithOptimisticLocking(org.eclipse.persistence.internal.databaseaccess.DatabaseCall call) INTERNAL: Supports Batch Writing with Optimistic Locking.- Overrides:
canBatchWriteWithOptimisticLockingin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getFunctionCallHeader
Used for stored function calls.- Overrides:
getFunctionCallHeaderin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureCallTail
Used for sp calls.- Overrides:
getProcedureCallTailin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getSelectForUpdateString
INTERNAL: Used for pessimistic locking.- Overrides:
getSelectForUpdateStringin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
isForUpdateCompatibleWithDistinct
public boolean isForUpdateCompatibleWithDistinct()Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformINTERNAL: Indicates whether SELECT DISTINCT ... FOR UPDATE is allowed by the platform (Oracle doesn't allow this).- Overrides:
isForUpdateCompatibleWithDistinctin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getTimestampQuery
INTERNAL: This method returns the query to select the timestamp from the server for MySQL.- Specified by:
getTimestampQueryin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
getTimestampQueryin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
isMySQL
public boolean isMySQL()Answers whether platform is MySQL.- Specified by:
isMySQLin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
isMySQLin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
initializePlatformOperators
protected void initializePlatformOperators()Initialize any platform-specific operators.- Overrides:
initializePlatformOperatorsin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
currentTimeStamp
INTERNAL: MySQL specificcurrentTimeStampoperator.- Returns:
- new
ExpressionOperatorinstance withcurrentTimeStamp
-
today
INTERNAL: MySQL specifictodayoperator.- Returns:
- new
ExpressionOperatorinstance withtoday
-
currentTime
INTERNAL: MySQL specificcurrentTimeoperator.- Returns:
- new
ExpressionOperatorinstance withcurrentTime
-
localTime
INTERNAL: MySQL specificlocalTimeoperator.- Returns:
- new
ExpressionOperatorinstance withlocalTime
-
localDateTime
INTERNAL: MySQL specificlocalDateTimeoperator.- Returns:
- new
ExpressionOperatorinstance withlocalDateTime
-
logOperator
INTERNAL: Create the 10 based log operator for this platform. -
toNumberOperator
INTERNAL: Build MySQL equivalent to TO_NUMBER. -
toDateOperator
INTERNAL: Build MySQL equivalent to TO_DATE. -
toCharOperator
INTERNAL: Build MySQL equivalent to TO_CHAR. -
dateToStringOperator
INTERNAL: Build MySQL equivalent to TO_CHAR. -
leftTrim2
INTERNAL: Build MySQL equivalent to LTRIM(string_exp, character). MySQL: TRIM(LEADING character FROM string_exp) -
rightTrim2
INTERNAL: Build MySQL equivalent to RTRIM(string_exp, character). MySQL: TRIM(TRAILING character FROM string_exp) -
currentDateOperator
INTERNAL: Create the current date operator for this platform. -
shouldUseJDBCOuterJoinSyntax
public boolean shouldUseJDBCOuterJoinSyntax()INTERNAL: JDBC defines an outer join syntax which many drivers do not support. So we normally avoid it.- Overrides:
shouldUseJDBCOuterJoinSyntaxin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsIdentity
public boolean supportsIdentity()INTERNAL: Indicates whether the platform supports identity. MySQL supports native sequencing through AUTO_INCREMENT field types.- Overrides:
supportsIdentityin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
supportsCountDistinctWithMultipleFields
public boolean supportsCountDistinctWithMultipleFields()INTERNAL: Indicates whether the platform supports the count distinct function with multiple fields.- Overrides:
supportsCountDistinctWithMultipleFieldsin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
requiresTableInIndexDropDDL
public boolean requiresTableInIndexDropDDL()INTERNAL: Return if this database requires the table name when dropping an index. -
supportsGlobalTempTables
public boolean supportsGlobalTempTables()INTERNAL: MySQL supports temp tables for update-all, delete-all queries.- Overrides:
supportsGlobalTempTablesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsIndividualTableLocking
public boolean supportsIndividualTableLocking()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:
supportsIndividualTableLockingin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
supportsStoredFunctions
public boolean supportsStoredFunctions() -
supportsAutoConversionToNumericForArithmeticOperations
public boolean supportsAutoConversionToNumericForArithmeticOperations()Some db allow VARCHAR db field to be used in arithmetic operations automatically converting them to numeric: UPDATE OL_PHONE SET PHONE_ORDER_VARCHAR = (PHONE_ORDER_VARCHAR + 1) WHERE ... SELECT ... WHERE ... t0.MANAGED_ORDER_VARCHAR BETWEEN 1 AND 4 ...- Overrides:
supportsAutoConversionToNumericForArithmeticOperationsin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getCreateTempTableSqlPrefix
INTERNAL: MySQL temp table syntax, used for update-all, delete-all queries.- Overrides:
getCreateTempTableSqlPrefixin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldAlwaysUseTempStorageForModifyAll
public boolean shouldAlwaysUseTempStorageForModifyAll()INTERNAL: MySQL supports temp tables for update-all, delete-all queries.- Overrides:
shouldAlwaysUseTempStorageForModifyAllin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintStoredProcedureArgumentNameInCall
public boolean shouldPrintStoredProcedureArgumentNameInCall()INTERNAL: MySQL 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:
shouldPrintStoredProcedureArgumentNameInCallin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
shouldPrintForUpdateClause
public boolean shouldPrintForUpdateClause()INTERNAL: MySQL FOR UPDATE clause has to be the last- Overrides:
shouldPrintForUpdateClausein classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
getProcedureCallHeader
INTERNAL: Used for stored procedure calls.- Overrides:
getProcedureCallHeaderin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
writeUpdateOriginalFromTempTableSql
public void writeUpdateOriginalFromTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, Collection<org.eclipse.persistence.internal.helper.DatabaseField> pkFields, Collection<org.eclipse.persistence.internal.helper.DatabaseField> assignedFields) throws IOException INTERNAL: Writes MySQL specific SQL for accessing temp tables for update-all queries.- Overrides:
writeUpdateOriginalFromTempTableSqlin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Parameters:
writer- for writing the sqltable- is original table for which temp table is created.pkFields- primary key fields for the original table.assignedFields- fields to be assigned a new value.- Throws:
IOException
-
writeDeleteFromTargetTableUsingTempTableSql
public void writeDeleteFromTargetTableUsingTempTableSql(Writer writer, org.eclipse.persistence.internal.helper.DatabaseTable table, org.eclipse.persistence.internal.helper.DatabaseTable targetTable, Collection<org.eclipse.persistence.internal.helper.DatabaseField> pkFields, Collection<org.eclipse.persistence.internal.helper.DatabaseField> targetPkFields, org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform platform) throws IOException INTERNAL: Writes MySQL specific SQL for accessing temp tables for delete-all queries.- Overrides:
writeDeleteFromTargetTableUsingTempTableSqlin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Parameters:
writer- for writing the sqltable- is original table for which temp table is created.targetTable- is a table from which to delete.pkFields- primary key fields for the original table.targetPkFields- primary key fields for the target table.- Throws:
IOException
-
writeParameterMarker
public void writeParameterMarker(Writer writer, org.eclipse.persistence.internal.expressions.ParameterExpression expression, org.eclipse.persistence.internal.sessions.AbstractRecord record, org.eclipse.persistence.internal.databaseaccess.DatabaseCall call) throws IOException - Overrides:
writeParameterMarkerin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
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.DatabasePlatformINTERNAL: Print the SQL representation of the statement on a stream, storing the fields in the DatabaseCall.- Overrides:
printSQLSelectStatementin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
requiresProcedureBrackets
public boolean requiresProcedureBrackets()Used for stored procedure creation: MySQL platforms need brackets around arguments declaration even if no arguments exist. -
printStoredFunctionReturnKeyWord
INTERNAL: Prints return keyword for StoredFunctionDefinition: CREATE FUNCTION StoredFunction_In (P_IN BIGINT) RETURN BIGINT The method was introduced because MySQL requires "RETURNS" instead: CREATE FUNCTION StoredFunction_In (P_IN BIGINT) RETURNS BIGINT- Overrides:
printStoredFunctionReturnKeyWordin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Throws:
IOException
-
getUUIDQuery
INTERNAL: This method returns the query to select the UUID from the server for MySQL.- Specified by:
getUUIDQueryin interfaceorg.eclipse.persistence.internal.databaseaccess.Platform- Overrides:
getUUIDQueryin classorg.eclipse.persistence.internal.databaseaccess.DatasourcePlatform
-
buildDatabaseTypes
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformReturn the mapping of class types to database types for the schema framework.- Overrides:
buildDatabaseTypesin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform
-
checkTableExists
public boolean checkTableExists(org.eclipse.persistence.internal.sessions.AbstractSession session, TableDefinition table, boolean suppressLogging) Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformINTERNAL: Executes and evaluates query to check whether given table exists. Returned value is alwaystrue, because an exception is thrown when given table does not exist.- Overrides:
checkTableExistsin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Parameters:
session- current database sessiontable- database table meta-datasuppressLogging- whether to suppress logging during query execution- Returns:
- value of
trueif given table exists orfalseotherwise
-
getConstraintDeletionString
Description copied from interface:DDLPlatformUsed for constraint deletion. -
getDropDatabaseSchemaString
Description copied from interface:DDLPlatformReturn the drop schema SQL syntax. Subclasses should override as needed. -
getInOutputProcedureToken
Description copied from interface:DDLPlatformThis method is used to print the output parameter token when stored procedures are called -
getProcedureAsString
Description copied from interface:DDLPlatformUsed for stored procedure defs. -
getProcedureBeginString
Description copied from interface:DDLPlatformUsed for stored procedure defs. -
getProcedureEndString
Description copied from interface:DDLPlatformUsed for stored procedure defs. -
getTableExistsQuery
Description copied from class:org.eclipse.persistence.internal.databaseaccess.DatabasePlatformINTERNAL: Returns query to check whether given table exists. Query execution throws an exception when no such table exists.- Overrides:
getTableExistsQueryin classorg.eclipse.persistence.internal.databaseaccess.DatabasePlatform- Parameters:
table- database table meta-data- Returns:
- query to check whether given table exists
-
getUniqueConstraintDeletionString
Description copied from interface:DDLPlatformUsed for constraint deletion. -
printFieldIdentityClause
Description copied from interface:DDLPlatformPrints the platform-specific identity clause for a field (e.g., AUTO_INCREMENT).- Parameters:
writer- the writer to append to- Throws:
ValidationException
-
shouldPrintOutputTokenAtStart
public boolean shouldPrintOutputTokenAtStart()Description copied from interface:DDLPlatformThis is required in the construction of the stored procedures with output parameters -
supportsFractionalTime
public boolean supportsFractionalTime()Description copied from interface:DDLPlatformOverride this method if the platform supports setting fractional seconds precision in a SQL time or timestamp data type.- Returns:
- value of
truewhen current database platform supports fractional seconds precision orfalseotherwise
-