public class MSSQLServerAdapter extends BaseDatastoreAdapter
BaseDatastoreAdaptercatalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, properties, reservedKeywords, supportedJdbcTypesById, supportedOptions, unsupportedJdbcTypesByIdACCESS_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, 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, 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, VIEWS| Constructor and Description |
|---|
MSSQLServerAdapter(DatabaseMetaData metadata)
Constructs a Microsoft SQL Server adapter based on the given JDBC metadata.
|
| Modifier and Type | Method and Description |
|---|---|
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 |
getCatalogName(Connection conn)
Accessor for the catalog name.
|
String |
getCreateIndexStatement(Index idx,
IdentifierFactory factory)
Returns the appropriate DDL to create an index.
|
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)
Returns the appropriate SQL to drop the given table.
|
String |
getInsertStatementForNoColumns(Table table)
Method to return the INSERT statement to use when inserting into a table that has no
columns specified.
|
String |
getNewUUIDFunction()
The function to creates a unique value of type uniqueidentifier.
|
String |
getOperatorConcat()
An operator in a string expression that concatenates two or more
character or binary strings, columns, or a combination of strings and
column names into one expression (a string operator).
|
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 OFFSET/FETCH keywords.
|
String |
getSchemaName(Connection conn)
Accessor for the Schema Name for this datastore.
|
String |
getSelectNewUUIDStmt()
The function to creates a unique value of type uniqueidentifier.
|
String |
getSelectWithLockOption()
The option to specify in "SELECT ...
|
String |
getSequenceCreateStmt(String sequence_name,
Integer min,
Integer max,
Integer start,
Integer increment,
Integer cache_size)
Accessor for the sequence statement to create the sequence.
|
String |
getSequenceNextStmt(String sequence_name)
Accessor for the statement for getting the next id from the sequence for this datastore.
|
SQLText |
getUpdateTableStatement(SQLTable tbl,
SQLText setSQL)
Method to return the SQLText for an UPDATE TABLE statement.
|
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 |
isIdentityFieldDataType(String columnDef)
Verifies if the given
columnDef is auto incremented by the datastore. |
boolean |
isReservedKeyword(String word)
Tests if a given string is a SQL keyword.
|
boolean |
isStatementTimeout(SQLException sqle)
return whether this exception represents a timed out statement.
|
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 |
supportsQueryFetchSize(int size)
Whether the datastore will support setting the query fetch size to the supplied value.
|
boolean |
validToSelectMappingInStatement(SQLStatement stmt,
JavaTypeMapping m)
Method to return if it is valid to select the specified mapping for the specified statement
for this datastore adapter.
|
addSQLTypeForJDBCType, getAdapterTime, getAddCandidateKeyStatement, getAddColumnStatement, getAddForeignKeyStatement, getAddPrimaryKeyStatement, getAutoIncrementJavaTypeForType, getCatalogSeparator, getCheckConstraintForValues, getColumns, getContinuationString, getCreateDatabaseStatement, getCreateTableStatement, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreProductName, getDatastoreProductVersion, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentifierQuoteString, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNumericConversionFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getSelectForUpdateText, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, getValueForProperty, initialiseDatastore, isStatementCancel, isValidPrimaryKeyType, iteratorReservedWords, newFKInfo, removeUnsupportedMappings, sequenceExists, setProperties, supportsOption, supportsTransactionIsolation, toString, validToIndexMappingpublic MSSQLServerAdapter(DatabaseMetaData metadata)
metadata - the database metadata.public void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.store.connection.ManagedConnection mconn)
initialiseTypes in interface DatastoreAdapterinitialiseTypes in class BaseDatastoreAdapterhandler - SchemaHandler that we initialise the types formconn - Managed connection to usepublic String getVendorID()
DatastoreAdaptergetVendorID in interface DatastoreAdaptergetVendorID in class BaseDatastoreAdapterpublic String getCatalogName(Connection conn) throws SQLException
getCatalogName in interface DatastoreAdaptergetCatalogName in class BaseDatastoreAdapterconn - The Connection to useSQLException - if an error occurspublic String getSchemaName(Connection conn) throws SQLException
BaseDatastoreAdaptergetSchemaName in interface DatastoreAdaptergetSchemaName in class BaseDatastoreAdapterconn - Connection to the datastoreSQLException - Thrown if error occurs in determining the schema name.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 DatastoreAdapterisReservedKeyword in class BaseDatastoreAdapterword - The word to test.true if word is a SQL key word for this DBMS.
The comparison is case-insensitive.SQLConstantspublic String getDropDatabaseStatement(String catalogName, String schemaName)
DatastoreAdaptergetDropDatabaseStatement in interface DatastoreAdaptergetDropDatabaseStatement in class BaseDatastoreAdaptercatalogName - Name of the catalogschemaName - Name of the schemapublic String getCreateIndexStatement(Index idx, IdentifierFactory factory)
getCreateIndexStatement in interface DatastoreAdaptergetCreateIndexStatement in class BaseDatastoreAdapteridx - An object describing the index.factory - Identifier factorypublic String getSelectNewUUIDStmt()
getSelectNewUUIDStmt in interface DatastoreAdaptergetSelectNewUUIDStmt in class BaseDatastoreAdapterpublic String getNewUUIDFunction()
getNewUUIDFunction in class BaseDatastoreAdapterpublic boolean supportsQueryFetchSize(int size)
supportsQueryFetchSize in interface DatastoreAdaptersupportsQueryFetchSize in class BaseDatastoreAdaptersize - The value to set topublic RDBMSColumnInfo newRDBMSColumnInfo(ResultSet rs)
newRDBMSColumnInfo in interface DatastoreAdapternewRDBMSColumnInfo in class BaseDatastoreAdapterrs - ResultSet from DatabaseMetaData.getColumns()public SQLTypeInfo newSQLTypeInfo(ResultSet rs)
DatastoreAdapternewSQLTypeInfo in interface DatastoreAdapternewSQLTypeInfo in class BaseDatastoreAdapterrs - ResultSetpublic String getDropTableStatement(Table table)
BaseDatastoreAdapterDROP TABLE FOO CASCADE
getDropTableStatement in interface DatastoreAdaptergetDropTableStatement in class BaseDatastoreAdaptertable - The table to drop.public String getDeleteTableStatement(SQLTable tbl)
DELETE MYTABLE FROM MYTABLE t1.getDeleteTableStatement in interface DatastoreAdaptergetDeleteTableStatement in class BaseDatastoreAdaptertbl - The SQLTable to deletepublic SQLText getUpdateTableStatement(SQLTable tbl, SQLText setSQL)
UPDATE T1 SET x1 = val1, x2 = val2 FROM MYTBL T1.
Override if the datastore doesn't support that standard syntax.getUpdateTableStatement in interface DatastoreAdaptergetUpdateTableStatement in class BaseDatastoreAdaptertbl - The primary tablesetSQL - The SQLText for the SET componentpublic String getAutoIncrementStmt(Table table, String columnName)
getAutoIncrementStmt in interface DatastoreAdaptergetAutoIncrementStmt in class BaseDatastoreAdaptertable - Name of the table that the autoincrement is forcolumnName - Name of the column that the autoincrement is forpublic String getAutoIncrementKeyword()
getAutoIncrementKeyword in interface DatastoreAdaptergetAutoIncrementKeyword in class BaseDatastoreAdapterpublic boolean isIdentityFieldDataType(String columnDef)
columnDef is auto incremented by the datastore.isIdentityFieldDataType in interface DatastoreAdapterisIdentityFieldDataType in class BaseDatastoreAdaptercolumnDef - the datastore type namecolumnDef has values auto incremented by the datastorepublic String getInsertStatementForNoColumns(Table table)
getInsertStatementForNoColumns in interface DatastoreAdaptergetInsertStatementForNoColumns in class BaseDatastoreAdaptertable - The tablepublic String getOperatorConcat()
getOperatorConcat in class BaseDatastoreAdapterpublic String getSelectWithLockOption()
BaseDatastoreAdaptergetSelectWithLockOption in interface DatastoreAdaptergetSelectWithLockOption in class BaseDatastoreAdapterpublic boolean validToSelectMappingInStatement(SQLStatement stmt, JavaTypeMapping m)
validToSelectMappingInStatement in interface DatastoreAdaptervalidToSelectMappingInStatement in class BaseDatastoreAdapterstmt - The statementm - The mapping that we want to selectpublic boolean isStatementTimeout(SQLException sqle)
BaseDatastoreAdapterisStatementTimeout in interface DatastoreAdapterisStatementTimeout in class BaseDatastoreAdaptersqle - the exceptionpublic String getRangeByLimitEndOfStatementClause(long offset, long count, boolean hasOrdering)
getRangeByLimitEndOfStatementClause in interface DatastoreAdaptergetRangeByLimitEndOfStatementClause in class BaseDatastoreAdapteroffset - The offset to return fromcount - The number of items to returnhasOrdering - Whether there is ordering presentpublic String getSequenceCreateStmt(String sequence_name, Integer min, Integer max, Integer start, Integer increment, Integer cache_size)
getSequenceCreateStmt in interface DatastoreAdaptergetSequenceCreateStmt in class BaseDatastoreAdaptersequence_name - Name of the sequencemin - Minimum value for the sequencemax - Maximum value for the sequencestart - Start value for the sequenceincrement - Increment value for the sequencecache_size - Cache size for the sequencepublic String getSequenceNextStmt(String sequence_name)
getSequenceNextStmt in interface DatastoreAdaptergetSequenceNextStmt in class BaseDatastoreAdaptersequence_name - Name of the sequenceCopyright © 2017. All rights reserved.