org.apache.openjpa.jdbc.sql
Class DBDictionary

java.lang.Object
  extended by org.apache.openjpa.jdbc.sql.DBDictionary
All Implemented Interfaces:
JoinSyntaxes, Configurable, ConnectionDecorator, LoggingConnectionDecorator.SQLWarningHandler
Direct Known Subclasses:
AbstractDB2Dictionary, AbstractSQLServerDictionary, AccessDictionary, CacheDictionary, EmpressDictionary, FoxProDictionary, H2Dictionary, HSQLDictionary, InformixDictionary, InterbaseDictionary, JDataStoreDictionary, MySQLDictionary, OracleDictionary, PointbaseDictionary, PostgresDictionary

public class DBDictionary
extends Object
implements Configurable, ConnectionDecorator, JoinSyntaxes, LoggingConnectionDecorator.SQLWarningHandler

Class which allows the creation of SQL dynamically, in a database agnostic fashion. Subclass for the nuances of different data stores.


Nested Class Summary
static class DBDictionary.SerializedData
          Used by some mappings to represent data that has already been serialized so that we don't have to serialize multiple times.
 
Field Summary
 boolean allowsAliasInBulkClause
           
 String arrayTypeName
           
 String autoAssignClause
           
 String autoAssignTypeName
           
 int batchLimit
           
 String bigintTypeName
           
 String binaryTypeName
           
 String bitLengthFunction
           
 String bitTypeName
           
 int blobBufferSize
           
 String blobTypeName
           
 String booleanTypeName
           
 String castFunction
           
 String catalogSeparator
           
protected static int CENTI
           
 int characterColumnSize
           
 String charTypeName
           
 int clobBufferSize
           
 String clobTypeName
           
 String closePoolSQL
           
 String concatenateDelimiter
           
 String concatenateFunction
           
protected  JDBCConfiguration conf
           
protected  boolean connected
           
static String CONS_NAME_AFTER
           
static String CONS_NAME_BEFORE
           
static String CONS_NAME_MID
           
 String constraintNameMode
           
 boolean createPrimaryKeys
           
 String crossJoinClause
           
 String currentDateFunction
           
 String currentTimeFunction
           
 String currentTimestampFunction
           
 int datePrecision
           
 String dateTypeName
           
protected static int DECI
           
 String decimalTypeName
           
 String distinctCountColumnSeparator
           
 String distinctTypeName
           
 String doubleTypeName
           
 String driverVendor
           
 String dropTableSQL
           
 String fixedSizeTypeNames
           
protected  Set fixedSizeTypeNameSet
           
 String floatTypeName
           
 String forUpdateClause
           
 String getStringVal
           
 int inClauseLimit
           
 String initializationSQL
           
 String innerJoinClause
           
 String integerTypeName
           
protected  boolean isJDBC3
           
 String javaObjectTypeName
           
 int joinSyntax
           
 String lastGeneratedKeyQuery
           
protected  Log log
           
 String longVarbinaryTypeName
           
 String longVarcharTypeName
           
 int maxAutoAssignNameLength
           
 int maxColumnNameLength
           
 int maxConstraintNameLength
           
 int maxEmbeddedBlobSize
           
 int maxEmbeddedClobSize
           
 int maxIndexesPerTable
           
 int maxIndexNameLength
           
 int maxTableNameLength
           
protected static int MICRO
           
protected static int MILLI
           
protected static int NAME_ANY
           
protected static int NAME_SEQUENCE
           
protected static int NAME_TABLE
           
protected static int NANO
           
 int nativeSequenceType
           
 String nextSequenceQuery
           
protected static int NO_BATCH
           
 String nullTypeName
           
 String numericTypeName
           
 String otherTypeName
           
 String outerJoinClause
           
 String platform
           
protected static int RANGE_POST_DISTINCT
           
protected static int RANGE_POST_LOCK
           
protected static int RANGE_POST_SELECT
           
protected static int RANGE_PRE_DISTINCT
           
 int rangePosition
           
 String realTypeName
           
 String refTypeName
           
 boolean reportsSuccessNoInfoOnBatchUpdates
           
 boolean requiresAliasForSubselect
           
 boolean requiresAutoCommitForMetaData
           
 boolean requiresCastForComparisons
           
 boolean requiresCastForMathFunctions
           
 boolean requiresConditionForCrossJoin
           
 boolean requiresTargetForDelete
           
 String reservedWords
           
protected  Set reservedWordSet
           
static String SCHEMA_CASE_LOWER
           
static String SCHEMA_CASE_PRESERVE
           
static String SCHEMA_CASE_UPPER
           
 String schemaCase
           
 String searchStringEscape
           
protected static int SEC
           
 String selectWords
           
protected  Set selectWordSet
          If a native query begins with any of the values found here then it will be treated as a select statement.
 String sequenceNameSQL
           
 String sequenceSchemaSQL
           
 String sequenceSQL
           
 boolean setStringRightTruncationOn
           
 boolean simulateLocking
           
 String smallintTypeName
           
 Map<Integer,Set<String>> sqlStateCodes
           
 boolean storageLimitationsFatal
           
 boolean storeCharsAsNumbers
           
 boolean storeLargeNumbersAsStrings
           
 String stringLengthFunction
           
 String structTypeName
           
 String substringFunctionName
           
 boolean supportsAlterTableWithAddColumn
           
 boolean supportsAlterTableWithDropColumn
           
 boolean supportsAutoAssign
           
 boolean supportsCascadeDeleteAction
           
 boolean supportsCascadeUpdateAction
           
 boolean supportsComments
           
 boolean supportsCorrelatedSubselect
           
 boolean supportsDefaultDeleteAction
           
 boolean supportsDefaultUpdateAction
           
 boolean supportsDeferredConstraints
           
 boolean supportsForeignKeys
           
 boolean supportsHaving
           
 boolean supportsLockingWithDistinctClause
           
 boolean supportsLockingWithInnerJoin
           
 boolean supportsLockingWithMultipleTables
           
 boolean supportsLockingWithOrderClause
           
 boolean supportsLockingWithOuterJoin
           
 boolean supportsLockingWithSelectRange
           
 boolean supportsModOperator
           
 boolean supportsMultipleNontransactionalResultSets
           
 boolean supportsNullDeleteAction
           
 boolean supportsNullTableForGetColumns
           
 boolean supportsNullTableForGetImportedKeys
           
 boolean supportsNullTableForGetIndexInfo
           
 boolean supportsNullTableForGetPrimaryKeys
           
 boolean supportsNullUpdateAction
           
 boolean supportsQueryTimeout
           
 boolean supportsRestrictDeleteAction
           
 boolean supportsRestrictUpdateAction
           
 boolean supportsSchemaForGetColumns
           
 boolean supportsSchemaForGetTables
           
 boolean supportsSelectEndIndex
           
 boolean supportsSelectForUpdate
           
 boolean supportsSelectStartIndex
           
 boolean supportsSubselect
           
 boolean supportsUniqueConstraints
           
 boolean supportsXMLColumn
           
 String systemSchemas
           
protected  Set systemSchemaSet
           
 String systemTables
           
protected  Set systemTableSet
           
 String tableForUpdateClause
           
 String tableTypes
           
 String timestampTypeName
           
 String timeTypeName
           
 String tinyintTypeName
           
 String toLowerCaseFunction
           
 String toUpperCaseFunction
           
 String trimBothFunction
           
 String trimLeadingFunction
           
 boolean trimSchemaName
          Some Databases append whitespace after the schema name
 String trimTrailingFunction
           
protected  Set typeModifierSet
           
protected static int UNLIMITED
           
 boolean useGetBestRowIdentifierForPrimaryKeys
           
 boolean useGetBytesForBlobs
           
 boolean useGetObjectForBlobs
           
 boolean useGetStringForClobs
           
 boolean useSchemaName
           
 boolean useSetBytesForBlobs
           
 boolean useSetStringForClobs
           
 String validationSQL
           
 String varbinaryTypeName
           
 String varcharTypeName
           
static String VENDOR_DATADIRECT
           
static String VENDOR_OTHER
           
 String xmlTypeName
           
 
Fields inherited from interface org.apache.openjpa.jdbc.sql.JoinSyntaxes
SYNTAX_DATABASE, SYNTAX_SQL92, SYNTAX_TRADITIONAL
 
Constructor Summary
DBDictionary()
           
 
Method Summary
 String addCastAsType(String func, Val val)
          add CAST for a function operator where operand is a param
 void addErrorCode(int errorType, String errorCode)
           
 void appendCast(SQLBuffer buf, Object val, int type)
          Cast the specified value to the specified type.
protected  void appendLength(SQLBuffer buf, int type)
           
protected  void appendNumericCast(SQLBuffer buf, FilterValue val)
          Append SQL for the given numeric value to the buffer, casting as needed.
protected  void appendSelect(SQLBuffer selectSQL, Object elem, Select sel, int idx)
          Append elem to selectSQL.
protected  void appendSelectRange(SQLBuffer buf, long start, long end, boolean subselect)
          If this dictionary can select ranges, use this method to append the range SQL.
protected  String appendSize(Column col, String typeName)
          Helper method to add size properties to the specified type.
protected  void appendUpdates(Select sel, JDBCStore store, SQLBuffer sql, Object[] params, Map updateParams, boolean allowAlias)
           
 void appendXmlComparison(SQLBuffer buf, String op, FilterValue lhs, FilterValue rhs, boolean lhsxml, boolean rhsxml)
          If this dictionary supports XML type, use this method to append xml predicate.
 void assertSupport(boolean feature, String property)
          Assert that the given dictionary flag is true.
protected  void calculateValue(Val val, Select sel, ExpContext ctx, ExpState state, Path path, ExpState pathState)
          This method is to provide override for non-JDBC or JDBC-like implementation of calculating value.
 boolean canOuterJoin(int syntax, ForeignKey fk)
          Returns if the given foreign key can be eagerly loaded using other joins.
 void closeDataSource(DataSource dataSource)
          Closes the specified DataSource and releases any resources associated with it.
protected  StringBuffer comment(StringBuffer buf, String comment)
           
 void comparison(SQLBuffer buf, String op, FilterValue lhs, FilterValue rhs)
          Append a comparison.
 void connectedConfiguration(Connection conn)
          This method is called when the dictionary first sees any connection.
protected  String convertSchemaCase(String objectName)
          Convert the specified schema name to a name that the database will be able to understand.
