Class SQLAnywhereAdapter
- java.lang.Object
- 
- org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
- 
- org.datanucleus.store.rdbms.adapter.SQLAnywhereAdapter
 
 
- 
- All Implemented Interfaces:
- DatastoreAdapter
 
 public class SQLAnywhereAdapter extends BaseDatastoreAdapter Provides methods for adapting SQL language elements to the SQL Anywhere database.
- 
- 
Nested Class Summary- 
Nested classes/interfaces inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapterBaseDatastoreAdapter.ColumnTypeMappings
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected intdatastoreBuildVersionSQL Anywhere uses a product version of "major.minor.revision.build"protected intdriverBuildVersionprotected booleanusingjConnect- 
Fields inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdaptercatalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, MAX_IDENTIFIER_LENGTH, maxColumnNameLength, maxConstraintNameLength, maxIndexNameLength, maxTableNameLength, NONRESERVED_WORDS, reservedKeywords, SQL2003_RESERVED_WORDS, SQL92_RESERVED_WORDS, SQL99_RESERVED_WORDS, supportedJdbcTypesById, supportedOptions, unsupportedJdbcTypesById
 - 
Fields inherited from interface org.datanucleus.store.rdbms.adapter.DatastoreAdapterACCESS_PARENTQUERY_IN_SUBQUERY_JOINED, ALTER_TABLE_DROP_CONSTRAINT_SYNTAX, ALTER_TABLE_DROP_FOREIGN_KEY_CONSTRAINT, ANSI_CROSSJOIN_SYNTAX, ANSI_JOIN_SYNTAX, 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, COLUMN_LENGTH_SEMANTICS, CREATE_INDEX_COLUMN_ORDERING, 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_COLUMN_TYPE_SPECIFICATION, IDENTITY_COLUMNS, IDENTITY_KEYS_NULL_SPECIFICATION, IDENTITY_PK_IN_CREATE_TABLE_COLUMN_DEF, INCLUDE_ORDERBY_COLS_IN_SELECT, LOCK_ROW_USING_OPTION_AFTER_FROM, LOCK_ROW_USING_OPTION_WITHIN_JOIN, LOCK_ROW_USING_SELECT_FOR_UPDATE, LOCK_ROW_USING_SELECT_FOR_UPDATE_NOWAIT, 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, RAW_PREFIX_LIKE_STATEMENTS, RESULTSET_TYPE_FORWARD_ONLY, RESULTSET_TYPE_SCROLL_INSENSITIVE, RESULTSET_TYPE_SCROLL_SENSITIVE, RIGHT_OUTER_JOIN, SCHEMAS_IN_TABLE_DEFINITIONS, 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 SummaryConstructors Constructor Description SQLAnywhereAdapter(DatabaseMetaData metadata)Constructor.
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetAddForeignKeyStatement(ForeignKey fk, IdentifierFactory factory)Method to define a foreign key definitionStringgetAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)Method to define a primary key definitionStringgetCreateDatabaseStatement(String catalogName, String schemaName)Method to return the statement necessary to create a database with this RDBMS.StringgetCreateTableStatement(TableImpl table, Column[] columns, Properties props, IdentifierFactory factory)Returns the appropriate SQL to create the given table having the given columns.StringgetDeleteTableStatement(SQLTable tbl)Method to return the basic SQL for a DELETE TABLE statement.StringgetDropDatabaseStatement(String catalogName, String schemaName)Method to return the statement necessary to drop a database with this RDBMS.StringgetDropTableStatement(Table table)Accessor for the DROP TABLE statement for SQL Anywhere SQL Anywhere doesn't support CASCADE so just return a simple 'DROP TABLE table-name'StringgetIdentityKeyword(org.datanucleus.store.StoreManager storeMgr)Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).StringgetIdentityLastValueStmt(Table table, String columnName)Accessor for the auto-increment sql statement for this datastore.StringgetRangeByLimitEndOfStatementClause(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 LIMIT keyword.StringgetSelectNewUUIDStmt()The function to creates a unique value of type uniqueidentifier.StringgetSelectWithLockOption()The option to specify in "SELECT ...StringgetSequenceCreateStmt(String sequence_name, Integer min, Integer max, Integer start, Integer increment, Integer cache_size)Accessor for the sequence statement to create the sequence.StringgetSequenceNextStmt(String sequence_name)Accessor for the statement for getting the next id from the sequence for this datastore.SQLTextgetUpdateTableStatement(SQLTable tbl, SQLText setSQL)Method to return the SQLText for an UPDATE TABLE statement.StringgetVendorID()Accessor for the Vendor ID for this datastore.protected voidloadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.RDBMSColumnInfonewRDBMSColumnInfo(ResultSet rs)Method to create a column info for the current row.SQLTypeInfonewSQLTypeInfo(ResultSet rs)Create a new SQL type info from the current row of the passed ResultSet.booleansequenceExists(Connection conn, String catalogName, String schemaName, String seqName)Determine if a sequence exists- 
Methods inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapteraddSQLTypeForJDBCType, deregisterColumnMappingsForJDBCType, getAdapterTime, getAddCandidateKeyStatement, getAddColumnStatement, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumnMappingClass, getColumns, getContinuationString, getCreateIndexStatement, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreProductName, getDatastoreProductVersion, getDefaultSqlTypeForJavaType, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentifierQuoteString, getIdentityJavaTypeForType, getInsertStatementForNoColumns, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getNumericConversionFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getPreferredDefaultSQLTypeForJDBCType, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getReservedWords, getSchemaName, getSelectForUpdateText, getSQLMethodClass, getSQLOperationClass, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, initialise, initialiseDatastore, initialiseTypes, isIdentityFieldDataType, isReservedKeyword, isStatementCancel, isStatementTimeout, isValidPrimaryKeyType, newFKInfo, registerColumnMapping, registerColumnMapping, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToIndexMapping, validToSelectMappingInStatement
 
