org.apache.openjpa.jdbc.sql
Class SybaseDictionary

java.lang.Object
  extended by org.apache.openjpa.jdbc.sql.DBDictionary
      extended by org.apache.openjpa.jdbc.sql.AbstractSQLServerDictionary
          extended by org.apache.openjpa.jdbc.sql.SybaseDictionary
All Implemented Interfaces:
JoinSyntaxes, org.apache.openjpa.lib.conf.Configurable, org.apache.openjpa.lib.jdbc.ConnectionDecorator, org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.SQLWarningHandler

public class SybaseDictionary
extends AbstractSQLServerDictionary

Dictionary for Sybase. The main point of interest is that by default, every table that is created will have a unique column named "UNQ_INDEX" of the "IDENTITY" type. OpenJPA will not ever utilize this column. However, due to internal Sybase restrictions, this column is required in order to support pessimistic (datastore) locking, since Sybase requires that any tables in a "SELECT ... FOR UPDATE" clause have a unique index that is not included in the list of columns, as described in the Sybase documentation. This behavior can be surpressed by setting the dictionary property CreateIdentityColumn=false. The name of the unique column can be changed by setting the property IdentityColumnName=COLUMN_NAME. A good Sybase type reference is can be found here.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
DBDictionary.SerializedData
 
Field Summary
 boolean createIdentityColumn
          If true, then whenever the schematool creates a table, it will append an additional IDENTITY column to the table's creation SQL.
 java.lang.String identityColumnName
          If createIdentityColumn is true, then the identityColumnName will be the name of the additional unique column that will be created.
 
Fields inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
allowsAliasInBulkClause, arrayTypeName, autoAssignClause, autoAssignTypeName, bigintTypeName, binaryTypeName, bitLengthFunction, bitTypeName, blobTypeName, booleanTypeName, castFunction, catalogSeparator, CENTI, characterColumnSize, charTypeName, clobTypeName, closePoolSQL, concatenateDelimiter, concatenateFunction, conf, connected, CONS_NAME_AFTER, CONS_NAME_BEFORE, CONS_NAME_MID, constraintNameMode, createPrimaryKeys, crossJoinClause, currentDateFunction, currentTimeFunction, currentTimestampFunction, datePrecision, dateTypeName, DECI, decimalTypeName, distinctCountColumnSeparator, distinctTypeName, doubleTypeName, driverVendor, dropTableSQL, fixedSizeTypeNames, fixedSizeTypeNameSet, floatTypeName, forUpdateClause, initializationSQL, innerJoinClause, integerTypeName, javaObjectTypeName, joinSyntax, lastGeneratedKeyQuery, log, longVarbinaryTypeName, longVarcharTypeName, maxAutoAssignNameLength, maxColumnNameLength, maxConstraintNameLength, maxEmbeddedBlobSize, maxEmbeddedClobSize, maxIndexesPerTable, maxIndexNameLength, maxTableNameLength, MICRO, MILLI, NAME_ANY, NAME_SEQUENCE, NAME_TABLE, NANO, nextSequenceQuery, nullTypeName, numericTypeName, otherTypeName, outerJoinClause, platform, RANGE_POST_DISTINCT, RANGE_POST_SELECT, RANGE_PRE_DISTINCT, rangePosition, realTypeName, refTypeName, requiresAliasForSubselect, requiresAutoCommitForMetaData, requiresCastForComparisons, requiresCastForMathFunctions, requiresConditionForCrossJoin, reservedWords, reservedWordSet, SCHEMA_CASE_LOWER, SCHEMA_CASE_PRESERVE, SCHEMA_CASE_UPPER, schemaCase, searchStringEscape, SEC, simulateLocking, smallintTypeName, storageLimitationsFatal, storeCharsAsNumbers, storeLargeNumbersAsStrings, stringLengthFunction, structTypeName, substringFunctionName, supportsAlterTableWithAddColumn, supportsAlterTableWithDropColumn, supportsAutoAssign, supportsCascadeDeleteAction, supportsCascadeUpdateAction, supportsCorrelatedSubselect, supportsDefaultDeleteAction, supportsDefaultUpdateAction, supportsDeferredConstraints, supportsForeignKeys, supportsHaving, supportsLockingWithDistinctClause, supportsLockingWithInnerJoin, supportsLockingWithMultipleTables, supportsLockingWithOrderClause, supportsLockingWithOuterJoin, supportsLockingWithSelectRange, supportsModOperator, supportsMultipleNontransactionalResultSets, supportsNullDeleteAction, supportsNullTableForGetColumns, supportsNullTableForGetImportedKeys, supportsNullTableForGetIndexInfo, supportsNullTableForGetPrimaryKeys, supportsNullUpdateAction, supportsQueryTimeout, supportsRestrictDeleteAction, supportsRestrictUpdateAction, supportsSchemaForGetColumns, supportsSchemaForGetTables, supportsSelectEndIndex, supportsSelectForUpdate, supportsSelectStartIndex, supportsSubselect, supportsUniqueConstraints, systemSchemas, systemSchemaSet, systemTables, systemTableSet, tableForUpdateClause, tableTypes, timestampTypeName, timeTypeName, tinyintTypeName, toLowerCaseFunction, toUpperCaseFunction, trimBothFunction, trimLeadingFunction, trimTrailingFunction, useGetBestRowIdentifierForPrimaryKeys, useGetBytesForBlobs, useGetObjectForBlobs, useGetStringForClobs, useSchemaName, useSetBytesForBlobs, useSetStringForClobs, validationSQL, varbinaryTypeName, varcharTypeName, VENDOR_DATADIRECT, VENDOR_OTHER
 
