public class MySQLAdapter extends BaseDatastoreAdapter
BaseDatastoreAdapter.DatastoreTypeMappings
Modifier and Type | Field and Description |
---|---|
static String |
NONSQL92_RESERVED_WORDS
A string containing the list of MySQL keywords that are not also SQL/92 reserved words, separated by commas.
|
catalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, MAX_IDENTIFIER_LENGTH, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, NONRESERVED_WORDS, properties, reservedKeywords, SQL2003_RESERVED_WORDS, SQL92_RESERVED_WORDS, SQL99_RESERVED_WORDS, supportedJdbcTypesById, supportedOptions, unsupportedJdbcTypesById
ACCESS_PARENTQUERY_IN_SUBQUERY_JOINED, ALTER_TABLE_DROP_CONSTRAINT_SYNTAX, ALTER_TABLE_DROP_FOREIGN_KEY_CONSTRAINT, ANALYSIS_METHODS, ANSI_CROSSJOIN_SYNTAX, ANSI_JOIN_SYNTAX, AUTO_INCREMENT_COLUMN_TYPE_SPECIFICATION, AUTO_INCREMENT_KEYS_NULL_SPECIFICATION, AUTO_INCREMENT_PK_IN_CREATE_TABLE_COLUMN_DEF, BIT_IS_REALLY_BOOLEAN, BLOB_SET_USING_SETSTRING, BOOLEAN_COMPARISON, CATALOGS_IN_TABLE_DEFINITIONS, CHAR_COLUMNS_PADDED_WITH_SPACES, CHECK_IN_CREATE_STATEMENTS, CHECK_IN_END_CREATE_STATEMENTS, CLOB_SET_USING_SETSTRING, CREATE_INDEXES_BEFORE_FOREIGN_KEYS, CROSSJOIN_ASINNER11_SYNTAX, DATETIME_STORES_MILLISECS, DEFAULT_BEFORE_NULL_IN_COLUMN_OPTIONS, DEFAULT_KEYWORD_IN_COLUMN_OPTIONS, DEFAULT_KEYWORD_WITH_NOT_NULL_IN_COLUMN_OPTIONS, DEFERRED_CONSTRAINTS, DISTINCT_WITH_SELECT_FOR_UPDATE, ESCAPE_EXPRESSION_IN_LIKE_PREDICATE, EXISTS_SYNTAX, FK_DELETE_ACTION_CASCADE, FK_DELETE_ACTION_DEFAULT, FK_DELETE_ACTION_NULL, FK_DELETE_ACTION_RESTRICT, FK_IN_END_CREATE_STATEMENTS, FK_UPDATE_ACTION_CASCADE, FK_UPDATE_ACTION_DEFAULT, FK_UPDATE_ACTION_NULL, FK_UPDATE_ACTION_RESTRICT, GET_GENERATED_KEYS_STATEMENT, GROUP_BY_REQUIRES_ALL_SELECT_PRIMARIES, GROUPING_WITH_SELECT_FOR_UPDATE, HAVING_WITH_SELECT_FOR_UPDATE, HOLD_CURSORS_OVER_COMMIT, IDENTIFIERS_LOWERCASE, IDENTIFIERS_LOWERCASE_QUOTED, IDENTIFIERS_MIXEDCASE, IDENTIFIERS_MIXEDCASE_QUOTED, IDENTIFIERS_MIXEDCASE_QUOTED_SENSITIVE, IDENTIFIERS_MIXEDCASE_SENSITIVE, IDENTIFIERS_UPPERCASE, IDENTIFIERS_UPPERCASE_QUOTED, IDENTITY_COLUMNS, INCLUDE_ORDERBY_COLS_IN_SELECT, LOCK_OPTION_PLACED_AFTER_FROM, LOCK_OPTION_PLACED_WITHIN_JOIN, LOCK_WITH_SELECT_FOR_UPDATE, MULTITABLES_WITH_SELECT_FOR_UPDATE, NATIVE_ENUM_TYPE, NULL_EQUALS_EMPTY_STRING, NULLS_IN_CANDIDATE_KEYS, NULLS_KEYWORD_IN_COLUMN_OPTIONS, OPERATOR_BITWISE_AND, OPERATOR_BITWISE_OR, OPERATOR_BITWISE_XOR, ORDERBY_NULLS_DIRECTIVES, ORDERBY_NULLS_USING_CASE_NULL, ORDERBY_NULLS_USING_COLUMN_IS_NULL, ORDERBY_NULLS_USING_ISNULL, ORDERBY_USING_SELECT_COLUMN_INDEX, ORDERING_WITH_SELECT_FOR_UPDATE, PARAMETER_IN_CASE_IN_UPDATE_CLAUSE, PERSIST_OF_UNASSIGNED_CHAR, PRIMARYKEY_IN_CREATE_STATEMENTS, PROJECTION_IN_TABLE_REFERENCE_JOINS, RESULTSET_TYPE_FORWARD_ONLY, RESULTSET_TYPE_SCROLL_INSENSITIVE, RESULTSET_TYPE_SCROLL_SENSITIVE, RIGHT_OUTER_JOIN, SCHEMAS_IN_TABLE_DEFINITIONS, SELECT_FOR_UPDATE_NOWAIT, SEQUENCES, SOME_ANY_ALL_SUBQUERY_EXPRESSIONS, STATEMENT_BATCHING, STORED_PROCEDURES, SUBQUERY_IN_HAVING, TX_ISOLATION_NONE, TX_ISOLATION_READ_COMMITTED, TX_ISOLATION_READ_UNCOMMITTED, TX_ISOLATION_REPEATABLE_READ, TX_ISOLATION_SERIALIZABLE, UNION_SYNTAX, UNIQUE_IN_END_CREATE_STATEMENTS, UPDATE_DELETE_STATEMENT_ALLOW_TABLE_ALIAS_IN_WHERE_CLAUSE, UPDATE_STATEMENT_ALLOW_TABLE_ALIAS_IN_SET_CLAUSE, USE_UNION_ALL, VALUE_GENERATION_UUID_STRING, VIEWS
Constructor and Description |
---|
MySQLAdapter(DatabaseMetaData metadata)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
String |
getAddColumnStatement(Table table,
Column col)
Accessor for the SQL statement to add a column to a table.
|
String |
getAddPrimaryKeyStatement(PrimaryKey pk,
IdentifierFactory factory)
MySQL, when using AUTO_INCREMENT, requires the primary key specified
in the CREATE TABLE, so we do nothing here.
|
String |
getAutoIncrementKeyword()
Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).
|
String |
getAutoIncrementStmt(Table table,
String columnName)
Accessor for the auto-increment sql statement for this datastore.
|
String |
getCreateDatabaseStatement(String catalogName,
String schemaName)
Method to return the statement necessary to create a database with this RDBMS.
|
String |
getCreateIndexStatement(Index idx,
IdentifierFactory factory)
Returns the appropriate DDL to create an index.
|
String |
getCreateTableStatement(TableImpl table,
Column[] columns,
Properties props,
IdentifierFactory factory)
Method to return the CREATE TABLE statement.
|
String |
getDeleteTableStatement(SQLTable tbl)
Method to return the basic SQL for a DELETE TABLE statement.
|
String |
getDropDatabaseStatement(String catalogName,
String schemaName)
Method to return the statement necessary to drop a database with this RDBMS.
|
String |
getDropTableStatement(Table table)
Method to return the DROP TABLE statement.
|
String |
getEscapePatternExpression()
The character for escaping patterns.
|
String |
getRangeByLimitEndOfStatementClause(long offset,
long count,
boolean hasOrdering)
Method to return the SQL to append to the WHERE clause of a SELECT statement to handle
restriction of ranges using the LIMUT keyword.
|
String |
getSelectNewUUIDStmt()
The function to creates a unique value of type uniqueidentifier.
|
Class |
getSQLMethodClass(String className,
String methodName,
org.datanucleus.ClassLoaderResolver clr)
Accessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).
|
Class |
getSQLOperationClass(String operationName)
Accessor for the SQLOperation class for the specified operation (if available for this datastore).
|
String |
getVendorID()
Accessor for the Vendor ID for this datastore.
|
void |
initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.store.connection.ManagedConnection mconn)
Initialise the types for this datastore.
|
boolean |
isReservedKeyword(String word)
Tests if a given string is an SQL keyword.
|
protected void |
loadDatastoreMappings(org.datanucleus.plugin.PluginManager mgr,
org.datanucleus.ClassLoaderResolver clr)
Load all datastore mappings defined in the associated plugins.
|
RDBMSColumnInfo |
newRDBMSColumnInfo(ResultSet rs)
Method to create a column info for the current row.
|
SQLTypeInfo |
newSQLTypeInfo(ResultSet rs)
Create a new SQL type info from the current row of the passed ResultSet.
|
boolean |
validToIndexMapping(JavaTypeMapping mapping)
Method to return whether the specified mapping is indexable.
|
addSQLTypeForJDBCType, deregisterDatastoreMappingsForJDBCType, getAdapterTime, getAddCandidateKeyStatement, getAddForeignKeyStatement, getAutoIncrementJavaTypeForType, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumns, getContinuationString, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreMappingClass, getDatastoreProductName, getDatastoreProductVersion, getDefaultSqlTypeForJavaType, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getExistingIndexes, getIdentifierQuoteString, getInsertStatementForNoColumns, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getNumericConversionFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getSchemaName, getSelectForUpdateText, getSelectWithLockOption, getSequenceCreateStmt, getSequenceNextStmt, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getUpdateTableStatement, getValueForProperty, initialise, initialiseDatastore, isIdentityFieldDataType, isStatementCancel, isStatementTimeout, isValidPrimaryKeyType, iteratorReservedWords, newFKInfo, registerDatastoreMapping, registerDatastoreMapping, sequenceExists, setProperties, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToSelectMappingInStatement
public static final String NONSQL92_RESERVED_WORDS
This list was produced based on the reserved word list in the MySQL Manual (Version 4.0.10-gamma) at http://www.mysql.com/doc/en/Reserved_words.html.
public MySQLAdapter(DatabaseMetaData metadata)
metadata
- MetaData for the DBpublic void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn)
initialiseTypes
in interface DatastoreAdapter
initialiseTypes
in class BaseDatastoreAdapter
handler
- SchemaHandler that we initialise the types formconn
- Managed connection to usepublic String getVendorID()
DatastoreAdapter
getVendorID
in interface DatastoreAdapter
getVendorID
in class BaseDatastoreAdapter
public boolean isReservedKeyword(String word)
BaseDatastoreAdapter
The list of key words tested against is defined to contain all SQL/92 keywords, plus any additional
key words reported by the JDBC driver for this adapter via DatabaseMetaData.getSQLKeywords()
.
In general, use of a SQL key word as an identifier should be avoided. SQL/92 key words are divided into reserved and non-reserved words. If a reserved word is used as an identifier it must be quoted with double quotes. Strictly speaking, the same is not true of non-reserved words. However, as C.J. Date writes in A Guide To The SQL Standard :
The rule by which it is determined within the standard that one key word needs to be reserved while another need not is not clear to this writer. In practice, it is probably wise to treat all key words as reserved.
isReservedKeyword
in interface DatastoreAdapter
isReservedKeyword
in class BaseDatastoreAdapter
word
- The word to test.true
if word is a SQL key word for this DBMS. The comparison is case-insensitive.public RDBMSColumnInfo newRDBMSColumnInfo(ResultSet rs)
newRDBMSColumnInfo
in interface DatastoreAdapter
newRDBMSColumnInfo
in class BaseDatastoreAdapter
rs
- ResultSet from DatabaseMetaData.getColumns()public SQLTypeInfo newSQLTypeInfo(ResultSet rs)
DatastoreAdapter
newSQLTypeInfo
in interface DatastoreAdapter
newSQLTypeInfo
in class BaseDatastoreAdapter
rs
- ResultSetpublic String getCreateDatabaseStatement(String catalogName, String schemaName)
DatastoreAdapter
getCreateDatabaseStatement
in interface DatastoreAdapter
getCreateDatabaseStatement
in class BaseDatastoreAdapter
catalogName
- name of the catalogschemaName
- Name of the schemapublic String getDropDatabaseStatement(String catalogName, String schemaName)
DatastoreAdapter
getDropDatabaseStatement
in interface DatastoreAdapter
getDropDatabaseStatement
in class BaseDatastoreAdapter
catalogName
- Name of the catalogschemaName
- Name of the schemapublic String getAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)
getAddPrimaryKeyStatement
in interface DatastoreAdapter
getAddPrimaryKeyStatement
in class BaseDatastoreAdapter
pk
- An object describing the primary key.factory
- Identifier factorypublic String getCreateTableStatement(TableImpl table, Column[] columns, Properties props, IdentifierFactory factory)
getCreateTableStatement
in interface DatastoreAdapter
getCreateTableStatement
in class BaseDatastoreAdapter
table
- The tablecolumns
- The columns in the tableprops
- Properties for controlling the table creationfactory
- Identifier factorypublic String getDropTableStatement(Table table)
getDropTableStatement
in interface DatastoreAdapter
getDropTableStatement
in class BaseDatastoreAdapter
table
- The tablepublic String getAddColumnStatement(Table table, Column col)
getAddColumnStatement
in interface DatastoreAdapter
getAddColumnStatement
in class BaseDatastoreAdapter
table
- The tablecol
- The columnpublic String getDeleteTableStatement(SQLTable tbl)
DELETE t1 FROM tbl t1
. Doesn't include any where clause.getDeleteTableStatement
in interface DatastoreAdapter
getDeleteTableStatement
in class BaseDatastoreAdapter
tbl
- The SQLTable to deletepublic String getCreateIndexStatement(Index idx, IdentifierFactory factory)
BaseDatastoreAdapter
CREATE INDEX FOO_N1 ON FOO (BAR,BAZ) [Extended Settings] CREATE UNIQUE INDEX FOO_U1 ON FOO (BAR,BAZ) [Extended Settings]
getCreateIndexStatement
in interface DatastoreAdapter
getCreateIndexStatement
in class BaseDatastoreAdapter
idx
- An object describing the index.factory
- Identifier factorypublic String getAutoIncrementStmt(Table table, String columnName)
getAutoIncrementStmt
in interface DatastoreAdapter
getAutoIncrementStmt
in class BaseDatastoreAdapter
table
- Name of the table that the autoincrement is forcolumnName
- Name of the column that the autoincrement is forpublic String getAutoIncrementKeyword()
getAutoIncrementKeyword
in interface DatastoreAdapter
getAutoIncrementKeyword
in class BaseDatastoreAdapter
public String getSelectNewUUIDStmt()
getSelectNewUUIDStmt
in interface DatastoreAdapter
getSelectNewUUIDStmt
in class BaseDatastoreAdapter
public String getRangeByLimitEndOfStatementClause(long offset, long count, boolean hasOrdering)
getRangeByLimitEndOfStatementClause
in interface DatastoreAdapter
getRangeByLimitEndOfStatementClause
in class BaseDatastoreAdapter
offset
- The offset to return fromcount
- The number of items to returnhasOrdering
- Whether ordering is presentpublic String getEscapePatternExpression()
getEscapePatternExpression
in interface DatastoreAdapter
getEscapePatternExpression
in class BaseDatastoreAdapter
public boolean validToIndexMapping(JavaTypeMapping mapping)
DatastoreAdapter
validToIndexMapping
in interface DatastoreAdapter
validToIndexMapping
in class BaseDatastoreAdapter
mapping
- The mappingpublic Class getSQLOperationClass(String operationName)
DatastoreAdapter
getSQLOperationClass
in interface DatastoreAdapter
getSQLOperationClass
in class BaseDatastoreAdapter
operationName
- operation namepublic Class getSQLMethodClass(String className, String methodName, org.datanucleus.ClassLoaderResolver clr)
DatastoreAdapter
getSQLMethodClass
in interface DatastoreAdapter
getSQLMethodClass
in class BaseDatastoreAdapter
className
- Name of the class (or null if this is a STATIC method)methodName
- Method nameclr
- ClassLoader resolver, in case className is a subclass of a supported typeprotected void loadDatastoreMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)
loadDatastoreMappings
in class BaseDatastoreAdapter
mgr
- the PluginManagerclr
- the ClassLoaderResolverCopyright © 2019. All rights reserved.