- 
 
- 
- 
- 
Constructor Detail- 
SQLAnywhereAdapterpublic SQLAnywhereAdapter(DatabaseMetaData metadata) Constructor.- Parameters:
- metadata- MetaData for the DB
 
 
- 
 - 
Method Detail- 
getVendorIDpublic String getVendorID() Description copied from interface:DatastoreAdapterAccessor for the Vendor ID for this datastore.- Specified by:
- getVendorIDin interface- DatastoreAdapter
- Overrides:
- getVendorIDin class- BaseDatastoreAdapter
- Returns:
- Vendor id for this datastore
 
 - 
getCreateDatabaseStatementpublic String getCreateDatabaseStatement(String catalogName, String schemaName) Description copied from interface:DatastoreAdapterMethod to return the statement necessary to create a database with this RDBMS. Note that some RDBMS don't support this.- Specified by:
- getCreateDatabaseStatementin interface- DatastoreAdapter
- Overrides:
- getCreateDatabaseStatementin class- BaseDatastoreAdapter
- Parameters:
- catalogName- name of the catalog
- schemaName- Name of the schema
- Returns:
- The DDL statement
 
 - 
getDropDatabaseStatementpublic String getDropDatabaseStatement(String catalogName, String schemaName) Description copied from interface:DatastoreAdapterMethod to return the statement necessary to drop a database with this RDBMS. Note that some RDBMS don't support this.- Specified by:
- getDropDatabaseStatementin interface- DatastoreAdapter
- Overrides:
- getDropDatabaseStatementin class- BaseDatastoreAdapter
- Parameters:
- catalogName- Name of the catalog
- schemaName- Name of the schema
- Returns:
- The DDL statement
 
 - 