Fields inherited from interface org.apache.openjpa.jdbc.sql.JoinSyntaxes
SYNTAX_DATABASE, SYNTAX_SQL92, SYNTAX_TRADITIONAL
 
Constructor Summary
SybaseDictionary()
           
 
Method Summary
 java.sql.Connection decorate(java.sql.Connection conn)
          Decorate the given connection if needed.
 void endConfiguration()
           
 java.lang.String[] getAddForeignKeySQL(ForeignKey fk)
          Return a series of SQL statements to add the given foreign key to its table.
 java.lang.String[] getCreateTableSQL(Table table)
          Return a series of SQL statements to create the given table, complete with columns.
protected  java.lang.String getDeclareColumnSQL(Column col, boolean alter)
          Return the declaration SQL for the given column.
 java.lang.String[] getDropColumnSQL(Column column)
          Return a series of SQL statements to drop the given column from its table.
 int getJDBCType(int metaTypeCode, boolean lob)
          Return the preferred Types constant for the given JavaTypes or JavaSQLTypes constant.
 void refSchemaComponents(Table table)
          Increment the reference count of any table components that this dictionary adds that are not used by mappings.
 void setBigInteger(java.sql.PreparedStatement stmnt, int idx, java.math.BigInteger val, Column col)
          Set the given value as a parameter to the statement.
 
Methods inherited from class org.apache.openjpa.jdbc.sql.AbstractSQLServerDictionary
appendSelectRange, getColumns, getFullName, indexOf, setNull, substring
 