protected  long copy(InputStream in, OutputStream out)
           
protected  long copy(Reader reader, Writer writer)
           
 void createIndexIfNecessary(Schema schema, String table, Column pkColumn)
          Create an index if necessary for some database tables
 Connection decorate(Connection conn)
          Decorate the given connection if needed.
 void deleteStream(JDBCStore store, Select sel)
           
 void endConfiguration()
          Invoked upon completion of bean property configuration for this object.
protected  ResultSet executeQuery(Connection conn, PreparedStatement stmnt, String sql)
          This method is to provide override for non-JDBC or JDBC-like implementation of executing query.
 String[] getAddColumnSQL(Column column)
          Return a series of SQL statements to add the given column to its table.
 String[] getAddForeignKeySQL(ForeignKey fk)
          Return a series of SQL statements to add the given foreign key to its table.
 String[] getAddPrimaryKeySQL(PrimaryKey pk)
          Return a series of SQL statements to add the given primary key to its table.
 Array getArray(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 InputStream getAsciiStream(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 int getBatchLimit()
          Return the batchLimit
 int getBatchUpdateCount(PreparedStatement ps)
          Return batched statements update succes count
 BigDecimal getBigDecimal(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 BigInteger getBigInteger(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 InputStream getBinaryStream(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Blob getBlob(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Object getBlobObject(ResultSet rs, int column, JDBCStore store)
          Convert the specified column of the SQL ResultSet to the proper java type.
 boolean getBoolean(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 byte getByte(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 byte[] getBytes(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Calendar getCalendar(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String getCastFunction(Val val, String func)
          Attach CAST to the current function if necessary
protected  String getCatalogNameForMetadata(String catalogName)
          Returns the catalog name that will be used for obtaining information from DatabaseMetaData.
 char getChar(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Reader getCharacterStream(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Clob getClob(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String getClobString(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
protected  String getColumnNameForMetadata(String columnName)
          Returns the column name that will be used for obtaining information from DatabaseMetaData.
 Column[] getColumns(DatabaseMetaData meta, String catalog, String schemaName, String tableName, String columnName, Connection conn)
          Reflect on the schema to find columns matching the given table and column patterns.
 String[] getCreateIndexSQL(Index index)
          Return a series of SQL statements to create the given index.
 String[] getCreateSequenceSQL(Sequence seq)
          Return a series of SQL statements to create the given sequence.
 String[] getCreateTableSQL(Table table)
          Return a series of SQL statements to create the given table, complete with columns.
 Date getDate(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Date getDate(ResultSet rs, int column, Calendar cal)
          Convert the specified column of the SQL ResultSet to the proper java type.
protected  String getDeclareColumnSQL(Column col, boolean alter)
          Return the declaration SQL for the given column.
 String[] getDeleteTableContentsSQL(Table[] tables)
          Create SQL to delete the contents of the specified tables.
protected  SQLBuffer getDeleteTargets(Select sel)
           
 double getDouble(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String[] getDropColumnSQL(Column column)
          Return a series of SQL statements to drop the given column from its table.
 String[] getDropForeignKeySQL(ForeignKey fk)
          Return a series of SQL statements to drop the given foreign key from its table.
 String[] getDropIndexSQL(Index index)
          Return a series of SQL statements to drop the given index.
 String[] getDropPrimaryKeySQL(PrimaryKey pk)
          Return a series of SQL statements to drop the given primary key from its table.
 String[] getDropSequenceSQL(Sequence seq)
          Return a series of SQL statements to drop the given sequence.
 String[] getDropTableSQL(Table table)
          Return a series of SQL statements to drop the given table.
 float getFloat(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
protected  String getForeignKeyConstraintSQL(ForeignKey fk)
          Return the declaration SQL for the given foreign key, or null if it is not supported.
protected  String getForUpdateClause(JDBCFetchConfiguration fetch, boolean isForUpdate, Select sel)
          Get the update clause for the query based on the updateClause and isolationLevel hints
protected  SQLBuffer getFrom(Select sel, boolean forUpdate)
          Return the portion of the select statement between the FROM keyword and the WHERE keyword.
protected  SQLBuffer getFromSelect(Select sel, boolean forUpdate)
          Return the FROM clause for a select that selects from a tmp table created by an inner select.
 String getFullName(Index index)
          Returns the full name of the index, including the schema (delimited by the result of catalogSeparator).
 String getFullName(Sequence seq)
          Returns the full name of the sequence, including the schema (delimited by the result of catalogSeparator).
 String getFullName(Table table, boolean logical)
          Returns the full name of the table, including the schema (delimited by catalogSeparator).
 Object getGeneratedKey(Column col, Connection conn)
          Return the last generated value for the given column.
protected  String getGeneratedKeySequenceName(Column col)
          Return the sequence name used by databases for the given autoassigned column.
 ForeignKey[] getImportedKeys(DatabaseMetaData meta, String catalog, String schemaName, String tableName, Connection conn)
          Reflect on the schema to return foreign keys imported by the given table pattern.
 Index[] getIndexInfo(DatabaseMetaData meta, String catalog, String schemaName, String tableName, boolean unique, boolean approx, Connection conn)
          Reflect on the schema to find indexes matching the given table pattern.
 int getInt(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 int getJDBCType(int metaTypeCode, boolean lob)
          Return the preferred Types constant for the given JavaTypes or JavaSQLTypes constant.
protected  Object getKey(ResultSet rs, Column col)
          This method is to provide override for non-JDBC or JDBC-like implementation of getting key from the result set.
 InputStream getLOBStream(JDBCStore store, ResultSet rs, int column)
           
 Locale getLocale(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 long getLong(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Number getNumber(ResultSet rs, int column)
          Returns the specified column value as an unknown numeric type; we try from the most generic to the least generic.
 Object getObject(ResultSet rs, int column, Map map)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String getPlaceholderValueString(Column col)
          Return a SQL string to act as a placeholder for the given column.
 int getPreferredType(int type)
          Return the preferred Types type for the given one.
protected  String getPrimaryKeyConstraintSQL(PrimaryKey pk)
          Return the declaration SQL for the given primary key.
 PrimaryKey[] getPrimaryKeys(DatabaseMetaData meta, String catalog, String schemaName, String tableName, Connection conn)
          Reflect on the schema to find primary keys for the given table pattern.
protected  PrimaryKey[] getPrimaryKeysFromBestRowIdentifier(DatabaseMetaData meta, String catalog, String schemaName, String tableName, Connection conn)
          Reflect on the schema to find primary keys for the given table pattern.
protected  PrimaryKey[] getPrimaryKeysFromGetPrimaryKeys(DatabaseMetaData meta, String catalog, String schemaName, String tableName, Connection conn)
          Reflect on the schema to find primary keys for the given table pattern.
 Ref getRef(ResultSet rs, int column, Map map)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String getSchemaCase()
          Return DB specific schemaCase
protected  String getSchemaNameForMetadata(String schemaName)
          Returns the schema name that will be used for obtaining information from DatabaseMetaData.
 String getSelectOperation(JDBCFetchConfiguration fetch)
          Return the "SELECT" operation clause, adding any available hints, etc.
protected  SQLBuffer getSelects(Select sel, boolean distinctIdentifiers, boolean forUpdate)
          Return the portion of the select statement between the SELECT keyword and the FROM keyword.
protected  Sequence[] getSequence(ResultSet rs)
          This method is to provide override for non-JDBC or JDBC-like implementation of getting sequence from the result set.
 Sequence[] getSequences(DatabaseMetaData meta, String catalog, String schemaName, String sequenceName, Connection conn)
          Reflect on the schema to find sequences matching the given name pattern.
protected  String getSequencesSQL(String schemaName, String sequenceName)
          Return the SQL needed to select the list of sequences.
 short getShort(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
 String getString(ResultSet rs, int column)
          Convert the specified column of the SQL ResultSet to the proper java type.
protected  String getTableNameForMetadata(String tableName)
          Returns the table name that will be used for obtaining information from DatabaseMetaData.
 Table[] getTables(DatabaseMetaData meta, String catalog, String schemaName, String tableName, Connection conn)
          Reflect on the schema to find tables matching the given name pattern.
 Time getTime(ResultSet rs, int column, Calendar cal)
          Convert the specified column of the SQL ResultSet to the proper java type.
 Timestamp getTimestamp(ResultSet rs, int column, Calendar cal)
          Convert the specified column of the SQL ResultSet to the proper java type.
 boolean getTrimSchemaName()
           
 String getTypeName(Column col)
          Return the preferred database type name for the given column's type from Types.
 String getTypeName(int type)
          Returns the type name for the specific constant as defined by Types.
protected  String getUniqueConstraintSQL(Unique unq)
          Return the declaration SQL for the given unique constraint.
 String getValidColumnName(String name, Table table)
          Make any necessary changes to the given column name to make it valid for the current DB.
 String getValidColumnName(String name, Table table, boolean checkForUniqueness)
          Make any necessary changes to the given column name to make it valid for the current DB.
 String getValidForeignKeyName(String name, Table table, Table toTable)
          Make any necessary changes to the given foreign key name to make it valid for the current DB.
 String getValidIndexName(String name, Table table)
          Make any necessary changes to the given index name to make it valid for the current DB.
 String getValidPrimaryKeyName(String name, Table table)
          Make any necessary changes to the given primary key name to make it valid for the current DB.
 String getValidSequenceName(String name, Schema schema)
          Make any necessary changes to the given sequence name to make it valid for the current DB.
 String getValidTableName(String name, Schema schema)
          Make any necessary changes to the given table name to make it valid for the current DB.
 String getValidUniqueName(String name, Table table)
          Make any necessary changes to the given unique constraint name to make it valid for the current DB.
 String getVersionColumn(Column column, String tableAlias)
          Return version column name
protected  SQLBuffer getWhere(Select sel, boolean forUpdate)
          Return the WHERE portion of the select statement, or null if no where conditions.
 void handleWarning(SQLWarning warning)
          Implementation of the LoggingConnectionDecorator.SQLWarningHandler interface that allows customization of the actions to perform when a SQLWarning occurs at any point on a Connection, Statement, or ResultSet.
 void indexOf(SQLBuffer buf, FilterValue str, FilterValue find, FilterValue start)
          Invoke this database's indexOf function.
 void insertBlobForStreamingLoad(Row row, Column col, JDBCStore store, Object ob, Select sel)
           
 void insertClobForStreamingLoad(Row row, Column col, Object ob)
           
protected  String insertSize(String typeName, String size)
          Helper method that inserts a size clause for a given SQL type.
 boolean isSelect(String sql)
          Determine whether the provided sql may be treated as a select statement on this database.
 boolean isSystemIndex(String name, Table table)
          This method is used to filter system indexes from database metadata.
 boolean isSystemSequence(String name, String schema, boolean targetSchema)
          This method is used to filter system sequences from database metadata.
 boolean isSystemTable(String name, String schema, boolean targetSchema)
          This method is used to filter system tables from database metadata.
protected  String makeNameValid(String name, NameSet set, int maxLen, int nameType)
          Shortens the given name to the given maximum length, then checks that it is not a reserved word.
protected  String makeNameValid(String name, NameSet set, int maxLen, int nameType, boolean checkForUniqueness)
          Shortens the given name to the given maximum length, then checks that it is not a reserved word.
 void mathFunction(SQLBuffer buf, String op, FilterValue lhs, FilterValue rhs)
          Append the numeric parts of a mathematical function.
 boolean needsToCreateIndex(Index idx, Table table)
           
protected  Column newColumn(ResultSet colMeta)
          Create a new column from the information in the schema metadata.
protected  ForeignKey newForeignKey(ResultSet fkMeta)
          Create a new foreign key from the information in the schema metadata.
protected  Index newIndex(ResultSet idxMeta)
          Create a new index from the information in the schema metadata.
protected  PrimaryKey newPrimaryKey(ResultSet pkMeta)
          Create a new primary key from the information in the schema metadata.
protected  Sequence newSequence(ResultSet sequenceMeta)
          Create a new sequence from the information in the schema metadata.
 OpenJPAException newStoreException(String msg, SQLException[] causes, Object failed)
          Return a new exception that wraps causes.
protected  Table newTable(ResultSet tableMeta)
          Create a new table from the information in the schema metadata.
protected  PreparedStatement prepareStatement(Connection conn, String sql)
          This method is to provide override for non-JDBC or JDBC-like implementation of preparing statement.
 void putBytes(Object blob, byte[] data)
          Invoke the JDK 1.4 setBytes method on the given BLOB object.
 void putChars(Object clob, char[] data)
          Invoke the JDK 1.4 setCharacterStream method on the given CLOB object.
 void putString(Object clob, String data)
          Invoke the JDK 1.4 setString method on the given CLOB object.
 void refSchemaComponents(Table table)
          Increment the reference count of any table components that this dictionary adds that are not used by mappings.
 byte[] serialize(Object val, JDBCStore store)
          Return the serialized bytes for the given object.
 void setArray(PreparedStatement stmnt, int idx, Array val, Column col)
          Set the given value as a parameter to the statement.
 void setAsciiStream(PreparedStatement stmnt, int idx, InputStream val, int length, Column col)
          Set the given value as a parameter to the statement.
 void setBatchLimit(int limit)
          Set the batchLimit value
 void setBigDecimal(PreparedStatement stmnt, int idx, BigDecimal val, Column col)
          Set the given value as a parameter to the statement.
 void setBigInteger(PreparedStatement stmnt, int idx, BigInteger val, Column col)
          Set the given value as a parameter to the statement.
 void setBinaryStream(PreparedStatement stmnt, int idx, InputStream val, int length, Column col)
          Set the given value as a parameter to the statement.
 void setBlob(PreparedStatement stmnt, int idx, Blob val, Column col)
          Set the given value as a parameter to the statement.
 void setBlobObject(PreparedStatement stmnt, int idx, Object val, Column col, JDBCStore store)
          Set the given value as a parameter to the statement.
 void setBoolean(PreparedStatement stmnt, int idx, boolean val, Column col)
          Set the given value as a parameter to the statement.
 void setByte(PreparedStatement stmnt, int idx, byte val, Column col)
          Set the given value as a parameter to the statement.
 void setBytes(PreparedStatement stmnt, int idx, byte[] val, Column col)
          Set the given value as a parameter to the statement.
 void setCalendar(PreparedStatement stmnt, int idx, Calendar val, Column col)
          Set the given value as a parameter to the statement.
 void setChar(PreparedStatement stmnt, int idx, char val, Column col)
          Set the given value as a parameter to the statement.
 void setCharacterStream(PreparedStatement stmnt, int idx, Reader val, int length, Column col)
          Set the given value as a parameter to the statement.
 void setClob(PreparedStatement stmnt, int idx, Clob val, Column col)
          Set the given value as a parameter to the statement.
 void setClobString(PreparedStatement stmnt, int idx, String val, Column col)
          Set the given value as a parameter to the statement.
 void setConfiguration(Configuration conf)
          Invoked prior to setting bean properties.
 void setDate(PreparedStatement stmnt, int idx, Date val, Calendar cal, Column col)
          Set the given value as a parameter to the statement.
 void setDate(PreparedStatement stmnt, int idx, Date val, Column col)
          Set the given value as a parameter to the statement.
 void setDouble(PreparedStatement stmnt, int idx, double val, Column col)
          Set the given value as a parameter to the statement.
 void setFloat(PreparedStatement stmnt, int idx, float val, Column col)
          Set the given value as a parameter to the statement.
 void setInt(PreparedStatement stmnt, int idx, int val, Column col)
          Set the given value as a parameter to the statement.
 void setJoinSyntax(String syntax)
          Set the name of the join syntax to use: sql92, traditional, database
 void setLocale(PreparedStatement stmnt, int idx, Locale val, Column col)
          Set the given value as a parameter to the statement.
 void setLong(PreparedStatement stmnt, int idx, long val, Column col)
          Set the given value as a parameter to the statement.
 void setNull(PreparedStatement stmnt, int idx, int colType, Column col)
          Set the given value as a parameters to the statement.
 void setNumber(PreparedStatement stmnt, int idx, Number num, Column col)
          Set the given value as a parameter to the statement.
 void setObject(PreparedStatement stmnt, int idx, Object val, int colType, Column col)
          Set the given value as a parameters to the statement.
 void setRef(PreparedStatement stmnt, int idx, Ref val, Column col)
          Set the given value as a parameter to the statement.
 void setShort(PreparedStatement stmnt, int idx, short val, Column col)
          Set the given value as a parameter to the statement.
 void setString(PreparedStatement stmnt, int idx, String val, Column col)
          Set the given value as a parameter to the statement.
 void setTime(PreparedStatement stmnt, int idx, Time val, Calendar cal, Column col)
          Set the given value as a parameter to the statement.
 void setTimestamp(PreparedStatement stmnt, int idx, Timestamp val, Calendar cal, Column col)
          Set the given value as a parameter to the statement.
 void setTrimSchemaName(boolean trimSchemaName)
           
 void setTyped(PreparedStatement stmnt, int idx, Object val, Column col, int type, JDBCStore store)
          Set a column value into a prepared statement.
 void setUnknown(PreparedStatement stmnt, int idx, Object val, Column col)
          Set a completely unknown parameter into a prepared statement.
protected static String shorten(String name, int targetLength)
          Shorten the specified name to the specified target name.
 void startConfiguration()
          Invoked before bean property configuration is begun on this object.
protected  void storageWarning(Object orig, Object converted)
          Warn that a particular value could not be stored precisely.
 void substring(SQLBuffer buf, FilterValue str, FilterValue start, FilterValue end)
          Invoke this database's substring function.
protected  boolean supportsDeferredForeignKeyConstraints()
          Whether or not this dictionary supports deferred foreign key constraints.
protected  boolean supportsDeferredUniqueConstraints()
          Whether or not this dictionary supports deferred unique constraints.
 boolean supportsDeleteAction(int action)
          Whether this database supports the given foreign key delete action.
 boolean supportsLocking(Select sel)
          Returns true if a "FOR UPDATE" clause can be used for the specified Select object.
 boolean supportsRandomAccessResultSet(Select sel, boolean forUpdate)
          Return false if the given select requires a forward-only result set.
 boolean supportsUpdateAction(int action)
          Whether this database supports the given foreign key update action.
protected  SQLBuffer toBulkOperation(ClassMapping mapping, Select sel, JDBCStore store, Object[] params, Map updateParams)
          Returns the SQL for a bulk operation, either a DELETE or an UPDATE.
 SQLBuffer toDelete(ClassMapping mapping, Select sel, Object[] params)
          Create a DELETE statement for the specified Select.
 SQLBuffer toNativeJoin(Join join)
          Use the given join instance to create SQL joining its tables in the database's native syntax.
 SQLBuffer toOperation(String op, SQLBuffer selects, SQLBuffer from, SQLBuffer where, SQLBuffer group, SQLBuffer having, SQLBuffer order, boolean distinct, long start, long end, String forUpdateClause)
          Return the SQL for the given selecting operation.
 SQLBuffer toOperation(String op, SQLBuffer selects, SQLBuffer from, SQLBuffer where, SQLBuffer group, SQLBuffer having, SQLBuffer order, boolean distinct, long start, long end, String forUpdateClause, boolean subselect)
          Return the SQL for the given selecting operation.
 SQLBuffer toSelect(Select sel, boolean forUpdate, JDBCFetchConfiguration fetch)
          Create a SELECT statement in the proper join syntax for the given instance.
 SQLBuffer toSelect(SQLBuffer selects, JDBCFetchConfiguration fetch, SQLBuffer from, SQLBuffer where, SQLBuffer group, SQLBuffer having, SQLBuffer order, boolean distinct, boolean forUpdate, long start, long end)
          Combine the given components into a SELECT statement.
 SQLBuffer toSelect(SQLBuffer selects, JDBCFetchConfiguration fetch, SQLBuffer from, SQLBuffer where, SQLBuffer group, SQLBuffer having, SQLBuffer order, boolean distinct, boolean forUpdate, long start, long end, boolean subselect)
          Combine the given components into a SELECT statement.
 SQLBuffer toSelect(SQLBuffer selects, JDBCFetchConfiguration fetch, SQLBuffer from, SQLBuffer where, SQLBuffer group, SQLBuffer having, SQLBuffer order, boolean distinct, boolean forUpdate, long start, long end, boolean subselect, boolean checkTableForUpdate)
           
 SQLBuffer toSelect(SQLBuffer selects, JDBCFetchConfiguration fetch, SQLBuffer from, SQLBuffer where, SQLBuffer group, SQLBuffer having, SQLBuffer order, boolean distinct, boolean forUpdate, long start, long end, Select sel)
          Combine the given components into a SELECT statement.
 SQLBuffer toSelectCount(Select sel)
          Create a SELECT COUNT statement in the proper join syntax for the given instance.
 SQLBuffer toSQL92Join(Join join, boolean forUpdate, boolean first)
          Use the given join instance to create SQL joining its tables in the SQL92 style.
 SQLBuffer toTraditionalJoin(Join join)
          Use the given join instance to create SQL joining its tables in the traditional style.
 SQLBuffer toUpdate(ClassMapping mapping, Select sel, JDBCStore store, Object[] params, Map updates)
           
 void updateBlob(Select sel, JDBCStore store, InputStream is)
           
 void updateClob(Select sel, JDBCStore store, Reader reader)
           
 boolean validateBatchProcess(RowImpl row, Column[] autoAssign, OpenJPAStateManager sm, ClassMapping cmd)
          Validate the batch process.
 boolean validateDBSpecificBatchProcess(boolean disableBatch, RowImpl row, Column[] autoAssign, OpenJPAStateManager sm, ClassMapping cmd)
          Allow each Dictionary to validate its own batch process.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VENDOR_OTHER

public static final String VENDOR_OTHER
See Also:
Constant Field Values

VENDOR_DATADIRECT

public static final String VENDOR_DATADIRECT
See Also:
Constant Field Values

SCHEMA_CASE_UPPER

public static final String SCHEMA_CASE_UPPER
See Also:
Constant Field Values

SCHEMA_CASE_LOWER

public static final String SCHEMA_CASE_LOWER
See Also:
Constant Field Values

SCHEMA_CASE_PRESERVE

public static final String SCHEMA_CASE_PRESERVE
See Also:
Constant Field Values

CONS_NAME_BEFORE

public static final String CONS_NAME_BEFORE
See Also:
Constant Field Values

CONS_NAME_MID

public static final String CONS_NAME_MID
See Also:
Constant Field Values

CONS_NAME_AFTER

public static final String CONS_NAME_AFTER
See Also:
Constant Field Values

blobBufferSize

public int blobBufferSize

clobBufferSize

public int clobBufferSize

RANGE_POST_SELECT

protected static final int RANGE_POST_SELECT
See Also:
Constant Field Values

RANGE_PRE_DISTINCT

protected static final int RANGE_PRE_DISTINCT
See Also:
Constant Field Values

RANGE_POST_DISTINCT

protected static final int RANGE_POST_DISTINCT
See Also:
Constant Field Values

RANGE_POST_LOCK

protected static final int RANGE_POST_LOCK
See Also:
Constant Field Values

NANO

protected static final int NANO
See Also:
Constant Field Values

MICRO

protected static final int MICRO
See Also:
Constant Field Values

MILLI

protected static final int MILLI
See Also:
Constant Field Values

CENTI

protected static final int CENTI
See Also:
Constant Field Values

DECI

protected static final int DECI
See Also:
Constant Field Values

SEC

protected static final int SEC
See Also:
Constant Field Values

NAME_ANY

protected static final int NAME_ANY
See Also:
Constant Field Values

NAME_TABLE

protected static final int NAME_TABLE
See Also:
Constant Field Values

NAME_SEQUENCE

protected static final int NAME_SEQUENCE
See Also:
Constant Field Values

UNLIMITED

protected static final int UNLIMITED
See Also:
Constant Field Values

NO_BATCH

protected static final int NO_BATCH
See Also:
Constant Field Values

platform

public String platform

driverVendor

public String driverVendor

catalogSeparator

public String catalogSeparator

createPrimaryKeys

public boolean createPrimaryKeys

constraintNameMode

public String constraintNameMode

maxTableNameLength

public int maxTableNameLength

maxColumnNameLength

public int maxColumnNameLength

maxConstraintNameLength

public int maxConstraintNameLength

maxIndexNameLength

public int maxIndexNameLength

maxIndexesPerTable

public int maxIndexesPerTable

supportsForeignKeys

public boolean supportsForeignKeys

supportsUniqueConstraints

public boolean supportsUniqueConstraints

supportsDeferredConstraints

public boolean supportsDeferredConstraints

supportsRestrictDeleteAction

public boolean supportsRestrictDeleteAction

supportsCascadeDeleteAction

public boolean supportsCascadeDeleteAction

supportsNullDeleteAction

public boolean supportsNullDeleteAction

supportsDefaultDeleteAction

public boolean supportsDefaultDeleteAction

supportsRestrictUpdateAction

public boolean supportsRestrictUpdateAction

supportsCascadeUpdateAction

public boolean supportsCascadeUpdateAction

supportsNullUpdateAction

public boolean supportsNullUpdateAction

supportsDefaultUpdateAction

public boolean supportsDefaultUpdateAction

supportsAlterTableWithAddColumn

public boolean supportsAlterTableWithAddColumn

supportsAlterTableWithDropColumn

public boolean supportsAlterTableWithDropColumn

supportsComments

public boolean supportsComments

reservedWords

public String reservedWords

systemSchemas

public String systemSchemas

systemTables

public String systemTables

selectWords

public String selectWords

fixedSizeTypeNames

public String fixedSizeTypeNames

schemaCase

public String schemaCase

setStringRightTruncationOn

public boolean setStringRightTruncationOn

validationSQL

public String validationSQL

closePoolSQL

public String closePoolSQL

initializationSQL

public String initializationSQL

joinSyntax

public int joinSyntax

outerJoinClause

public String outerJoinClause

innerJoinClause

public String innerJoinClause

crossJoinClause

public String crossJoinClause

requiresConditionForCrossJoin

public boolean requiresConditionForCrossJoin

forUpdateClause

public String forUpdateClause

tableForUpdateClause

public String tableForUpdateClause

distinctCountColumnSeparator

public String distinctCountColumnSeparator

supportsSelectForUpdate

public boolean supportsSelectForUpdate

supportsLockingWithDistinctClause

public boolean supportsLockingWithDistinctClause

supportsLockingWithMultipleTables

public boolean supportsLockingWithMultipleTables

supportsLockingWithOrderClause

public boolean supportsLockingWithOrderClause

supportsLockingWithOuterJoin

public boolean supportsLockingWithOuterJoin

supportsLockingWithInnerJoin

public boolean supportsLockingWithInnerJoin

supportsLockingWithSelectRange

public boolean supportsLockingWithSelectRange

supportsQueryTimeout

public boolean supportsQueryTimeout

simulateLocking

public boolean simulateLocking

supportsSubselect

public boolean supportsSubselect

supportsCorrelatedSubselect

public boolean supportsCorrelatedSubselect

supportsHaving

public boolean supportsHaving

supportsSelectStartIndex

public boolean supportsSelectStartIndex

supportsSelectEndIndex

public boolean supportsSelectEndIndex

rangePosition

public int rangePosition

requiresAliasForSubselect

public boolean requiresAliasForSubselect

requiresTargetForDelete

public boolean requiresTargetForDelete

allowsAliasInBulkClause

public boolean allowsAliasInBulkClause

supportsMultipleNontransactionalResultSets

public boolean supportsMultipleNontransactionalResultSets

searchStringEscape

public String searchStringEscape

requiresCastForMathFunctions

public boolean requiresCastForMathFunctions

requiresCastForComparisons

public boolean requiresCastForComparisons

supportsModOperator

public boolean supportsModOperator

supportsXMLColumn

public boolean supportsXMLColumn

reportsSuccessNoInfoOnBatchUpdates

public boolean reportsSuccessNoInfoOnBatchUpdates

trimSchemaName

public boolean trimSchemaName
Some Databases append whitespace after the schema name


castFunction

public String castFunction

toLowerCaseFunction

public String toLowerCaseFunction

toUpperCaseFunction

public String toUpperCaseFunction

stringLengthFunction

public String stringLengthFunction

bitLengthFunction

public String bitLengthFunction

trimLeadingFunction

public String trimLeadingFunction

trimTrailingFunction

public String trimTrailingFunction

trimBothFunction

public String trimBothFunction

concatenateFunction

public String concatenateFunction

concatenateDelimiter

public String concatenateDelimiter

substringFunctionName

public String substringFunctionName

currentDateFunction

public String currentDateFunction

currentTimeFunction

public String currentTimeFunction

currentTimestampFunction

public String currentTimestampFunction

dropTableSQL

public String dropTableSQL

storageLimitationsFatal

public boolean storageLimitationsFatal

storeLargeNumbersAsStrings

public boolean storeLargeNumbersAsStrings

storeCharsAsNumbers

public boolean storeCharsAsNumbers

useGetBytesForBlobs

public boolean useGetBytesForBlobs

useSetBytesForBlobs

public boolean useSetBytesForBlobs

useGetObjectForBlobs

public boolean useGetObjectForBlobs

useGetStringForClobs

public boolean useGetStringForClobs

useSetStringForClobs

public boolean useSetStringForClobs

maxEmbeddedBlobSize

public int maxEmbeddedBlobSize

maxEmbeddedClobSize

public int maxEmbeddedClobSize

inClauseLimit

public int inClauseLimit

datePrecision

public int datePrecision

characterColumnSize

public int characterColumnSize

arrayTypeName

public String arrayTypeName

bigintTypeName

public String bigintTypeName

binaryTypeName

public String binaryTypeName

bitTypeName

public String bitTypeName

blobTypeName

public String blobTypeName

booleanTypeName

public String booleanTypeName

charTypeName

public String charTypeName

clobTypeName

public String clobTypeName

dateTypeName

public String dateTypeName

decimalTypeName

public String decimalTypeName

distinctTypeName

public String distinctTypeName

doubleTypeName

public String doubleTypeName

floatTypeName

public String floatTypeName

integerTypeName

public String integerTypeName

javaObjectTypeName

public String javaObjectTypeName

longVarbinaryTypeName

public String longVarbinaryTypeName

longVarcharTypeName

public String longVarcharTypeName

nullTypeName

public String nullTypeName

numericTypeName

public String numericTypeName

otherTypeName

public String otherTypeName

realTypeName

public String realTypeName

refTypeName

public String refTypeName

smallintTypeName

public String smallintTypeName

structTypeName

public String structTypeName

timeTypeName

public String timeTypeName

timestampTypeName

public String timestampTypeName

tinyintTypeName

public String tinyintTypeName

varbinaryTypeName

public String varbinaryTypeName

varcharTypeName

public String varcharTypeName

xmlTypeName

public String xmlTypeName

getStringVal

public String getStringVal

useSchemaName

public boolean useSchemaName

tableTypes

public String tableTypes

supportsSchemaForGetTables

public boolean supportsSchemaForGetTables

supportsSchemaForGetColumns

public boolean supportsSchemaForGetColumns

supportsNullTableForGetColumns

public boolean supportsNullTableForGetColumns

supportsNullTableForGetPrimaryKeys

public boolean supportsNullTableForGetPrimaryKeys

supportsNullTableForGetIndexInfo

public boolean supportsNullTableForGetIndexInfo

supportsNullTableForGetImportedKeys

public boolean supportsNullTableForGetImportedKeys

useGetBestRowIdentifierForPrimaryKeys

public boolean useGetBestRowIdentifierForPrimaryKeys

requiresAutoCommitForMetaData

public boolean requiresAutoCommitForMetaData

maxAutoAssignNameLength

public int maxAutoAssignNameLength

autoAssignClause

public String autoAssignClause

autoAssignTypeName

public String autoAssignTypeName

supportsAutoAssign

public boolean supportsAutoAssign

lastGeneratedKeyQuery

public String lastGeneratedKeyQuery

nextSequenceQuery

public String nextSequenceQuery

sequenceSQL

public String sequenceSQL

sequenceSchemaSQL

public String sequenceSchemaSQL

sequenceNameSQL

public String sequenceNameSQL

nativeSequenceType

public int nativeSequenceType

conf

protected JDBCConfiguration conf

log

protected Log log

connected

protected boolean connected

isJDBC3

protected boolean isJDBC3

reservedWordSet

protected final Set reservedWordSet

systemSchemaSet

protected final Set systemSchemaSet

systemTableSet

protected final Set systemTableSet

fixedSizeTypeNameSet

protected final Set fixedSizeTypeNameSet

typeModifierSet

protected final Set typeModifierSet

selectWordSet

protected final Set selectWordSet
If a native query begins with any of the values found here then it will be treated as a select statement.


batchLimit

public int batchLimit

sqlStateCodes

public final Map<Integer,Set<String>> sqlStateCodes
Constructor Detail

DBDictionary

public DBDictionary()
Method Detail

connectedConfiguration

public void connectedConfiguration(Connection conn)
                            throws SQLException
This method is called when the dictionary first sees any connection. It is used to initialize dictionary metadata if needed. If you override this method, be sure to call super.connectedConfiguration.

Throws:
SQLException

getArray

public Array getArray(ResultSet rs,
                      int column)
               throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getAsciiStream

public InputStream getAsciiStream(ResultSet rs,
                                  int column)
                           throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getBigDecimal

public BigDecimal getBigDecimal(ResultSet rs,
                                int column)
                         throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getNumber

public Number getNumber(ResultSet rs,
                        int column)
                 throws SQLException
Returns the specified column value as an unknown numeric type; we try from the most generic to the least generic.

Throws:
SQLException

getBigInteger

public BigInteger getBigInteger(ResultSet rs,
                                int column)
                         throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getBinaryStream

public InputStream getBinaryStream(ResultSet rs,
                                   int column)
                            throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getLOBStream

public InputStream getLOBStream(JDBCStore store,
                                ResultSet rs,
                                int column)
                         throws SQLException
Throws:
SQLException

getBlob

public Blob getBlob(ResultSet rs,
                    int column)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getBlobObject

public Object getBlobObject(ResultSet rs,
                            int column,
                            JDBCStore store)
                     throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getBoolean

public boolean getBoolean(ResultSet rs,
                          int column)
                   throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getByte

public byte getByte(ResultSet rs,
                    int column)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getBytes

public byte[] getBytes(ResultSet rs,
                       int column)
                throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getCalendar

public Calendar getCalendar(ResultSet rs,
                            int column)
                     throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type. Converts the date from a Timestamp by default.

Throws:
SQLException

getChar

public char getChar(ResultSet rs,
                    int column)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getCharacterStream

public Reader getCharacterStream(ResultSet rs,
                                 int column)
                          throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getClob

public Clob getClob(ResultSet rs,
                    int column)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getClobString

public String getClobString(ResultSet rs,
                            int column)
                     throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getDate

public Date getDate(ResultSet rs,
                    int column)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type. Converts the date from a Timestamp by default.

Throws:
SQLException

getDate

public Date getDate(ResultSet rs,
                    int column,
                    Calendar cal)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getDouble

public double getDouble(ResultSet rs,
                        int column)
                 throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getFloat

public float getFloat(ResultSet rs,
                      int column)
               throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getInt

public int getInt(ResultSet rs,
                  int column)
           throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getLocale

public Locale getLocale(ResultSet rs,
                        int column)
                 throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getLong

public long getLong(ResultSet rs,
                    int column)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getObject

public Object getObject(ResultSet rs,
                        int column,
                        Map map)
                 throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getRef

public Ref getRef(ResultSet rs,
                  int column,
                  Map map)
           throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getShort

public short getShort(ResultSet rs,
                      int column)
               throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getString

public String getString(ResultSet rs,
                        int column)
                 throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getTime

public Time getTime(ResultSet rs,
                    int column,
                    Calendar cal)
             throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

getTimestamp

public Timestamp getTimestamp(ResultSet rs,
                              int column,
                              Calendar cal)
                       throws SQLException
Convert the specified column of the SQL ResultSet to the proper java type.

Throws:
SQLException

setArray

public void setArray(PreparedStatement stmnt,
                     int idx,
                     Array val,
                     Column col)
              throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setAsciiStream

public void setAsciiStream(PreparedStatement stmnt,
                           int idx,
                           InputStream val,
                           int length,
                           Column col)
                    throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setBigDecimal

public void setBigDecimal(PreparedStatement stmnt,
                          int idx,
                          BigDecimal val,
                          Column col)
                   throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setBigInteger

public void setBigInteger(PreparedStatement stmnt,
                          int idx,
                          BigInteger val,
                          Column col)
                   throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setBinaryStream

public void setBinaryStream(PreparedStatement stmnt,
                            int idx,
                            InputStream val,
                            int length,
                            Column col)
                     throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setBlob

public void setBlob(PreparedStatement stmnt,
                    int idx,
                    Blob val,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setBlobObject

public void setBlobObject(PreparedStatement stmnt,
                          int idx,
                          Object val,
                          Column col,
                          JDBCStore store)
                   throws SQLException
Set the given value as a parameter to the statement. Uses the serialize(java.lang.Object, org.apache.openjpa.jdbc.kernel.JDBCStore) method to serialize the value.

Throws:
SQLException

setBoolean

public void setBoolean(PreparedStatement stmnt,
                       int idx,
                       boolean val,
                       Column col)
                throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setByte

public void setByte(PreparedStatement stmnt,
                    int idx,
                    byte val,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setBytes

public void setBytes(PreparedStatement stmnt,
                     int idx,
                     byte[] val,
                     Column col)
              throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setChar

public void setChar(PreparedStatement stmnt,
                    int idx,
                    char val,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setCharacterStream

public void setCharacterStream(PreparedStatement stmnt,
                               int idx,
                               Reader val,
                               int length,
                               Column col)
                        throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setClob

public void setClob(PreparedStatement stmnt,
                    int idx,
                    Clob val,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setClobString

public void setClobString(PreparedStatement stmnt,
                          int idx,
                          String val,
                          Column col)
                   throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setDate

public void setDate(PreparedStatement stmnt,
                    int idx,
                    Date val,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setDate

public void setDate(PreparedStatement stmnt,
                    int idx,
                    Date val,
                    Calendar cal,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setCalendar

public void setCalendar(PreparedStatement stmnt,
                        int idx,
                        Calendar val,
                        Column col)
                 throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setDouble

public void setDouble(PreparedStatement stmnt,
                      int idx,
                      double val,
                      Column col)
               throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setFloat

public void setFloat(PreparedStatement stmnt,
                     int idx,
                     float val,
                     Column col)
              throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setInt

public void setInt(PreparedStatement stmnt,
                   int idx,
                   int val,
                   Column col)
            throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setLong

public void setLong(PreparedStatement stmnt,
                    int idx,
                    long val,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setLocale

public void setLocale(PreparedStatement stmnt,
                      int idx,
                      Locale val,
                      Column col)
               throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setNull

public void setNull(PreparedStatement stmnt,
                    int idx,
                    int colType,
                    Column col)
             throws SQLException
Set the given value as a parameters to the statement. The column type will come from Types.

Throws:
SQLException

setNumber

public void setNumber(PreparedStatement stmnt,
                      int idx,
                      Number num,
                      Column col)
               throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setObject

public void setObject(PreparedStatement stmnt,
                      int idx,
                      Object val,
                      int colType,
                      Column col)
               throws SQLException
Set the given value as a parameters to the statement. The column type will come from Types.

Throws:
SQLException

setRef

public void setRef(PreparedStatement stmnt,
                   int idx,
                   Ref val,
                   Column col)
            throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setShort

public void setShort(PreparedStatement stmnt,
                     int idx,
                     short val,
                     Column col)
              throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setString

public void setString(PreparedStatement stmnt,
                      int idx,
                      String val,
                      Column col)
               throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setTime

public void setTime(PreparedStatement stmnt,
                    int idx,
                    Time val,
                    Calendar cal,
                    Column col)
             throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setTimestamp

public void setTimestamp(PreparedStatement stmnt,
                         int idx,
                         Timestamp val,
                         Calendar cal,
                         Column col)
                  throws SQLException
Set the given value as a parameter to the statement.

Throws:
SQLException

setTyped

public void setTyped(PreparedStatement stmnt,
                     int idx,
                     Object val,
                     Column col,
                     int type,
                     JDBCStore store)
              throws SQLException
Set a column value into a prepared statement.

Parameters:
stmnt - the prepared statement to parameterize
idx - the index of the parameter in the prepared statement
val - the value of the column
col - the column being set
type - the field mapping type code for the value
store - the store manager for the current context
Throws:
SQLException

setUnknown

public void setUnknown(PreparedStatement stmnt,
                       int idx,
                       Object val,
                       Column col)
                throws SQLException
Set a completely unknown parameter into a prepared statement.

Throws:
SQLException

serialize

public byte[] serialize(Object val,
                        JDBCStore store)
                 throws SQLException
Return the serialized bytes for the given object.

Throws:
SQLException

putBytes

public void putBytes(Object blob,
                     byte[] data)
              throws SQLException
Invoke the JDK 1.4 setBytes method on the given BLOB object.

Throws:
SQLException

putString

public void putString(Object clob,
                      String data)
               throws SQLException
Invoke the JDK 1.4 setString method on the given CLOB object.

Throws:
SQLException

putChars

public void putChars(Object clob,
                     char[] data)
              throws SQLException
Invoke the JDK 1.4 setCharacterStream method on the given CLOB object.

Throws:
SQLException

storageWarning

protected void storageWarning(Object orig,
                              Object converted)
Warn that a particular value could not be stored precisely. After the first warning for a particular type, messages will be turned into trace messages.


getJDBCType

public int getJDBCType(int metaTypeCode,
                       boolean lob)
Return the preferred Types constant for the given JavaTypes or JavaSQLTypes constant.


getPreferredType

public int getPreferredType(int type)
Return the preferred Types type for the given one. Returns the given type by default.


getTypeName

public String getTypeName(Column col)
Return the preferred database type name for the given column's type from Types.


getTypeName

public String getTypeName(int type)
Returns the type name for the specific constant as defined by Types.

Parameters:
type - the type
Returns:
the name for the type

appendSize

protected String appendSize(Column col,
                            String typeName)
Helper method to add size properties to the specified type. If present, the string "{0}" will be replaced with the size definition; otherwise the size definition will be appended to the type name. If your database has column types that don't allow size definitions, override this method to return the unaltered type name for columns of those types (or add the type names to the fixedSizeTypeNameSet).

Some databases support "type modifiers" for example the unsigned "modifier" in MySQL. In these cases the size should go between the type and the "modifier", instead of after the modifier. For example CREATE table FOO ( myint INT (10) UNSIGNED . . .) instead of CREATE table FOO ( myint INT UNSIGNED (10) . . .). Type modifiers should be added to typeModifierSet in subclasses.


insertSize

protected String insertSize(String typeName,
                            String size)
Helper method that inserts a size clause for a given SQL type.

Parameters:
typeName - The SQL type ie INT
size - The size clause ie (10)
Returns:
The typeName + size clause. Usually the size clause will be appended to typeName. If the typeName contains a marker : {0} or if typeName contains a modifier the size clause will be inserted appropriately.
See Also:
appendSize

setJoinSyntax

public void setJoinSyntax(String syntax)
Set the name of the join syntax to use: sql92, traditional, database


getPlaceholderValueString

public String getPlaceholderValueString(Column col)
Return a SQL string to act as a placeholder for the given column.


toSelectCount

public SQLBuffer toSelectCount(Select sel)
Create a SELECT COUNT statement in the proper join syntax for the given instance.


toDelete

public SQLBuffer toDelete(ClassMapping mapping,
                          Select sel,
                          Object[] params)
Create a DELETE statement for the specified Select. If the database does not support the bulk delete statement (such as cases where a subselect is required and the database doesn't support subselects), this method should return null.


toUpdate

public SQLBuffer toUpdate(ClassMapping mapping,
                          Select sel,
                          JDBCStore store,
                          Object[] params,
                          Map updates)

toBulkOperation

protected SQLBuffer toBulkOperation(ClassMapping mapping,
                                    Select sel,
                                    JDBCStore store,
                                    Object[] params,
                                    Map updateParams)
Returns the SQL for a bulk operation, either a DELETE or an UPDATE.

Parameters:
mapping - the mappng against which we are operating
sel - the Select that will constitute the WHERE clause
store - the current store
updateParams - the Map that holds the update parameters; a null value indicates that this is a delete operation
Returns:
the SQLBuffer for the update, or null if it is not possible to perform the bulk update

getDeleteTargets

protected SQLBuffer getDeleteTargets(Select sel)

appendUpdates

protected void appendUpdates(Select sel,
                             JDBCStore store,
                             SQLBuffer sql,
                             Object[] params,
                             Map updateParams,
                             boolean allowAlias)

getDeleteTableContentsSQL

public String[] getDeleteTableContentsSQL(Table[] tables)
Create SQL to delete the contents of the specified tables. The default implementation drops all non-deferred RESTRICT foreign key constraints involving the specified tables, issues DELETE statements against the tables, and then adds the dropped constraints back in. Databases with more optimal ways of deleting the contents of several tables should override this method.


toSelect

public SQLBuffer toSelect(Select sel,
                          boolean forUpdate,
                          JDBCFetchConfiguration fetch)
Create a SELECT statement in the proper join syntax for the given instance.


getFrom

protected SQLBuffer getFrom(Select sel,
                            boolean forUpdate)
Return the portion of the select statement between the FROM keyword and the WHERE keyword.


getFromSelect

protected SQLBuffer getFromSelect(Select sel,
                                  boolean forUpdate)
Return the FROM clause for a select that selects from a tmp table created by an inner select.


getWhere

protected SQLBuffer getWhere(Select sel,
                             boolean forUpdate)
Return the WHERE portion of the select statement, or null if no where conditions.


toTraditionalJoin

public SQLBuffer toTraditionalJoin(Join join)
Use the given join instance to create SQL joining its tables in the traditional style.


toSQL92Join

public SQLBuffer toSQL92Join(Join join,
                             boolean forUpdate,
                             boolean first)
Use the given join instance to create SQL joining its tables in the SQL92 style.


toNativeJoin

public SQLBuffer toNativeJoin(Join join)
Use the given join instance to create SQL joining its tables in the database's native syntax. Throws an exception by default.


canOuterJoin

public boolean canOuterJoin(int syntax,
                            ForeignKey fk)
Returns if the given foreign key can be eagerly loaded using other joins.


toSelect

public SQLBuffer toSelect(SQLBuffer selects,
                          JDBCFetchConfiguration fetch,
                          SQLBuffer from,
                          SQLBuffer where,
                          SQLBuffer group,
                          SQLBuffer having,
                          SQLBuffer order,
                          boolean distinct,
                          boolean forUpdate,
                          long start,
                          long end)
Combine the given components into a SELECT statement.


toSelect

public SQLBuffer toSelect(SQLBuffer selects,
                          JDBCFetchConfiguration fetch,
                          SQLBuffer from,
                          SQLBuffer where,
                          SQLBuffer group,
                          SQLBuffer having,
                          SQLBuffer order,
                          boolean distinct,
                          boolean forUpdate,
                          long start,
                          long end,
                          boolean subselect)
Combine the given components into a SELECT statement.


toSelect

public SQLBuffer toSelect(SQLBuffer selects,
                          JDBCFetchConfiguration fetch,
                          SQLBuffer from,
                          SQLBuffer where,
                          SQLBuffer group,
                          SQLBuffer having,
                          SQLBuffer order,
                          boolean distinct,
                          boolean forUpdate,
                          long start,
                          long end,
                          boolean subselect,
                          boolean checkTableForUpdate)

toSelect

public SQLBuffer toSelect(SQLBuffer selects,
                          JDBCFetchConfiguration fetch,
                          SQLBuffer from,
                          SQLBuffer where,
                          SQLBuffer group,
                          SQLBuffer having,
                          SQLBuffer order,
                          boolean distinct,
                          boolean forUpdate,
                          long start,
                          long end,
                          Select sel)
Combine the given components into a SELECT statement.


getForUpdateClause

protected String getForUpdateClause(JDBCFetchConfiguration fetch,
                                    boolean isForUpdate,
                                    Select sel)
Get the update clause for the query based on the updateClause and isolationLevel hints


getSelectOperation

public String getSelectOperation(JDBCFetchConfiguration fetch)
Return the "SELECT" operation clause, adding any available hints, etc.


toOperation

public SQLBuffer toOperation(String op,
                             SQLBuffer selects,
                             SQLBuffer from,
                             SQLBuffer where,
                             SQLBuffer group,
                             SQLBuffer having,
                             SQLBuffer order,
                             boolean distinct,
                             long start,
                             long end,
                             String forUpdateClause)
Return the SQL for the given selecting operation.


toOperation

public SQLBuffer toOperation(String op,
                             SQLBuffer selects,
                             SQLBuffer from,
                             SQLBuffer where,
                             SQLBuffer group,
                             SQLBuffer having,
                             SQLBuffer order,
                             boolean distinct,
                             long start,
                             long end,
                             String forUpdateClause,
                             boolean subselect)
Return the SQL for the given selecting operation.


appendSelectRange

protected void appendSelectRange(SQLBuffer buf,
                                 long start,
                                 long end,
                                 boolean subselect)
If this dictionary can select ranges, use this method to append the range SQL.


getSelects

protected SQLBuffer getSelects(Select sel,
                               boolean distinctIdentifiers,
                               boolean forUpdate)
Return the portion of the select statement between the SELECT keyword and the FROM keyword.


appendSelect

protected void appendSelect(SQLBuffer selectSQL,
                            Object elem,
                            Select sel,
                            int idx)
Append elem to selectSQL.

Parameters:
selectSQL - The SQLBuffer to append to.
alias - A SQLBuffer or a String to append.
Since:
1.1.0

supportsLocking

public boolean supportsLocking(Select sel)
Returns true if a "FOR UPDATE" clause can be used for the specified Select object.


supportsRandomAccessResultSet

public boolean supportsRandomAccessResultSet(Select sel,
                                             boolean forUpdate)
Return false if the given select requires a forward-only result set.


assertSupport

public void assertSupport(boolean feature,
                          String property)
Assert that the given dictionary flag is true. If it is not true, throw an error saying that the given setting needs to return true for the current operation to work.


substring

public void substring(SQLBuffer buf,
                      FilterValue str,
                      FilterValue start,
                      FilterValue end)
Invoke this database's substring function.

Parameters:
buf - the SQL buffer to write the substring invocation to
str - a query value representing the target string
start - a query value representing the start index
end - a query value representing the end index, or null for none

indexOf

public void indexOf(SQLBuffer buf,
                    FilterValue str,
                    FilterValue find,
                    FilterValue start)
Invoke this database's indexOf function.

Parameters:
buf - the SQL buffer to write the indexOf invocation to
str - a query value representing the target string
find - a query value representing the search string
start - a query value representing the start index, or null to start at the beginning

mathFunction

public void mathFunction(SQLBuffer buf,
                         String op,
                         FilterValue lhs,
                         FilterValue rhs)
Append the numeric parts of a mathematical function.

Parameters:
buf - the SQL buffer to write the math function
op - the mathematical operation to perform
lhs - the left hand side of the math function
rhs - the right hand side of the math function

comparison

public void comparison(SQLBuffer buf,
                       String op,
                       FilterValue lhs,
                       FilterValue rhs)
Append a comparison.

Parameters:
buf - the SQL buffer to write the comparison
op - the comparison operation to perform
lhs - the left hand side of the comparison
rhs - the right hand side of the comparison

appendXmlComparison

public void appendXmlComparison(SQLBuffer buf,
                                String op,
                                FilterValue lhs,
                                FilterValue rhs,
                                boolean lhsxml,
                                boolean rhsxml)
If this dictionary supports XML type, use this method to append xml predicate.


appendNumericCast

protected void appendNumericCast(SQLBuffer buf,
                                 FilterValue val)
Append SQL for the given numeric value to the buffer, casting as needed.


appendCast

public void appendCast(SQLBuffer buf,
                       Object val,
                       int type)
Cast the specified value to the specified type.

Parameters:
buf - the buffer to append the cast to
val - the value to cast
type - the type of the case, e.g. Types.NUMERIC

appendLength

protected void appendLength(SQLBuffer buf,
                            int type)

addCastAsType

public String addCastAsType(String func,
                            Val val)
add CAST for a function operator where operand is a param

Parameters:
func - function name
val -
Returns:
updated func

refSchemaComponents

public void refSchemaComponents(Table table)
Increment the reference count of any table components that this dictionary adds that are not used by mappings. Does nothing by default.


getFullName

public String getFullName(Table table,
                          boolean logical)
Returns the full name of the table, including the schema (delimited by catalogSeparator).


getFullName

public String getFullName(Index index)
Returns the full name of the index, including the schema (delimited by the result of catalogSeparator).


getFullName

public String getFullName(Sequence seq)
Returns the full name of the sequence, including the schema (delimited by the result of catalogSeparator).


getValidTableName

public String getValidTableName(String name,
                                Schema schema)
Make any necessary changes to the given table name to make it valid for the current DB.


getValidSequenceName

public String getValidSequenceName(String name,
                                   Schema schema)
Make any necessary changes to the given sequence name to make it valid for the current DB.


getValidColumnName

public String getValidColumnName(String name,
                                 Table table)
Make any necessary changes to the given column name to make it valid for the current DB. The column name will be made unique for the specified table.


getValidColumnName

public String getValidColumnName(String name,
                                 Table table,
                                 boolean checkForUniqueness)
Make any necessary changes to the given column name to make it valid for the current DB. If checkForUniqueness is true, the column name will be made unique for the specified table.


getValidPrimaryKeyName

public String getValidPrimaryKeyName(String name,
                                     Table table)
Make any necessary changes to the given primary key name to make it valid for the current DB.


getValidForeignKeyName

public String getValidForeignKeyName(String name,
                                     Table table,
                                     Table toTable)
Make any necessary changes to the given foreign key name to make it valid for the current DB.


getValidIndexName

public String getValidIndexName(String name,
                                Table table)
Make any necessary changes to the given index name to make it valid for the current DB.


getValidUniqueName

public String getValidUniqueName(String name,
                                 Table table)
Make any necessary changes to the given unique constraint name to make it valid for the current DB.


shorten

protected static String shorten(String name,
                                int targetLength)
Shorten the specified name to the specified target name. This will be done by first stripping out the vowels, and then removing characters from the middle of the word until it reaches the target length.


makeNameValid

protected String makeNameValid(String name,
                               NameSet set,
                               int maxLen,
                               int nameType)
Shortens the given name to the given maximum length, then checks that it is not a reserved word. If it is reserved, appends a "0". If the name conflicts with an existing schema component, the last character is replace with '0', then '1', etc. Note that the given max len may be 0 if the database metadata is incomplete.


makeNameValid

protected String makeNameValid(String name,
                               NameSet set,
                               int maxLen,
                               int nameType,
                               boolean checkForUniqueness)
Shortens the given name to the given maximum length, then checks that it is not a reserved word. If it is reserved, appends a "0". If the name conflicts with an existing schema component and uniqueness checking is enabled, the last character is replace with '0', then '1', etc. Note that the given max len may be 0 if the database metadata is incomplete.


getCreateTableSQL

public String[] getCreateTableSQL(Table table)
Return a series of SQL statements to create the given table, complete with columns. Indexes and constraints will be created separately.


comment

protected StringBuffer comment(StringBuffer buf,
                               String comment)

getDropTableSQL

public String[] getDropTableSQL(Table table)
Return a series of SQL statements to drop the given table. Indexes will be dropped separately. Returns DROP TABLE <table name> by default.


getCreateSequenceSQL

public String[] getCreateSequenceSQL(Sequence seq)
Return a series of SQL statements to create the given sequence. Returns CREATE SEQUENCE <sequence name>[ START WITH <start>] [ INCREMENT BY <increment>] by default.


getDropSequenceSQL

public String[] getDropSequenceSQL(Sequence seq)
Return a series of SQL statements to drop the given sequence. Returns DROP SEQUENCE <sequence name> by default.


getCreateIndexSQL

public String[] getCreateIndexSQL(Index index)
Return a series of SQL statements to create the given index. Returns CREATE [UNIQUE] INDEX <index name> ON <table name> (<col list>) by default.


getDropIndexSQL

public String[] getDropIndexSQL(Index index)
Return a series of SQL statements to drop the given index. Returns DROP INDEX <index name> by default.


getAddColumnSQL

public String[] getAddColumnSQL(Column column)
Return a series of SQL statements to add the given column to its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> ADD (<col dec>) by default.


getDropColumnSQL

public String[] getDropColumnSQL(Column column)
Return a series of SQL statements to drop the given column from its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> DROP COLUMN <col name> by default.


getAddPrimaryKeySQL

public String[] getAddPrimaryKeySQL(PrimaryKey pk)
Return a series of SQL statements to add the given primary key to its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> ADD <pk cons sql > by default.


getDropPrimaryKeySQL

public String[] getDropPrimaryKeySQL(PrimaryKey pk)
Return a series of SQL statements to drop the given primary key from its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> DROP CONSTRAINT <pk name> by default.


getAddForeignKeySQL

public String[] getAddForeignKeySQL(ForeignKey fk)
Return a series of SQL statements to add the given foreign key to its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> ADD <fk cons sql > by default.


getDropForeignKeySQL

public String[] getDropForeignKeySQL(ForeignKey fk)
Return a series of SQL statements to drop the given foreign key from its table. Return an empty array if operation not supported. Returns ALTER TABLE <table name> DROP CONSTRAINT <fk name> by default.


getDeclareColumnSQL

protected String getDeclareColumnSQL(Column col,
                                     boolean alter)
Return the declaration SQL for the given column. This method is used for each column from within getCreateTableSQL(org.apache.openjpa.jdbc.schema.Table) and getAddColumnSQL(org.apache.openjpa.jdbc.schema.Column).


getPrimaryKeyConstraintSQL

protected String getPrimaryKeyConstraintSQL(PrimaryKey pk)
Return the declaration SQL for the given primary key. This method is used from within getCreateTableSQL(org.apache.openjpa.jdbc.schema.Table) and getAddPrimaryKeySQL(org.apache.openjpa.jdbc.schema.PrimaryKey). Returns CONSTRAINT <pk name> PRIMARY KEY (<col list>) by default.


getForeignKeyConstraintSQL

protected String getForeignKeyConstraintSQL(ForeignKey fk)
Return the declaration SQL for the given foreign key, or null if it is not supported. This method is used from within getCreateTableSQL(org.apache.openjpa.jdbc.schema.Table) and getAddForeignKeySQL(org.apache.openjpa.jdbc.schema.ForeignKey). Returns CONSTRAINT <cons name> FOREIGN KEY (<col list>) REFERENCES <foreign table> (<col list>) [ON DELETE <action>] [ON UPDATE <action>] by default.


supportsDeferredForeignKeyConstraints

protected boolean supportsDeferredForeignKeyConstraints()
Whether or not this dictionary supports deferred foreign key constraints. This implementation returns supportsUniqueConstraints.

Since:
1.1.0

supportsDeleteAction

public boolean supportsDeleteAction(int action)
Whether this database supports the given foreign key delete action.


supportsUpdateAction

public boolean supportsUpdateAction(int action)
Whether this database supports the given foreign key update action.


getUniqueConstraintSQL

protected String getUniqueConstraintSQL(Unique unq)
Return the declaration SQL for the given unique constraint. This method is used from within getCreateTableSQL(org.apache.openjpa.jdbc.schema.Table). Returns CONSTRAINT <name> UNIQUE (<col list>) by default.


supportsDeferredUniqueConstraints

protected boolean supportsDeferredUniqueConstraints()
Whether or not this dictionary supports deferred unique constraints. This implementation returns supportsUniqueConstraints.

Since:
1.1.0

isSystemTable

public boolean isSystemTable(String name,
                             String schema,
                             boolean targetSchema)
This method is used to filter system tables from database metadata. Return true if the given table name represents a system table that should not appear in the schema definition. By default, returns true only if the given table is in the internal list of system tables, or if the given schema is in the list of system schemas and is not the target schema.

Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas

isSystemIndex

public boolean isSystemIndex(String name,
                             Table table)
This method is used to filter system indexes from database metadata. Return true if the given index name represents a system index that should not appear in the schema definition. Returns false by default.

Parameters:
name - the index name
table - the index table

isSystemSequence

public boolean isSystemSequence(String name,
                                String schema,
                                boolean targetSchema)
This method is used to filter system sequences from database metadata. Return true if the given sequence represents a system sequence that should not appear in the schema definition. Returns true if system schema by default.

Parameters:
name - the table name
schema - the table schema; may be null
targetSchema - if true, then the given schema was listed by the user as one of his schemas

getTables

public Table[] getTables(DatabaseMetaData meta,
                         String catalog,
                         String schemaName,
                         String tableName,
                         Connection conn)
                  throws SQLException
Reflect on the schema to find tables matching the given name pattern.

Throws:
SQLException

newTable

protected Table newTable(ResultSet tableMeta)
                  throws SQLException
Create a new table from the information in the schema metadata.

Throws:
SQLException

getSequences

public Sequence[] getSequences(DatabaseMetaData meta,
                               String catalog,
                               String schemaName,
                               String sequenceName,
                               Connection conn)
                        throws SQLException
Reflect on the schema to find sequences matching the given name pattern. Returns an empty array by default, as there is no standard way to retrieve a list of sequences.

Throws:
SQLException

newSequence

protected Sequence newSequence(ResultSet sequenceMeta)
                        throws SQLException
Create a new sequence from the information in the schema metadata.

Throws:
SQLException

getSequencesSQL

protected String getSequencesSQL(String schemaName,
                                 String sequenceName)
Return the SQL needed to select the list of sequences.


getColumns

public Column[] getColumns(DatabaseMetaData meta,
                           String catalog,
                           String schemaName,
                           String tableName,
                           String columnName,
                           Connection conn)
                    throws SQLException
Reflect on the schema to find columns matching the given table and column patterns.

Throws:
SQLException

newColumn

protected Column newColumn(ResultSet colMeta)
                    throws SQLException
Create a new column from the information in the schema metadata.

Throws:
SQLException

getPrimaryKeys

public PrimaryKey[] getPrimaryKeys(DatabaseMetaData meta,
                                   String catalog,
                                   String schemaName,
                                   String tableName,
                                   Connection conn)
                            throws SQLException
Reflect on the schema to find primary keys for the given table pattern.

Throws:
SQLException

getPrimaryKeysFromGetPrimaryKeys

protected PrimaryKey[] getPrimaryKeysFromGetPrimaryKeys(DatabaseMetaData meta,
                                                        String catalog,
                                                        String schemaName,
                                                        String tableName,
                                                        Connection conn)
                                                 throws SQLException
Reflect on the schema to find primary keys for the given table pattern.

Throws:
SQLException

newPrimaryKey

protected PrimaryKey newPrimaryKey(ResultSet pkMeta)
                            throws SQLException
Create a new primary key from the information in the schema metadata.

Throws:
SQLException

getPrimaryKeysFromBestRowIdentifier

protected PrimaryKey[] getPrimaryKeysFromBestRowIdentifier(DatabaseMetaData meta,
                                                           String catalog,
                                                           String schemaName,
                                                           String tableName,
                                                           Connection conn)
                                                    throws SQLException
Reflect on the schema to find primary keys for the given table pattern.

Throws:
SQLException

getIndexInfo

public Index[] getIndexInfo(DatabaseMetaData meta,
                            String catalog,
                            String schemaName,
                            String tableName,
                            boolean unique,
                            boolean approx,
                            Connection conn)
                     throws SQLException
Reflect on the schema to find indexes matching the given table pattern.

Throws:
SQLException

newIndex

protected Index newIndex(ResultSet idxMeta)
                  throws SQLException
Create a new index from the information in the schema metadata.

Throws:
SQLException

getImportedKeys

public ForeignKey[] getImportedKeys(DatabaseMetaData meta,
                                    String catalog,
                                    String schemaName,
                                    String tableName,
                                    Connection conn)
                             throws SQLException
Reflect on the schema to return foreign keys imported by the given table pattern.

Throws:
SQLException

newForeignKey

protected ForeignKey newForeignKey(ResultSet fkMeta)
                            throws SQLException
Create a new foreign key from the information in the schema metadata.

Throws:
SQLException

getTableNameForMetadata

protected String getTableNameForMetadata(String tableName)
Returns the table name that will be used for obtaining information from DatabaseMetaData.


getSchemaNameForMetadata

protected String getSchemaNameForMetadata(String schemaName)
Returns the schema name that will be used for obtaining information from DatabaseMetaData.


getCatalogNameForMetadata

protected String getCatalogNameForMetadata(String catalogName)
Returns the catalog name that will be used for obtaining information from DatabaseMetaData.


getColumnNameForMetadata

protected String getColumnNameForMetadata(String columnName)
Returns the column name that will be used for obtaining information from DatabaseMetaData.


convertSchemaCase

protected String convertSchemaCase(String objectName)
Convert the specified schema name to a name that the database will be able to understand.


getSchemaCase

public String getSchemaCase()
Return DB specific schemaCase


getGeneratedKey

public Object getGeneratedKey(Column col,
                              Connection conn)
                       throws SQLException
Return the last generated value for the given column. Throws an exception by default if lastGeneratedKeyQuery is null.

Throws:
SQLException

getGeneratedKeySequenceName

protected String getGeneratedKeySequenceName(Column col)
Return the sequence name used by databases for the given autoassigned column. This is only used by databases that require an explicit name to be used for auto-assign support.


setConfiguration

public void setConfiguration(Configuration conf)
Description copied from interface: Configurable
Invoked prior to setting bean properties.

Specified by:
setConfiguration in interface Configurable

startConfiguration

public void startConfiguration()
Description copied from interface: Configurable
Invoked before bean property configuration is begun on this object.

Specified by:
startConfiguration in interface Configurable

endConfiguration

public void endConfiguration()
Description copied from interface: Configurable
Invoked upon completion of bean property configuration for this object.

Specified by:
endConfiguration in interface Configurable

addErrorCode

public void addErrorCode(int errorType,
                         String errorCode)

decorate

public Connection decorate(Connection conn)
                    throws SQLException
Decorate the given connection if needed. Some databases require special handling for JDBC bugs. This implementation issues any initializationSQL that has been set for the dictionary but does not decorate the connection.

Specified by:
decorate in interface ConnectionDecorator
Throws:
SQLException

handleWarning

public void handleWarning(SQLWarning warning)
                   throws SQLException
Implementation of the LoggingConnectionDecorator.SQLWarningHandler interface that allows customization of the actions to perform when a SQLWarning occurs at any point on a Connection, Statement, or ResultSet. This method may be used determine those warnings the application wants to consider critical failures, and throw the warning in those cases. By default, this method does nothing.

Specified by:
handleWarning in interface LoggingConnectionDecorator.SQLWarningHandler
Throws:
SQLException
See Also:
LoggingConnectionDecorator.setWarningAction(java.lang.String), LoggingConnectionDecorator.setWarningHandler(org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.SQLWarningHandler)

newStoreException

public OpenJPAException newStoreException(String msg,
                                          SQLException[] causes,
                                          Object failed)
Return a new exception that wraps causes. However, the details of exactly what type of exception is returned can be determined by the implementation. This may take into account DB-specific exception information in causes.


closeDataSource

public void closeDataSource(DataSource dataSource)
Closes the specified DataSource and releases any resources associated with it.

Parameters:
dataSource - the DataSource to close

getVersionColumn

public String getVersionColumn(Column column,
                               String tableAlias)
Return version column name

Parameters:
column -
tableAlias - : this is needed for platform specific version column
Returns:

insertBlobForStreamingLoad

public void insertBlobForStreamingLoad(Row row,
                                       Column col,
                                       JDBCStore store,
                                       Object ob,
                                       Select sel)
                                throws SQLException
Throws:
SQLException

insertClobForStreamingLoad

public void insertClobForStreamingLoad(Row row,
                                       Column col,
                                       Object ob)
                                throws SQLException
Throws:
SQLException

updateBlob

public void updateBlob(Select sel,
                       JDBCStore store,
                       InputStream is)
                throws SQLException
Throws:
SQLException

updateClob

public void updateClob(Select sel,
                       JDBCStore store,
                       Reader reader)
                throws SQLException
Throws:
SQLException

copy

protected long copy(InputStream in,
                    OutputStream out)
             throws IOException
Throws:
IOException

copy

protected long copy(Reader reader,
                    Writer writer)
             throws IOException
Throws:
IOException

getCastFunction

public String getCastFunction(Val val,
                              String func)
Attach CAST to the current function if necessary

Parameters:
val - operand value
Returns:
a String with the correct CAST function syntax

createIndexIfNecessary

public void createIndexIfNecessary(Schema schema,
                                   String table,
                                   Column pkColumn)
Create an index if necessary for some database tables


getBatchLimit

public int getBatchLimit()
Return the batchLimit


setBatchLimit

public void setBatchLimit(int limit)
Set the batchLimit value


validateBatchProcess

public boolean validateBatchProcess(RowImpl row,
                                    Column[] autoAssign,
                                    OpenJPAStateManager sm,
                                    ClassMapping cmd)
Validate the batch process. In some cases, we can't batch the statements due to some restrictions. For example, if the GeneratedType=IDENTITY, we have to disable the batch process because we need to get the ID value right away for the in-memory entity to use.


validateDBSpecificBatchProcess

public boolean validateDBSpecificBatchProcess(boolean disableBatch,
                                              RowImpl row,
                                              Column[] autoAssign,
                                              OpenJPAStateManager sm,
                                              ClassMapping cmd)
Allow each Dictionary to validate its own batch process.


executeQuery

protected ResultSet executeQuery(Connection conn,
                                 PreparedStatement stmnt,
                                 String sql)
                          throws SQLException
This method is to provide override for non-JDBC or JDBC-like implementation of executing query.

Throws:
SQLException

prepareStatement

protected PreparedStatement prepareStatement(Connection conn,
                                             String sql)
                                      throws SQLException
This method is to provide override for non-JDBC or JDBC-like implementation of preparing statement.

Throws:
SQLException

getSequence

protected Sequence[] getSequence(ResultSet rs)
                          throws SQLException
This method is to provide override for non-JDBC or JDBC-like implementation of getting sequence from the result set.

Throws:
SQLException

getKey

protected Object getKey(ResultSet rs,
                        Column col)
                 throws SQLException
This method is to provide override for non-JDBC or JDBC-like implementation of getting key from the result set.

Throws:
SQLException

calculateValue

protected void calculateValue(Val val,
                              Select sel,
                              ExpContext ctx,
                              ExpState state,
                              Path path,
                              ExpState pathState)
This method is to provide override for non-JDBC or JDBC-like implementation of calculating value.


isSelect

public boolean isSelect(String sql)
Determine whether the provided sql may be treated as a select statement on this database.

Parameters:
sql - A sql statement.
Returns:
true if sql represents a select statement.

needsToCreateIndex

public boolean needsToCreateIndex(Index idx,
                                  Table table)

getBatchUpdateCount

public int getBatchUpdateCount(PreparedStatement ps)
                        throws SQLException
Return batched statements update succes count

Parameters:
ps - A PreparedStatement
Returns:
return update count
Throws:
SQLException

getTrimSchemaName

public boolean getTrimSchemaName()

setTrimSchemaName

public void setTrimSchemaName(boolean trimSchemaName)

deleteStream

public void deleteStream(JDBCStore store,
                         Select sel)
                  throws SQLException
Throws:
SQLException


Copyright © 2006-2009 Apache Software Foundation. All Rights Reserved.