getCreateTableStatementpublic String getCreateTableStatement(TableImpl table, Column[] columns, Properties props, IdentifierFactory factory) Returns the appropriate SQL to create the given table having the given columns. No column constraints or key definitions should be included. It should return something like:CREATE TABLE FOO ( BAR VARCHAR(30), BAZ INTEGER ) - Specified by:
- getCreateTableStatementin interface- DatastoreAdapter
- Overrides:
- getCreateTableStatementin class- BaseDatastoreAdapter
- Parameters:
- table- The table to create.
- columns- The columns of the table.
- props- Properties for controlling the table creation
- factory- Factory for identifiers
- Returns:
- The text of the SQL statement.
 
 - 
getDropTableStatementpublic String getDropTableStatement(Table table) Accessor for the DROP TABLE statement for SQL Anywhere SQL Anywhere doesn't support CASCADE so just return a simple 'DROP TABLE table-name'- Specified by:
- getDropTableStatementin interface- DatastoreAdapter
- Overrides:
- getDropTableStatementin class- BaseDatastoreAdapter
- Parameters:
- table- The table to drop.
- Returns:
- The DROP TABLE statement
 
 - 
getSelectWithLockOptionpublic String getSelectWithLockOption() The option to specify in "SELECT ... WITH (option)" to lock instances Null if not supported.- Specified by:
- getSelectWithLockOptionin interface- DatastoreAdapter
- Overrides:
- getSelectWithLockOptionin class- BaseDatastoreAdapter
- Returns:
- The option to specify with "SELECT ... WITH (option)"
 
 - 
getDeleteTableStatementpublic String getDeleteTableStatement(SQLTable tbl) Method to return the basic SQL for a DELETE TABLE statement. Returns the String asDELETE MYTABLE FROM MYTABLE t1.- Specified by:
- getDeleteTableStatementin interface- DatastoreAdapter
- Overrides:
- getDeleteTableStatementin class- BaseDatastoreAdapter
- Parameters:
- tbl- The SQLTable to delete
- Returns:
- The delete table string
 
 - 
getAddPrimaryKeyStatementpublic String getAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory) Method to define a primary key definition- Specified by:
- getAddPrimaryKeyStatementin interface- DatastoreAdapter
- Overrides:
- getAddPrimaryKeyStatementin class- BaseDatastoreAdapter
- Parameters:
- pk- An object describing the primary key.
- factory- Identifier factory
- Returns:
- The PK statement
 
 - 
getAddForeignKeyStatementpublic String getAddForeignKeyStatement(ForeignKey fk, IdentifierFactory factory) Method to define a foreign key definition- Specified by:
- getAddForeignKeyStatementin interface- DatastoreAdapter
- Overrides:
- getAddForeignKeyStatementin class- BaseDatastoreAdapter
- Parameters:
- fk- An object describing the foreign key.
- factory- Identifier factory
- Returns:
- The FK statement
 
 - 
getUpdateTableStatementpublic SQLText getUpdateTableStatement(SQLTable tbl, SQLText setSQL) Method to return the SQLText for an UPDATE TABLE statement. Returns the SQLText forUPDATE T1 SET x1 = val1, x2 = val2 FROM MYTBL T1. Override if the datastore doesn't support that standard syntax.- Specified by:
- getUpdateTableStatementin interface- DatastoreAdapter
- Overrides:
- getUpdateTableStatementin class- BaseDatastoreAdapter
- Parameters:
- tbl- The primary table
- setSQL- The SQLText for the SET component
- Returns:
- SQLText for the update statement
 
 - 
newSQLTypeInfopublic SQLTypeInfo newSQLTypeInfo(ResultSet rs) Description copied from interface:DatastoreAdapterCreate a new SQL type info from the current row of the passed ResultSet. Allows an adapter to override particular types where the JDBC driver is known to be buggy.- Specified by:
- newSQLTypeInfoin interface- DatastoreAdapter
- Overrides:
- newSQLTypeInfoin class- BaseDatastoreAdapter
- Parameters:
- rs- ResultSet
- Returns:
- The SQL type info
 
 - 
