|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.datanucleus.store.rdbms.adapter.DatabaseAdapter
public class DatabaseAdapter
Provides methods for adapting SQL language elements to a specific vendor's database. A database adapter is primarily used to map generic JDBC data types and SQL identifiers to specific types/identifiers suitable for the database in use.
Each database adapter corresponds to a particular combination of database,
database version, driver, and driver version, as provided by the driver's
own metadata. Database adapters cannot be constructed directly, but must be
obtained using the RDBMSAdapterFactory class.
RDBMSAdapterFactory,
DatabaseMetaData| Field Summary | |
|---|---|
protected java.lang.String |
catalogSeparator
The String used to separate catalog and table name. |
protected int |
datastoreMajorVersion
The major version number of the underlying datastore. |
protected int |
datastoreMinorVersion
The minor version number of the underlying datastore. |
protected java.lang.String |
datastoreProductName
The product name of the underlying datastore. |
protected java.lang.String |
datastoreProductVersion
The version number of the underlying datastore as a string. |
protected int |
datastoreRevisionVersion
The revision version number of the underlying datastore. |
protected int |
driverMajorVersion
The major version number of the underlying driver. |
protected int |
driverMinorVersion
The minor version number of the underlying driver. |
protected java.lang.String |
driverName
the JDBC driver name |
protected java.lang.String |
driverVersion
the JDBC driver version |
protected java.lang.String |
identifierQuoteString
The String used to quote identifiers. |
protected static org.datanucleus.util.Localiser |
LOCALISER
|
protected static org.datanucleus.util.Localiser |
LOCALISER_BASE
|
protected int |
maxColumnNameLength
The maximum length to be used for a column name. |
protected int |
maxConstraintNameLength
The maximum length to be used for a table constraint name. |
protected int |
maxIndexNameLength
The maximum length to be used for an index name. |
protected int |
maxTableNameLength
The maximum length to be used for a table name. |
protected java.util.Map<java.lang.String,java.lang.Object> |
properties
Optional properties controlling the configuration. |
protected java.util.HashSet<java.lang.String> |
reservedKeywords
The set of reserved keywords for this datastore. |
protected java.util.Collection<java.lang.String> |
supportedOptions
Supported option names. |
| Fields inherited from interface org.datanucleus.store.mapped.DatastoreAdapter |
|---|
ANALYSIS_METHODS, BIT_IS_REALLY_BOOLEAN, BOOLEAN_COMPARISON, CATALOGS_IN_TABLE_DEFINITIONS, ESCAPE_EXPRESSION_IN_LIKE_PREDICATE, IDENTIFIERS_LOWERCASE, IDENTIFIERS_LOWERCASE_QUOTED, IDENTIFIERS_MIXEDCASE, IDENTIFIERS_MIXEDCASE_QUOTED, IDENTIFIERS_MIXEDCASE_QUOTED_SENSITIVE, IDENTIFIERS_MIXEDCASE_SENSITIVE, IDENTIFIERS_UPPERCASE, IDENTIFIERS_UPPERCASE_QUOTED, IDENTITY_COLUMNS, PROJECTION_IN_TABLE_REFERENCE_JOINS, SCHEMAS_IN_TABLE_DEFINITIONS, SEQUENCES |
| Constructor Summary | |
|---|---|
protected |
DatabaseAdapter(java.sql.DatabaseMetaData metadata)
Constructs a database adapter based on the given JDBC metadata. |
| Method Summary | |
|---|---|
protected void |
addSQLTypeForJDBCType(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.ManagedConnection mconn,
short jdbcTypeNumber,
SQLTypeInfo sqlType,
boolean addIfNotPresent)
Convenience method for use by adapters to add their own fake JDBC/SQL types in where the JDBC driver doesn't provide some type. |
java.lang.String |
cartersianProduct(org.datanucleus.store.mapped.expression.LogicSetExpression Y)
Generates a expression that represents the cartesian product of two sets: X and Y. |
org.datanucleus.store.mapped.expression.ScalarExpression |
concatOperator(org.datanucleus.store.mapped.expression.ScalarExpression operand1,
org.datanucleus.store.mapped.expression.ScalarExpression operand2)
If only one operand expression is of type String, then string conversion is performed on the other operand to produce a string at run time. |
org.datanucleus.store.mapped.expression.BooleanExpression |
endsWithMethod(org.datanucleus.store.mapped.expression.ScalarExpression leftOperand,
org.datanucleus.store.mapped.expression.ScalarExpression rightOperand)
Returns whether this string ends with the specified string. |
long |
getAdapterTime(java.sql.Timestamp time)
|
java.lang.String |
getAddCandidateKeyStatement(CandidateKey ck,
org.datanucleus.store.mapped.IdentifierFactory factory)
Returns the appropriate SQL to add a candidate key to its table. |
java.lang.String |
getAddColumnStatement(org.datanucleus.store.mapped.DatastoreContainerObject table,
Column col)
Accessor for the SQL statement to add a column to a table. |
java.lang.String |
getAddForeignKeyStatement(ForeignKey fk,
org.datanucleus.store.mapped.IdentifierFactory factory)
Returns the appropriate SQL to add a foreign key to its table. |
java.lang.String |
getAddPrimaryKeyStatement(PrimaryKey pk,
org.datanucleus.store.mapped.IdentifierFactory factory)
Returns the appropriate SQL to add a primary key to its table. |
java.lang.String |
getAutoIncrementKeyword()
Accessor for the autoincrementing keyword for generating DDLs. |
java.lang.String |
getAutoIncrementStmt(Table table,
java.lang.String columnName)
Accessor for the autoincrementing sql statement for this datastore. |
java.lang.String |
getCatalogName(java.sql.Connection conn)
Accessor for the Catalog Name for this datastore. |
java.lang.String |
getCatalogSeparator()
Accessor for the catalog separator. |
java.lang.String |
getCheckConstraintForValues(org.datanucleus.store.mapped.DatastoreIdentifier identifier,
java.lang.Object[] values,
boolean nullable)
Creates a CHECK constraint definition based on the given values e.g. |
java.sql.ResultSet |
getColumns(java.sql.Connection conn,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table,
java.lang.String columnNamePattern)
Accessor for table and column information for a catalog/schema in this datastore. |
java.sql.Connection |
getConnection(ConnectionProvider connProvider,
javax.sql.DataSource[] ds,
int isolationLevel)
Accessor for a Connection to the datastore. |
java.lang.String |
getContinuationString()
Continuation string to use where the SQL statement goes over more than 1 line. |
java.lang.String |
getCreateIndexStatement(Index idx,
org.datanucleus.store.mapped.IdentifierFactory factory)
Returns the appropriate SQL to add an index to its table. |
java.lang.String |
getCreateTableStatement(TableImpl table,
Column[] columns,
java.util.Properties props)
Returns the appropriate SQL to create the given table having the given columns. |
org.datanucleus.store.mapped.expression.ScalarExpression |
getCurrentDateMethod(org.datanucleus.store.mapped.expression.QueryExpression qs)
Method to return an expression for the current date in the datastore. |
org.datanucleus.store.mapped.expression.ScalarExpression |
getCurrentTimeMethod(org.datanucleus.store.mapped.expression.QueryExpression qs)
Method to return an expression for the current time in the datastore. |
org.datanucleus.store.mapped.expression.ScalarExpression |
getCurrentTimestampMethod(org.datanucleus.store.mapped.expression.QueryExpression qs)
Method to return an expression for the current timestamp in the datastore. |
java.lang.String |
getDatastoreDateStatement()
Accessor for a statement that will return the statement to use to get the datastore date. |
int |
getDatastoreIdentifierMaxLength(org.datanucleus.store.mapped.IdentifierType identifierType)
Method to return the maximum length of a datastore identifier of the specified type. |
int |
getDatastoreMajorVersion()
|
int |
getDatastoreMinorVersion()
|
int |
getDriverMajorVersion()
Accessor for the JDBC driver major version |
int |
getDriverMinorVersion()
Accessor for the JDBC driver minor version |
java.lang.String |
getDropTableStatement(org.datanucleus.store.mapped.DatastoreContainerObject table)
Returns the appropriate SQL to drop the given table. |
java.lang.String |
getDropViewStatement(ViewImpl view)
Returns the appropriate SQL to drop the given view. |
java.lang.String |
getEscapeCharacter()
The character for escaping characters in pattern expressions. |
org.datanucleus.store.mapped.expression.ScalarExpression |
getEscapedPatternExpression(org.datanucleus.store.mapped.expression.ScalarExpression patternExpression)
The pattern string for representing one character. |
java.lang.String |
getEscapePatternExpression()
The character for escaping characters in pattern expressions. |
java.sql.ResultSet |
getExistingIndexes(java.sql.Connection conn,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table)
Provide the existing indexes in the database for the table. |
java.lang.String |
getIdentifierQuoteString()
Accessor for an identifier quote string. |
java.lang.String |
getInsertStatementForNoColumns(Table table)
Method to return the INSERT statement to use when inserting into a table that has no columns specified. |
protected org.datanucleus.store.mapped.mapping.JavaTypeMapping |
getMapping(java.lang.Class c,
org.datanucleus.store.mapped.expression.ScalarExpression expr)
Convenience accessor for the mapping for the specified class. |
org.datanucleus.store.mapped.mapping.MappingManager |
getMappingManager(org.datanucleus.store.mapped.MappedStoreManager storeMgr)
Accessor for a MappingManager suitable for use with this datastore adapter. |
int |
getMaxForeignKeys()
Accessor for the maximum foreign keys by table permitted for this datastore. |
int |
getMaxIndexes()
Accessor for the maximum indexes by schema permitted for this datastore. |
protected int |
getMiliseconds(long nanos)
|
java.lang.String |
getNewUUIDFunction()
The function to creates a unique value of type uniqueidentifier. |
java.lang.String |
getNonAnsiInnerJoinWhereClause(java.lang.String col1,
java.lang.String col2)
Accessor for the WHERE clause to add to provide an INNER JOIN using non-ANSI syntax. |
java.lang.String |
getNonAnsiLeftOuterJoinWhereClause(java.lang.String col1,
java.lang.String col2)
Accessor for the WHERE clause to add to provide a LEFT OUTER JOIN using non-ANSI syntax. |
java.lang.String |
getNonAnsiRightOuterJoinWhereClause(java.lang.String col1,
java.lang.String col2)
Accessor for the WHERE clause to add to provide a RIGHT OUTER JOIN using non-ANSI syntax. |
java.lang.String |
getNumericConversionFunction()
Accessor for the function to use for converting to numeric. |
org.datanucleus.store.mapped.expression.NumericExpression |
getNumericExpressionForMethod(java.lang.String method,
org.datanucleus.store.mapped.expression.ScalarExpression expr)
Accessor for a numeric expression to represent the method call, with passed argument. |
java.lang.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). |
java.lang.String |
getPatternExpressionAnyCharacter()
The pattern string for representing one character that is expanded in word searches. |
java.lang.String |
getPatternExpressionZeroMoreCharacters()
The pattern string for representing zero or more characters that is expanded in word searches. |
java.lang.String |
getRangeByLimitSelectClause(long offset,
long count)
Method to return the SQL to append to the SELECT clause of a SELECT statement to handle restriction of ranges using the LIMIT keyword. |
java.lang.String |
getRangeByLimitWhereClause(long offset,
long count)
Method to return the SQL to append to the WHERE clause of a SELECT statement to handle restriction of ranges using the LIMIT keyword. |
java.lang.String |
getRangeByRowNumberColumn()
Method to return the column name to use when handling ranges via a rownumber on the select. |
int |
getRequiredTransactionIsolationLevel()
Accessor for the "required" transaction isolation level if it has to be a certain value for this adapter. |
java.lang.String |
getSchemaName(java.sql.Connection conn)
Accessor for the Schema Name for this datastore. |
java.lang.String |
getSelectForUpdateText()
Method returning the text to append to the end of the SELECT to perform the equivalent of "SELECT ... |
java.lang.String |
getSelectNewUUIDStmt()
The function to creates a unique value of type uniqueidentifier. |
java.lang.String |
getSelectWithLockOption()
The option to specify in "SELECT ... |
java.lang.String |
getSequenceCreateStmt(java.lang.String sequence_name,
java.lang.String min,
java.lang.String max,
java.lang.String start,
java.lang.String increment,
java.lang.String cache_size)
Accessor for the sequence create statement for this datastore. |
java.lang.String |
getSequenceNextStmt(java.lang.String sequence_name)
Accessor for the sequence statement to get the next id for this datastore. |
java.util.Collection<java.lang.String> |
getSupportedOptions()
Accessor for the options that are supported by this datastore adapter and the underlying datastore. |
java.lang.String |
getSurrogateForEmptyStrings()
Some databases, Oracle, treats an empty string (0 length) equals null |
protected long |
getTime(long time,
long nanos)
|
int |
getTransactionIsolationForSchemaCreation()
Accessor for the transaction isolation level to use during schema creation. |
int |
getUnlimitedLengthPrecisionValue(SQLTypeInfo typeInfo)
Returns the precision value to be used when creating string columns of "unlimited" length. |
java.lang.Object |
getValueForProperty(java.lang.String name)
Accessor for a property. |
java.lang.String |
getVendorID()
|
org.datanucleus.store.mapped.expression.NumericExpression |
indexOfMethod(org.datanucleus.store.mapped.expression.ScalarExpression source,
org.datanucleus.store.mapped.expression.ScalarExpression str,
org.datanucleus.store.mapped.expression.NumericExpression from)
Returns the appropriate SQL expression for the JDOQL String.indexOf() method. |
void |
initialiseDatastore(java.lang.Object conn)
Creates the auxiliary functions/procedures in the schema |
void |
initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.ManagedConnection mconn)
Initialise the types for this datastore. |
boolean |
isIdentityFieldDataType(java.lang.String typeName)
Verifies if the given typeName is auto incremented by the datastore. |
boolean |
isKeyword(java.lang.String word)
Tests if a given string is a SQL key word. |
boolean |
isReservedKeyword(java.lang.String word)
Tests if a given string is a SQL keyword. |
boolean |
isValidPrimaryKeyType(int datatype)
Method to return whether the specified JDBC type is valid for use in a PrimaryKey. |
java.util.Iterator |
iteratorReservedWords()
Iterator for the reserved words constructed from the method DataBaseMetaData.getSQLKeywords + standard SQL reserved words |
void |
logConfiguration()
Convenience method to log the configuration of this datastore adapter. |
org.datanucleus.store.mapped.expression.StringExpression |
lowerMethod(org.datanucleus.store.mapped.expression.StringExpression str)
|
org.datanucleus.store.mapped.expression.BooleanExpression |
matchesMethod(org.datanucleus.store.mapped.expression.StringExpression text,
org.datanucleus.store.mapped.expression.StringExpression pattern)
Matches this to the argument expression pattern. |
org.datanucleus.store.mapped.expression.NumericExpression |
modOperator(org.datanucleus.store.mapped.expression.ScalarExpression operand1,
org.datanucleus.store.mapped.expression.ScalarExpression operand2)
|
ForeignKeyInfo |
newFKInfo(java.sql.ResultSet rs)
Method to return ForeignKeyInfo for the current row of the ResultSet which will have been obtained from a call to DatabaseMetaData.getImportedKeys() or DatabaseMetaData.getExportedKeys(). |
org.datanucleus.store.mapped.expression.QueryExpression |
newQueryStatement(org.datanucleus.store.mapped.DatastoreContainerObject table,
org.datanucleus.store.mapped.DatastoreIdentifier rangeVar,
org.datanucleus.ClassLoaderResolver clr)
Accessor for a new query statement. |
RDBMSColumnInfo |
newRDBMSColumnInfo(java.sql.ResultSet rs)
Create a new column info from the current row of the passed ResultSet. |
SQLTypeInfo |
newSQLTypeInfo(java.sql.ResultSet rs)
Create a new SQL type info from the current row of the passed ResultSet. |
org.datanucleus.store.mapped.expression.LogicSetExpression |
newTableExpression(org.datanucleus.store.mapped.expression.QueryExpression qs,
org.datanucleus.store.mapped.DatastoreContainerObject table,
org.datanucleus.store.mapped.DatastoreIdentifier rangeVar)
Returns a new TableExpression object appropriate for this DBMS. |
protected java.util.Set |
parseKeywordList(java.lang.String list)
Utility method to parse a list of keywords and split them out into words. |
void |
removeUnsupportedMappings(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.ManagedConnection mconn)
Remove all mappings from the mapping manager that don't have a datastore type initialised. |
void |
setProperties(java.util.Map<java.lang.String,java.lang.Object> props)
Set any properties controlling how the adapter is configured. |
org.datanucleus.store.mapped.expression.BooleanExpression |
startsWithMethod(org.datanucleus.store.mapped.expression.ScalarExpression source,
org.datanucleus.store.mapped.expression.ScalarExpression str)
Method to handle the starts with operation. |
org.datanucleus.store.mapped.expression.StringExpression |
substringMethod(org.datanucleus.store.mapped.expression.StringExpression str,
org.datanucleus.store.mapped.expression.NumericExpression begin)
Returns the appropriate SQL expression for the JDOQL String.substring(str,begin) method. |
org.datanucleus.store.mapped.expression.StringExpression |
substringMethod(org.datanucleus.store.mapped.expression.StringExpression str,
org.datanucleus.store.mapped.expression.NumericExpression begin,
org.datanucleus.store.mapped.expression.NumericExpression end)
Returns the appropriate SQL expression for the JDOQL String.substring(str,begin,end) method. |
boolean |
supportsOption(java.lang.String option)
Accessor for whether the supplied option is supported. |
boolean |
supportsQueryFetchSize(int size)
Whether the datastore will support setting the query fetch size to the supplied value. |
boolean |
supportsTransactionIsolation(int level)
Accessor for whether this database adapter supports the specified transaction isolation. |
org.datanucleus.store.mapped.expression.NumericExpression |
toNumericExpression(org.datanucleus.store.mapped.expression.CharacterExpression expr)
Returns the appropriate expression for the (int)'A' expression. |
java.lang.String |
toString()
|
org.datanucleus.store.mapped.expression.StringExpression |
toStringExpression(org.datanucleus.store.mapped.expression.NumericExpression expr)
A String conversion that converts a numeric expression to string. |
org.datanucleus.store.mapped.expression.StringExpression |
toStringExpression(org.datanucleus.store.mapped.expression.StringLiteral expr)
A String conversion that converts a String literal to String expression. |
org.datanucleus.store.mapped.expression.StringExpression |
translateMethod(org.datanucleus.store.mapped.expression.ScalarExpression expr,
org.datanucleus.store.mapped.expression.ScalarExpression toExpr,
org.datanucleus.store.mapped.expression.ScalarExpression fromExpr)
Method to translate all chars in this expression to the fromExpr which
corresponds to toExpr. |
org.datanucleus.store.mapped.expression.StringExpression |
trimMethod(org.datanucleus.store.mapped.expression.StringExpression str,
boolean leading,
boolean trailing)
Returns the appropriate SQL expression for a query "trim" method. |
org.datanucleus.store.mapped.expression.StringExpression |
upperMethod(org.datanucleus.store.mapped.expression.StringExpression str)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected static final org.datanucleus.util.Localiser LOCALISER_BASE
protected static final org.datanucleus.util.Localiser LOCALISER
protected final java.util.HashSet<java.lang.String> reservedKeywords
protected java.lang.String datastoreProductName
protected java.lang.String datastoreProductVersion
protected int datastoreMajorVersion
protected int datastoreMinorVersion
protected int datastoreRevisionVersion
protected java.lang.String identifierQuoteString
protected java.util.Collection<java.lang.String> supportedOptions
protected java.lang.String driverName
protected java.lang.String driverVersion
protected int driverMajorVersion
protected int driverMinorVersion
protected int maxTableNameLength
protected int maxConstraintNameLength
protected int maxIndexNameLength
protected int maxColumnNameLength
protected java.lang.String catalogSeparator
protected java.util.Map<java.lang.String,java.lang.Object> properties
| Constructor Detail |
|---|
protected DatabaseAdapter(java.sql.DatabaseMetaData metadata)
metadata - the database metadata.| Method Detail |
|---|
public void initialiseDatastore(java.lang.Object conn)
initialiseDatastore in interface org.datanucleus.store.mapped.DatastoreAdapterconn - the connection to the datastore
public void initialiseTypes(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.ManagedConnection mconn)
initialiseTypes in interface org.datanucleus.store.mapped.DatastoreAdapterhandler - SchemaHandler that we initialise the types formconn - Managed connection to usepublic void setProperties(java.util.Map<java.lang.String,java.lang.Object> props)
setProperties in interface org.datanucleus.store.mapped.DatastoreAdapterprops - The propertiespublic java.lang.Object getValueForProperty(java.lang.String name)
name - Name of the property
public void removeUnsupportedMappings(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.ManagedConnection mconn)
removeUnsupportedMappings in interface org.datanucleus.store.mapped.DatastoreAdapterhandler - Schema handlermconn - Managed connection to use
protected void addSQLTypeForJDBCType(org.datanucleus.store.schema.StoreSchemaHandler handler,
org.datanucleus.ManagedConnection mconn,
short jdbcTypeNumber,
SQLTypeInfo sqlType,
boolean addIfNotPresent)
handler - the schema handler managing the typesmconn - Connection to usejdbcTypeNumber - The JDBC typesqlType - The type info to useaddIfNotPresent - whether to add only if JDBC type not presentpublic boolean supportsTransactionIsolation(int level)
supportsTransactionIsolation in interface RDBMSAdapterlevel - The isolation level (as defined by Connection enums).
public void logConfiguration()
logConfiguration in interface RDBMSAdapterpublic java.util.Collection<java.lang.String> getSupportedOptions()
getSupportedOptions in interface org.datanucleus.store.mapped.DatastoreAdapterpublic boolean supportsOption(java.lang.String option)
supportsOption in interface org.datanucleus.store.mapped.DatastoreAdapteroption - The option
public org.datanucleus.store.mapped.mapping.MappingManager getMappingManager(org.datanucleus.store.mapped.MappedStoreManager storeMgr)
getMappingManager in interface org.datanucleus.store.mapped.DatastoreAdapterstoreMgr - The StoreManager
public long getAdapterTime(java.sql.Timestamp time)
getAdapterTime in interface org.datanucleus.store.mapped.DatastoreAdapter
protected long getTime(long time,
long nanos)
protected int getMiliseconds(long nanos)
public int getDatastoreMajorVersion()
getDatastoreMajorVersion in interface org.datanucleus.store.mapped.DatastoreAdapterpublic int getDatastoreMinorVersion()
getDatastoreMinorVersion in interface org.datanucleus.store.mapped.DatastoreAdapterpublic boolean supportsQueryFetchSize(int size)
supportsQueryFetchSize in interface org.datanucleus.store.mapped.DatastoreAdaptersize - The value to set to
public java.lang.String getVendorID()
getVendorID in interface org.datanucleus.store.mapped.DatastoreAdapterpublic boolean isReservedKeyword(java.lang.String word)
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 org.datanucleus.store.mapped.DatastoreAdapterword - The word to test.
true if word is a SQL key word for this DBMS.
The comparison is case-insensitive.SQLConstantspublic java.lang.String getIdentifierQuoteString()
getIdentifierQuoteString in interface org.datanucleus.store.mapped.DatastoreAdapterpublic int getDriverMajorVersion()
public int getDriverMinorVersion()
public int getDatastoreIdentifierMaxLength(org.datanucleus.store.mapped.IdentifierType identifierType)
getDatastoreIdentifierMaxLength in interface org.datanucleus.store.mapped.DatastoreAdapteridentifierType - Type of identifier (see IdentifierFactory.TABLE, etc)
public int getMaxForeignKeys()
getMaxForeignKeys in interface org.datanucleus.store.mapped.DatastoreAdapterpublic int getMaxIndexes()
getMaxIndexes in interface org.datanucleus.store.mapped.DatastoreAdapterpublic java.util.Iterator iteratorReservedWords()
iteratorReservedWords in interface RDBMSAdapterpublic RDBMSColumnInfo newRDBMSColumnInfo(java.sql.ResultSet rs)
RDBMSAdapter
newRDBMSColumnInfo in interface RDBMSAdapterrs - Result Set
public SQLTypeInfo newSQLTypeInfo(java.sql.ResultSet rs)
RDBMSAdapter
newSQLTypeInfo in interface RDBMSAdapterrs - ResultSet
public ForeignKeyInfo newFKInfo(java.sql.ResultSet rs)
newFKInfo in interface RDBMSAdapterrs - The result set returned from DatabaseMetaData.get??portedKeys()
protected java.util.Set parseKeywordList(java.lang.String list)
list - The comma-separated list of keywords.
public boolean isKeyword(java.lang.String word)
The list of key words tested against is defined to contain all SQL/92 key
words, 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.
word - The word to test.
true if word is a SQL key word for
this DBMS. The comparison is case-insensitive.SQLConstantspublic int getUnlimitedLengthPrecisionValue(SQLTypeInfo typeInfo)
getUnlimitedLengthPrecisionValue in interface RDBMSAdaptertypeInfo - the typeInfo object for which the precision value is needed.
public boolean isValidPrimaryKeyType(int datatype)
isValidPrimaryKeyType in interface RDBMSAdapterdatatype - The JDBC type.
public java.lang.String getSurrogateForEmptyStrings()
getSurrogateForEmptyStrings in interface RDBMSAdapterpublic int getTransactionIsolationForSchemaCreation()
getTransactionIsolationForSchemaCreation in interface RDBMSAdapterpublic int getRequiredTransactionIsolationLevel()
getRequiredTransactionIsolationLevel in interface RDBMSAdapter
public java.sql.Connection getConnection(ConnectionProvider connProvider,
javax.sql.DataSource[] ds,
int isolationLevel)
throws java.sql.SQLException
getConnection in interface RDBMSAdapterconnProvider - the ConnectionProviderds - The data source. Possible to have more than one datasource for failoverisolationLevel - The level of transaction isolation
java.sql.SQLException - Thrown when an error occurs in the creation.
public java.lang.String getCatalogName(java.sql.Connection conn)
throws java.sql.SQLException
getCatalogName in interface RDBMSAdapterconn - Connection to the datastore
java.sql.SQLException - Thrown if error occurs in determining the catalog name.
public java.lang.String getSchemaName(java.sql.Connection conn)
throws java.sql.SQLException
getSchemaName in interface RDBMSAdapterconn - Connection to the datastore
java.sql.SQLException - Thrown if error occurs in determining the schema name.public java.lang.String getCatalogSeparator()
getCatalogSeparator in interface org.datanucleus.store.mapped.DatastoreAdapterpublic java.lang.String getSelectWithLockOption()
getSelectWithLockOption in interface RDBMSAdapterpublic java.lang.String getSelectForUpdateText()
public java.lang.String getSelectNewUUIDStmt()
getSelectNewUUIDStmt in interface RDBMSAdapterpublic java.lang.String getNewUUIDFunction()
public java.lang.String getNonAnsiInnerJoinWhereClause(java.lang.String col1,
java.lang.String col2)
getNonAnsiInnerJoinWhereClause in interface RDBMSAdaptercol1 - The main datastore columncol2 - The secondary column to join to
public java.lang.String getNonAnsiLeftOuterJoinWhereClause(java.lang.String col1,
java.lang.String col2)
getNonAnsiLeftOuterJoinWhereClause in interface RDBMSAdaptercol1 - The main datastore columncol2 - The secondary column to join to
public java.lang.String getNonAnsiRightOuterJoinWhereClause(java.lang.String col1,
java.lang.String col2)
col1 - The main datastore columncol2 - The secondary column to join to
public java.lang.String getAutoIncrementStmt(Table table,
java.lang.String columnName)
getAutoIncrementStmt in interface RDBMSAdaptertable - Name of the table that the autoincrement is forcolumnName - Name of the column that the autoincrement is for
public java.lang.String getAutoIncrementKeyword()
getAutoIncrementKeyword in interface RDBMSAdapterpublic boolean isIdentityFieldDataType(java.lang.String typeName)
typeName is auto incremented by the datastore.
isIdentityFieldDataType in interface org.datanucleus.store.mapped.DatastoreAdaptertypeName - the datastore type name
typeName has values auto incremented by the datastorepublic java.lang.String getInsertStatementForNoColumns(Table table)
getInsertStatementForNoColumns in interface RDBMSAdaptertable - The table
public java.lang.String getSequenceCreateStmt(java.lang.String sequence_name,
java.lang.String min,
java.lang.String max,
java.lang.String start,
java.lang.String increment,
java.lang.String cache_size)
getSequenceCreateStmt in interface RDBMSAdaptersequence_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 sequence
public java.lang.String getSequenceNextStmt(java.lang.String sequence_name)
getSequenceNextStmt in interface RDBMSAdaptersequence_name - Name of the sequence
public java.sql.ResultSet getExistingIndexes(java.sql.Connection conn,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table)
throws java.sql.SQLException
getExistingIndexes in interface RDBMSAdapterconn - the JDBC connectioncatalog - the catalog nameschema - the schema nametable - the table name
java.sql.SQLException
public java.lang.String getCreateTableStatement(TableImpl table,
Column[] columns,
java.util.Properties props)
CREATE TABLE FOO ( BAR VARCHAR(30), BAZ INTEGER )
getCreateTableStatement in interface RDBMSAdaptertable - The table to create.columns - The columns of the table.props - Properties for controlling the table creation
public java.lang.String getAddPrimaryKeyStatement(PrimaryKey pk,
org.datanucleus.store.mapped.IdentifierFactory factory)
ALTER TABLE FOO ADD CONSTRAINT FOO_PK PRIMARY KEY (BAR) ALTER TABLE FOO ADD PRIMARY KEY (BAR)
getAddPrimaryKeyStatement in interface RDBMSAdapterpk - An object describing the primary key.factory - Identifier factory
public java.lang.String getAddCandidateKeyStatement(CandidateKey ck,
org.datanucleus.store.mapped.IdentifierFactory factory)
ALTER TABLE FOO ADD CONSTRAINT FOO_CK UNIQUE (BAZ) ALTER TABLE FOO ADD UNIQUE (BAZ)
getAddCandidateKeyStatement in interface RDBMSAdapterck - An object describing the candidate key.factory - Identifier factory
public java.lang.String getAddForeignKeyStatement(ForeignKey fk,
org.datanucleus.store.mapped.IdentifierFactory factory)
ALTER TABLE FOO ADD CONSTRAINT FOO_FK1 FOREIGN KEY (BAR, BAZ) REFERENCES ABC (COL1, COL2) ALTER TABLE FOO ADD FOREIGN KEY (BAR, BAZ) REFERENCES ABC (COL1, COL2)
getAddForeignKeyStatement in interface RDBMSAdapterfk - An object describing the foreign key.factory - Identifier factory
public java.lang.String getAddColumnStatement(org.datanucleus.store.mapped.DatastoreContainerObject table,
Column col)
getAddColumnStatement in interface RDBMSAdaptertable - The tablecol - The column
public java.lang.String getCreateIndexStatement(Index idx,
org.datanucleus.store.mapped.IdentifierFactory factory)
CREATE INDEX FOO_N1 ON FOO (BAR,BAZ) [Extended Settings] CREATE UNIQUE INDEX FOO_U1 ON FOO (BAR,BAZ) [Extended Settings]
getCreateIndexStatement in interface RDBMSAdapteridx - An object describing the index.factory - Identifier factory
public java.lang.String getCheckConstraintForValues(org.datanucleus.store.mapped.DatastoreIdentifier identifier,
java.lang.Object[] values,
boolean nullable)
CHECK ("COLUMN" IN ('VAL1','VAL2') OR "COLUMN" IS NULL)
getCheckConstraintForValues in interface RDBMSAdapteridentifier - Column identifiervalues - Valid valuesnullable - whether the datastore identifier is null
public java.lang.String getDropTableStatement(org.datanucleus.store.mapped.DatastoreContainerObject table)
DROP TABLE FOO CASCADE
getDropTableStatement in interface RDBMSAdaptertable - The table to drop.
public java.lang.String getDropViewStatement(ViewImpl view)
DROP VIEW FOO
getDropViewStatement in interface RDBMSAdapterview - The view to drop.
public java.lang.String getRangeByLimitSelectClause(long offset,
long count)
getRangeByLimitSelectClause in interface RDBMSAdapteroffset - The offset to return fromcount - The number of items to return
public java.lang.String getRangeByLimitWhereClause(long offset,
long count)
getRangeByLimitWhereClause in interface RDBMSAdapteroffset - The offset to return fromcount - The number of items to return
public java.lang.String getRangeByRowNumberColumn()
getRangeByRowNumberColumn in interface RDBMSAdapter
public java.sql.ResultSet getColumns(java.sql.Connection conn,
java.lang.String catalog,
java.lang.String schema,
java.lang.String table,
java.lang.String columnNamePattern)
throws java.sql.SQLException
getColumns in interface RDBMSAdapterconn - Connection to usecatalog - The catalog (null if none)schema - The schema (null if none)table - The table (null if all)columnNamePattern - The column name (null if all)
java.sql.SQLException - Thrown if an error occurspublic java.lang.String toString()
toString in interface org.datanucleus.store.mapped.DatastoreAdaptertoString in class java.lang.Objectpublic java.lang.String getDatastoreDateStatement()
getDatastoreDateStatement in interface RDBMSAdapterpublic org.datanucleus.store.mapped.expression.ScalarExpression getCurrentDateMethod(org.datanucleus.store.mapped.expression.QueryExpression qs)
getCurrentDateMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterqs - QueryExpression
public org.datanucleus.store.mapped.expression.ScalarExpression getCurrentTimeMethod(org.datanucleus.store.mapped.expression.QueryExpression qs)
getCurrentTimeMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterqs - QueryExpression
public org.datanucleus.store.mapped.expression.ScalarExpression getCurrentTimestampMethod(org.datanucleus.store.mapped.expression.QueryExpression qs)
getCurrentTimestampMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterqs - QueryExpression
public org.datanucleus.store.mapped.expression.NumericExpression modOperator(org.datanucleus.store.mapped.expression.ScalarExpression operand1,
org.datanucleus.store.mapped.expression.ScalarExpression operand2)
modOperator in interface org.datanucleus.store.mapped.DatastoreAdaptermodOperator in interface org.datanucleus.store.mapped.expression.ExpressionOperatorAdapter
protected final org.datanucleus.store.mapped.mapping.JavaTypeMapping getMapping(java.lang.Class c,
org.datanucleus.store.mapped.expression.ScalarExpression expr)
c - Java typeexpr - the ScalarExpression
public org.datanucleus.store.mapped.expression.ScalarExpression getEscapedPatternExpression(org.datanucleus.store.mapped.expression.ScalarExpression patternExpression)
getEscapedPatternExpression in interface org.datanucleus.store.mapped.expression.ExpressionPatternAdapterpatternExpression - The expression that represents one character for a matcher/parser in the database
public java.lang.String getPatternExpressionAnyCharacter()
getPatternExpressionAnyCharacter in interface org.datanucleus.store.mapped.expression.ExpressionPatternAdapterpublic java.lang.String getPatternExpressionZeroMoreCharacters()
getPatternExpressionZeroMoreCharacters in interface org.datanucleus.store.mapped.expression.ExpressionPatternAdapterpublic java.lang.String getEscapePatternExpression()
getEscapePatternExpression in interface org.datanucleus.store.mapped.expression.ExpressionPatternAdapterpublic java.lang.String getEscapeCharacter()
getEscapeCharacter in interface org.datanucleus.store.mapped.expression.ExpressionPatternAdapterpublic java.lang.String getContinuationString()
public java.lang.String cartersianProduct(org.datanucleus.store.mapped.expression.LogicSetExpression Y)
X and Y.
Actually, X is not generated to the expression.
cartersianProduct in interface org.datanucleus.store.mapped.expression.ExpressionLogicSetAdapterY - right hand set
public org.datanucleus.store.mapped.expression.QueryExpression newQueryStatement(org.datanucleus.store.mapped.DatastoreContainerObject table,
org.datanucleus.store.mapped.DatastoreIdentifier rangeVar,
org.datanucleus.ClassLoaderResolver clr)
newQueryStatement in interface org.datanucleus.store.mapped.DatastoreAdaptertable - The table to queryrangeVar - A range variable for the queryclr - The ClassLoaderResolver
public org.datanucleus.store.mapped.expression.LogicSetExpression newTableExpression(org.datanucleus.store.mapped.expression.QueryExpression qs,
org.datanucleus.store.mapped.DatastoreContainerObject table,
org.datanucleus.store.mapped.DatastoreIdentifier rangeVar)
newTableExpression in interface RDBMSAdapterqs - The query statement in which the table expression will be included.table - The main table in the expression.rangeVar - The SQL alias, or "range variable", to assign to the expression or to the main table.
public java.lang.String getNumericConversionFunction()
public org.datanucleus.store.mapped.expression.NumericExpression toNumericExpression(org.datanucleus.store.mapped.expression.CharacterExpression expr)
(int)'A' expression.
In SQL, it should compile something like:
ASCII('A')
toNumericExpression in interface org.datanucleus.store.mapped.expression.ExpressionConversionAdapterexpr - The CharacterExpression
public org.datanucleus.store.mapped.expression.StringExpression translateMethod(org.datanucleus.store.mapped.expression.ScalarExpression expr,
org.datanucleus.store.mapped.expression.ScalarExpression toExpr,
org.datanucleus.store.mapped.expression.ScalarExpression fromExpr)
fromExpr which
corresponds to toExpr.
translateMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapter
public org.datanucleus.store.mapped.expression.NumericExpression getNumericExpressionForMethod(java.lang.String method,
org.datanucleus.store.mapped.expression.ScalarExpression expr)
getNumericExpressionForMethod in interface org.datanucleus.store.mapped.DatastoreAdaptermethod - The method (case insensitive)expr - The argument to the method
public org.datanucleus.store.mapped.expression.BooleanExpression endsWithMethod(org.datanucleus.store.mapped.expression.ScalarExpression leftOperand,
org.datanucleus.store.mapped.expression.ScalarExpression rightOperand)
endsWithMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterleftOperand - the source stringrightOperand - The string to compare against.
public org.datanucleus.store.mapped.expression.BooleanExpression matchesMethod(org.datanucleus.store.mapped.expression.StringExpression text,
org.datanucleus.store.mapped.expression.StringExpression pattern)
matchesMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdaptertext - The argument to the length() method.pattern - The literal expression with the pattern.
public org.datanucleus.store.mapped.expression.StringExpression toStringExpression(org.datanucleus.store.mapped.expression.NumericExpression expr)
CAST(999999 AS VARCHAR(4000))
toStringExpression in interface org.datanucleus.store.mapped.expression.ExpressionConversionAdapterexpr - The NumericExpression
public org.datanucleus.store.mapped.expression.StringExpression toStringExpression(org.datanucleus.store.mapped.expression.StringLiteral expr)
CAST(999999 AS VARCHAR(4000))
toStringExpression in interface org.datanucleus.store.mapped.expression.ExpressionConversionAdapterexpr - The NumericExpression
public org.datanucleus.store.mapped.expression.StringExpression substringMethod(org.datanucleus.store.mapped.expression.StringExpression str,
org.datanucleus.store.mapped.expression.NumericExpression begin)
SUBSTRING(str FROM begin)Note that the value of begin is base 0(Java-style), while most SQL string functions use base 1.
substringMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterstr - The first argument to the substring() method.begin - The second argument to the substring() method.
public org.datanucleus.store.mapped.expression.StringExpression lowerMethod(org.datanucleus.store.mapped.expression.StringExpression str)
lowerMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterpublic org.datanucleus.store.mapped.expression.StringExpression upperMethod(org.datanucleus.store.mapped.expression.StringExpression str)
upperMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapter
public org.datanucleus.store.mapped.expression.StringExpression trimMethod(org.datanucleus.store.mapped.expression.StringExpression str,
boolean leading,
boolean trailing)
TRIM(str)
trimMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterstr - The first argument to the trim() method.leading - Whether to trim leading spacestrailing - Whether to trim trailing spaces
public org.datanucleus.store.mapped.expression.StringExpression substringMethod(org.datanucleus.store.mapped.expression.StringExpression str,
org.datanucleus.store.mapped.expression.NumericExpression begin,
org.datanucleus.store.mapped.expression.NumericExpression end)
Note that the value of begin is base 0 (Java-style), while most SQL string functions use base 1. Note also that an end position is given, while most SQL substring functions take a length.SUBSTRING(str FROM begin FOR len)
substringMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdapterstr - The first argument to the substring() method.begin - The second argument to the substring() method.end - The third argument to the substring() method.
public org.datanucleus.store.mapped.expression.BooleanExpression startsWithMethod(org.datanucleus.store.mapped.expression.ScalarExpression source,
org.datanucleus.store.mapped.expression.ScalarExpression str)
source LIKE str%
startsWithMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdaptersource - The expression with the searched stringstr - The expression for the search string
public org.datanucleus.store.mapped.expression.NumericExpression indexOfMethod(org.datanucleus.store.mapped.expression.ScalarExpression source,
org.datanucleus.store.mapped.expression.ScalarExpression str,
org.datanucleus.store.mapped.expression.NumericExpression from)
since LOCATE returns the first character as position 1. Similarly the "pos" is based on the first position being 1.LOCATE(str, substr [,pos])-1
indexOfMethod in interface org.datanucleus.store.mapped.expression.ExpressionMethodAdaptersource - The expression we want to search.str - The argument to the indexOf() method.from - The from position
public java.lang.String getOperatorConcat()
getOperatorConcat in interface org.datanucleus.store.mapped.expression.ExpressionOperatorAdapter
public org.datanucleus.store.mapped.expression.ScalarExpression concatOperator(org.datanucleus.store.mapped.expression.ScalarExpression operand1,
org.datanucleus.store.mapped.expression.ScalarExpression operand2)
If only one operand expression is of type String, then string conversion is performed on the other operand to produce a string at run time. The result is a reference to a String object (newly created, unless the expression is a compile-time constant expression (�15.28))that is the concatenation of the two operand strings. The characters of the left-hand operand precede the characters of the right-hand operand in the newly created string. If an operand of type String is null, then the string "null" is used instead of that operand. "null" is used instead of that operand.
Concatenates two or more character or binary strings, columns, or a combination of strings and column names into one expression (a string operator).
concatOperator in interface org.datanucleus.store.mapped.expression.ExpressionOperatorAdapteroperand1 - the left expressionoperand2 - the right expression
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||