Class SQLiteAdapter
- java.lang.Object
-
- org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
-
- org.datanucleus.store.rdbms.adapter.SQLiteAdapter
-
- All Implemented Interfaces:
DatastoreAdapter
public class SQLiteAdapter extends BaseDatastoreAdapter
Provides methods for adapting SQL language elements to the SQLite database.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
BaseDatastoreAdapter.ColumnTypeMappings
-
-
Field Summary
Fields Modifier and Type Field Description protected static intMAX_IDENTIFIER_LENGTH-
Fields inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
catalogSeparator, datastoreMajorVersion, datastoreMinorVersion, datastoreProductName, datastoreProductVersion, datastoreRevisionVersion, driverMajorVersion, driverMinorVersion, driverName, driverVersion, identifierQuoteString, 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.DatastoreAdapter
ACCESS_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 Summary
Constructors Constructor Description SQLiteAdapter(DatabaseMetaData metadata)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StringgetAddCandidateKeyStatement(CandidateKey ck, IdentifierFactory factory)Returns the appropriate SQL to add a candidate key to its table.StringgetAddForeignKeyStatement(ForeignKey fk, IdentifierFactory factory)Returns the appropriate SQL to add a foreign key to its table.StringgetAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)Returns the appropriate SQL to add a primary key to its table.StringgetCreateDatabaseStatement(String catalogName, String schemaName)Method to return the statement necessary to create a database with this RDBMS.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)Returns the appropriate SQL to drop the given table.ClassgetIdentityJavaTypeForType(Class type)Return the java type that represents any identity (autoincrement) column value.StringgetIdentityKeyword(org.datanucleus.store.StoreManager storeMgr)Accessor for the autoincrementing keyword for generating DDLs (CREATE TABLEs...).StringgetIdentityLastValueStmt(Table table, String columnName)Accessor for the autoincrementing 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.ClassgetSQLMethodClass(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).SQLTextgetUpdateTableStatement(SQLTable tbl, SQLText setSQL)Method to return the SQLText for an UPDATE TABLE statement.StringgetVendorID()Accessor for the Vendor ID for this datastore.voidinitialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn)Initialise the types for this datastore.protected voidloadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.-
Methods inherited from class org.datanucleus.store.rdbms.adapter.BaseDatastoreAdapter
addSQLTypeForJDBCType, deregisterColumnMappingsForJDBCType, getAdapterTime, getAddColumnStatement, getCatalogName, getCatalogSeparator, getCheckConstraintForValues, getColumnMappingClass, getColumns, getContinuationString, getCreateIndexStatement, getCreateTableStatement, getDatastoreDateStatement, getDatastoreDriverName, getDatastoreDriverVersion, getDatastoreIdentifierMaxLength, getDatastoreProductName, getDatastoreProductVersion, getDefaultSqlTypeForJavaType, getDriverMajorVersion, getDriverMinorVersion, getDropViewStatement, getEscapeCharacter, getEscapePatternExpression, getExistingIndexes, getIdentifierQuoteString, getInsertStatementForNoColumns, getJDBCTypeForName, getMappingManager, getMaxForeignKeys, getMaxIndexes, getMiliseconds, getNameForJDBCType, getNewUUIDFunction, getNumericConversionFunction, getOrderString, getPatternExpressionAnyCharacter, getPatternExpressionZeroMoreCharacters, getPreferredDefaultSQLTypeForJDBCType, getRangeByRowNumberColumn, getRangeByRowNumberColumn2, getRequiredTransactionIsolationLevel, getReservedWords, getSchemaName, getSelectForUpdateText, getSelectNewUUIDStmt, getSelectWithLockOption, getSequenceCreateStmt, getSequenceNextStmt, getSQLOperationClass, getSQLTypeInfoForJdbcType, getSupportedOptions, getSurrogateForEmptyStrings, getTime, getTransactionIsolationForSchemaCreation, getUnlimitedLengthPrecisionValue, initialise, initialiseDatastore, isIdentityFieldDataType, isReservedKeyword, isStatementCancel, isStatementTimeout, isValidPrimaryKeyType, newFKInfo, newRDBMSColumnInfo, newSQLTypeInfo, registerColumnMapping, registerColumnMapping, sequenceExists, supportsOption, supportsQueryFetchSize, supportsTransactionIsolation, toString, validToIndexMapping, validToSelectMappingInStatement
-
-
-
-
Field Detail
-
MAX_IDENTIFIER_LENGTH
protected static final int MAX_IDENTIFIER_LENGTH
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SQLiteAdapter
public SQLiteAdapter(DatabaseMetaData metadata)
Constructor.- Parameters:
metadata- MetaData for the Database
-
-
Method Detail
-
getVendorID
public String getVendorID()
Description copied from interface:DatastoreAdapterAccessor for the Vendor ID for this datastore.- Specified by:
getVendorIDin interfaceDatastoreAdapter- Overrides:
getVendorIDin classBaseDatastoreAdapter- Returns:
- Vendor id for this datastore
-
initialiseTypes
public void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler, org.datanucleus.store.connection.ManagedConnection mconn)Description copied from class:BaseDatastoreAdapterInitialise the types for this datastore.- Specified by:
initialiseTypesin interfaceDatastoreAdapter- Overrides:
initialiseTypesin classBaseDatastoreAdapter- Parameters:
handler- SchemaHandler that we initialise the types formconn- Managed connection to use
-
getCreateDatabaseStatement
public 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 interfaceDatastoreAdapter- Overrides:
getCreateDatabaseStatementin classBaseDatastoreAdapter- Parameters:
catalogName- name of the catalogschemaName- Name of the schema- Returns:
- The DDL statement
-
getDropDatabaseStatement
public 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 interfaceDatastoreAdapter- Overrides:
getDropDatabaseStatementin classBaseDatastoreAdapter- Parameters:
catalogName- Name of the catalogschemaName- Name of the schema- Returns:
- The DDL statement
-
getDropTableStatement
public String getDropTableStatement(Table table)
Description copied from class:BaseDatastoreAdapterReturns the appropriate SQL to drop the given table. It should return something like:DROP TABLE FOO CASCADE
- Specified by:
getDropTableStatementin interfaceDatastoreAdapter- Overrides:
getDropTableStatementin classBaseDatastoreAdapter- Parameters:
table- The table to drop.- Returns:
- The text of the SQL statement.
-
getAddPrimaryKeyStatement
public String getAddPrimaryKeyStatement(PrimaryKey pk, IdentifierFactory factory)
Description copied from class:BaseDatastoreAdapterReturns the appropriate SQL to add a primary key to its table. It should return something like:ALTER TABLE FOO ADD [CONSTRAINT FOO_PK ]PRIMARY KEY (BAR)
- Specified by:
getAddPrimaryKeyStatementin interfaceDatastoreAdapter- Overrides:
getAddPrimaryKeyStatementin classBaseDatastoreAdapter- Parameters:
pk- An object describing the primary key.factory- Identifier factory- Returns:
- The text of the SQL statement.
-
getAddCandidateKeyStatement
public String getAddCandidateKeyStatement(CandidateKey ck, IdentifierFactory factory)
Description copied from class:BaseDatastoreAdapterReturns the appropriate SQL to add a candidate key to its table. It should return something like:ALTER TABLE FOO ADD [CONSTRAINT FOO_CK ]UNIQUE (BAZ)
- Specified by:
getAddCandidateKeyStatementin interfaceDatastoreAdapter- Overrides:
getAddCandidateKeyStatementin classBaseDatastoreAdapter- Parameters:
ck- An object describing the candidate key.factory- Identifier factory- Returns:
- The text of the SQL statement.
-
getAddForeignKeyStatement
public String getAddForeignKeyStatement(ForeignKey fk, IdentifierFactory factory)
Description copied from class:BaseDatastoreAdapterReturns the appropriate SQL to add a foreign key to its table. It should return something like:ALTER TABLE FOO ADD [CONSTRAINT FOO_FK1 ]FOREIGN KEY (BAR, BAZ) REFERENCES ABC (COL1, COL2)
- Specified by:
getAddForeignKeyStatementin interfaceDatastoreAdapter- Overrides:
getAddForeignKeyStatementin classBaseDatastoreAdapter- Parameters:
fk- An object describing the foreign key.factory- Identifier factory- Returns:
- The text of the SQL statement.
-
getUpdateTableStatement
public SQLText getUpdateTableStatement(SQLTable tbl, SQLText setSQL)
Method to return the SQLText for an UPDATE TABLE statement. Returns the SQLText forUPDATE SCH1.TBL1 SET x1 = val1, x2 = val2since SQLite doesn't allow any aliases in UPDATEs.- Specified by:
getUpdateTableStatementin interfaceDatastoreAdapter- Overrides:
getUpdateTableStatementin classBaseDatastoreAdapter- Parameters:
tbl- The primary tablesetSQL- The SQLText for the SET component- Returns:
- SQLText for the update statement
-
getDeleteTableStatement
public String getDeleteTableStatement(SQLTable tbl)
Method to return the basic SQL for a DELETE TABLE statement. Returns the String asDELETE FROM SCH1.TBL1since SQLite doesn't allow any aliases in DELETEs.- Specified by:
getDeleteTableStatementin interfaceDatastoreAdapter- Overrides:
getDeleteTableStatementin classBaseDatastoreAdapter- Parameters:
tbl- The SQLTable to delete- Returns:
- The delete table string
-
getRangeByLimitEndOfStatementClause
public 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 interfaceDatastoreAdapter- Overrides:
getRangeByLimitEndOfStatementClausein classBaseDatastoreAdapter- Parameters:
offset- The offset to return fromcount- The number of items to returnhasOrdering- Whether ordering is present- Returns:
- The SQL to append to allow for ranges using LIMIT.
-
getIdentityLastValueStmt
public String getIdentityLastValueStmt(Table table, String columnName)
Description copied from class:BaseDatastoreAdapterAccessor for the autoincrementing sql statement for this datastore.- Specified by:
getIdentityLastValueStmtin interfaceDatastoreAdapter- Overrides:
getIdentityLastValueStmtin classBaseDatastoreAdapter- Parameters:
table- Name of the table that the autoincrement is forcolumnName- Name of the column that the autoincrement is for- Returns:
- The statement for getting the latest autoincremented key
-
getIdentityKeyword
public String getIdentityKeyword(org.datanucleus.store.StoreManager storeMgr)
Description copied from class:BaseDatastoreAdapterAccessor for the autoincrementing keyword for generating DDLs (CREATE TABLEs...).- Specified by:
getIdentityKeywordin interfaceDatastoreAdapter- Overrides:
getIdentityKeywordin classBaseDatastoreAdapter- Parameters:
storeMgr- The Store Manager- Returns:
- The keyword for a column using autoincrement
-
getIdentityJavaTypeForType
public Class getIdentityJavaTypeForType(Class type)
Description copied from interface:DatastoreAdapterReturn the java type that represents any identity (autoincrement) column value.- Specified by:
getIdentityJavaTypeForTypein interfaceDatastoreAdapter- Overrides:
getIdentityJavaTypeForTypein classBaseDatastoreAdapter- Parameters:
type- The type of the member mapping to an IDENTITY column- Returns:
- The type that should be used in generating the column
-
getSQLMethodClass
public Class getSQLMethodClass(String className, String methodName, org.datanucleus.ClassLoaderResolver clr)
Description copied from interface:DatastoreAdapterAccessor for the SQLMethod class for the query invocation of specified class + method name (if available for this datastore).- Specified by:
getSQLMethodClassin interfaceDatastoreAdapter- Overrides:
getSQLMethodClassin classBaseDatastoreAdapter- Parameters:
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 type- Returns:
- The SQLMethod class (or null if not defined for this datastore).
-
loadColumnMappings
protected void loadColumnMappings(org.datanucleus.plugin.PluginManager mgr, org.datanucleus.ClassLoaderResolver clr)Load all datastore mappings for this RDBMS database.- Overrides:
loadColumnMappingsin classBaseDatastoreAdapter- Parameters:
mgr- the PluginManagerclr- the ClassLoaderResolver
-
-