newRDBMSColumnInfopublic RDBMSColumnInfo newRDBMSColumnInfo(ResultSet rs) Method to create a column info for the current row.- Specified by:
- newRDBMSColumnInfoin interface- DatastoreAdapter
- Overrides:
- newRDBMSColumnInfoin class- BaseDatastoreAdapter
- Parameters:
- rs- ResultSet from DatabaseMetaData.getColumns()
- Returns:
- column info
 
 - 
getIdentityLastValueStmtpublic String getIdentityLastValueStmt(Table table, String columnName) Accessor for the auto-increment sql statement for this datastore.- Specified by:
- getIdentityLastValueStmtin interface- DatastoreAdapter
- Overrides:
- getIdentityLastValueStmtin class- BaseDatastoreAdapter
- Parameters:
- table- Name of the table that the autoincrement is for
- columnName- Name of the column that the autoincrement is for
- Returns:
- The statement for getting the latest auto-increment key
 
 - 
getIdentityKeywordpublic String getIdentityKeyword(org.datanucleus.store.StoreManager storeMgr) Accessor for the auto-increment keyword for generating DDLs (CREATE TABLEs...).- Specified by:
- getIdentityKeywordin interface- DatastoreAdapter
- Overrides:
- getIdentityKeywordin class- BaseDatastoreAdapter
- Parameters:
- storeMgr- The Store Manager
- Returns:
- The keyword for a column using auto-increment
 
 - 
getSequenceCreateStmtpublic 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.- Specified by:
- getSequenceCreateStmtin interface- DatastoreAdapter
- Overrides:
- getSequenceCreateStmtin class- BaseDatastoreAdapter
- Parameters:
- sequence_name- Name of the sequence
- min- Minimum value for the sequence
- max- Maximum value for the sequence
- start- Start value for the sequence
- increment- Increment value for the sequence
- cache_size- Cache size for the sequence
- Returns:
- The statement for getting the next id from the sequence
 
 - 
sequenceExistspublic boolean sequenceExists(Connection conn, String catalogName, String schemaName, String seqName) Determine if a sequence exists- Specified by:
- sequenceExistsin interface- DatastoreAdapter
- Overrides:
- sequenceExistsin class- BaseDatastoreAdapter
- Parameters:
- conn- Connection to database
- catalogName- Database catalog name
- schemaName- Database schema name
- seqName- Name of the sequence
- Returns:
- The statement for getting the next id for the sequence
 
 - 
getSequenceNextStmtpublic String getSequenceNextStmt(String sequence_name) Accessor for the statement for getting the next id from the sequence for this datastore.- Specified by:
- getSequenceNextStmtin interface- DatastoreAdapter
- Overrides:
- getSequenceNextStmtin class- BaseDatastoreAdapter
- Parameters:
- sequence_name- Name of the sequence
- Returns:
- The statement for getting the next id for the sequence
 
 - 
getSelectNewUUIDStmtpublic String getSelectNewUUIDStmt() The function to creates a unique value of type uniqueidentifier. SQL Anywhere generates 36-character hex uuids, with hypens- Specified by:
- getSelectNewUUIDStmtin interface- DatastoreAdapter
- Overrides:
- getSelectNewUUIDStmtin class- BaseDatastoreAdapter
- Returns:
- The SQL statement. e.g. "SELECT newid()"
 
 - 
getRangeByLimitEndOfStatementClausepublic 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 LIMIT keyword.- Specified by:
- getRangeByLimitEndOfStatementClausein interface- DatastoreAdapter
- Overrides:
- getRangeByLimitEndOfStatementClausein class- BaseDatastoreAdapter
- Parameters:
- offset- The offset to return from
- count- The number of items to return
- hasOrdering- Whether ordering is present
- Returns:
- The SQL to append to allow for ranges using LIMIT.
 
 - 
loadColumnMappingsprotected void loadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.- Overrides:
- loadColumnMappingsin class- BaseDatastoreAdapter
- Parameters:
- mgr- the PluginManager
- clr- the ClassLoaderResolver
 
 
- 
 
-