Methods inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
appendCast, appendNumericCast, appendSize, appendUpdates, assertSupport, canOuterJoin, closeDataSource, comparison, connectedConfiguration, convertSchemaCase, getAddColumnSQL, getAddPrimaryKeySQL, getArray, getAsciiStream, getBigDecimal, getBigInteger, getBinaryStream, getBlob, getBlobObject, getBoolean, getByte, getBytes, getCalendar, getCatalogNameForMetadata, getChar, getCharacterStream, getClob, getClobString, getColumnNameForMetadata, getCreateIndexSQL, getCreateSequenceSQL, getDate, getDate, getDouble, getDropForeignKeySQL, getDropIndexSQL, getDropPrimaryKeySQL, getDropSequenceSQL, getDropTableSQL, getFloat, getForeignKeyConstraintSQL, getFrom, getFromSelect, getFullName, getFullName, getGeneratedKey, getGeneratedKeySequenceName, getImportedKeys, getIndexInfo, getInt, getLocale, getLong, getNumber, getObject, getPlaceholderValueString, getPreferredType, getPrimaryKeyConstraintSQL, getPrimaryKeys, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromGetPrimaryKeys, getRef, getSchemaNameForMetadata, getSelectOperation, getSelects, getSequences, getSequencesSQL, getShort, getString, getTableNameForMetadata, getTables, getTime, getTimestamp, getTypeName, getTypeName, getUniqueConstraintSQL, getValidColumnName, getValidForeignKeyName, getValidIndexName, getValidPrimaryKeyName, getValidSequenceName, getValidTableName, getValidUniqueName, getWhere, handleWarning, isSystemIndex, isSystemSequence, isSystemTable, makeNameValid, mathFunction, newColumn, newForeignKey, newIndex, newPrimaryKey, newSequence, newStoreException, newTable, putBytes, putChars, putString, serialize, setArray, setAsciiStream, setBigDecimal, setBinaryStream, setBlob, setBlobObject, setBoolean, setByte, setBytes, setCalendar, setChar, setCharacterStream, setClob, setClobString, setConfiguration, setDate, setDate, setDouble, setFloat, setInt, setJoinSyntax, setLocale, setLong, setNumber, setObject, setRef, setShort, setString, setTime, setTimestamp, setTyped, setUnknown, shorten, startConfiguration, storageWarning, supportsDeleteAction, supportsLocking, supportsRandomAccessResultSet, supportsUpdateAction, toBulkOperation, toDelete, toNativeJoin, toOperation, toSelect, toSelect, toSelectCount, toSQL92Join, toTraditionalJoin, toUpdate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

createIdentityColumn

public boolean createIdentityColumn
If true, then whenever the schematool creates a table, it will append an additional IDENTITY column to the table's creation SQL. This is so Sybase will be able to perform SELECT...FOR UPDATE statements.


identityColumnName

public java.lang.String identityColumnName
If createIdentityColumn is true, then the identityColumnName will be the name of the additional unique column that will be created.

Constructor Detail

SybaseDictionary

public SybaseDictionary()
Method Detail

getJDBCType

public int getJDBCType(int metaTypeCode,
                       boolean lob)
Description copied from class: DBDictionary
Return the preferred Types constant for the given JavaTypes or JavaSQLTypes constant.

Overrides:
getJDBCType in class DBDictionary

setBigInteger

public void setBigInteger(java.sql.PreparedStatement stmnt,
                          int idx,
                          java.math.BigInteger val,
                          Column col)
                   throws java.sql.SQLException
Description copied from class: DBDictionary
Set the given value as a parameter to the statement.

Overrides:
setBigInteger in class DBDictionary
Throws:
java.sql.SQLException

getAddForeignKeySQL

public java.lang.String[] getAddForeignKeySQL(ForeignKey fk)
Description copied from class: DBDictionary
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.

Overrides:
getAddForeignKeySQL in class DBDictionary

getCreateTableSQL

public java.lang.String[] getCreateTableSQL(Table table)
Description copied from class: DBDictionary
Return a series of SQL statements to create the given table, complete with columns. Indexes and constraints will be created separately.

Overrides:
getCreateTableSQL in class DBDictionary

getDeclareColumnSQL

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

Overrides:
getDeclareColumnSQL in class DBDictionary

getDropColumnSQL

public java.lang.String[] getDropColumnSQL(Column column)
Description copied from class: DBDictionary
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.

Overrides:
getDropColumnSQL in class DBDictionary

refSchemaComponents

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

Overrides:
refSchemaComponents in class DBDictionary

endConfiguration

public void endConfiguration()
Specified by:
endConfiguration in interface org.apache.openjpa.lib.conf.Configurable
Overrides:
endConfiguration in class DBDictionary

decorate

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

Specified by:
decorate in interface org.apache.openjpa.lib.jdbc.ConnectionDecorator
Overrides:
decorate in class DBDictionary
Throws:
java.sql.SQLException


Copyright © 2006 Apache Software Foundation. All Rights Reserved.