Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.openjpa.jdbc.sql
Class SybaseDictionary

    java.lang.Object
      org.apache.openjpa.jdbc.sql.DBDictionary
          org.apache.openjpa.jdbc.sql.AbstractSQLServerDictionary
              org.apache.openjpa.jdbc.sql.SybaseDictionary

All Implemented Interfaces:
  JoinSyntaxes, Configurable, IdentifierConfiguration, ConnectionDecorator, 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
`protected static class` | `SybaseDictionary.SybaseConnection` Connection wrapper to cache the `Connection.getCatalog()` result, which takes a very long time with the Sybase Connection (and which we frequently invoke).

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.
`String` | `identityColumnName` If `createIdentityColumn` is true, then the `identityColumnName` will be the name of the additional unique column that will be created.
`boolean` | `ignoreNumericTruncation` If true, Sybase will ignore numeric truncation on insert or update operations.
`static String` | `NUMERIC_TRUNCATION_OFF_SQL`
`static String` | `RIGHT_TRUNCATION_ON_SQL`

Fields inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
`_proxyManager, allowsAliasInBulkClause, arrayTypeName, autoAssignClause, autoAssignTypeName, batchLimit, bigintTypeName, binaryTypeName, bitLengthFunction, bitTypeName, blobBufferSize, blobTypeName, booleanTypeName, castFunction, catalogSeparator, CENTI, characterColumnSize, charTypeName, clobBufferSize, 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, defaultSchemaName, delimitedCase, distinctCountColumnSeparator, distinctTypeName, doubleTypeName, driverVendor, dropTableSQL, fixedSizeTypeNames, fixedSizeTypeNameSet, floatTypeName, forUpdateClause, getStringVal, inClauseLimit, initializationSQL, innerJoinClause, integerTypeName, invalidColumnWordSet, isJDBC3, isJDBC4, javaObjectTypeName, joinSyntax, lastGeneratedKeyQuery, leadingDelimiter, log, longVarbinaryTypeName, longVarcharTypeName, maxAutoAssignNameLength, maxColumnNameLength, maxConstraintNameLength, maxEmbeddedBlobSize, maxEmbeddedClobSize, maxIndexesPerTable, maxIndexNameLength, maxTableNameLength, MICRO, MILLI, NAME_ANY, NAME_SEQUENCE, NAME_TABLE, nameConcatenator, NANO, nativeSequenceType, nextSequenceQuery, NO_BATCH, nullTypeName, numericTypeName, otherTypeName, outerJoinClause, platform, RANGE_POST_DISTINCT, RANGE_POST_LOCK, RANGE_POST_SELECT, RANGE_PRE_DISTINCT, rangePosition, realTypeName, refTypeName, reportsSuccessNoInfoOnBatchUpdates, requiresAliasForSubselect, requiresAutoCommitForMetaData, requiresCastForComparisons, requiresCastForMathFunctions, requiresConditionForCrossJoin, requiresSearchStringEscapeForLike, requiresTargetForDelete, reservedWords, reservedWordSet, roundTimeToMillisec, SCHEMA_CASE_LOWER, SCHEMA_CASE_PRESERVE, SCHEMA_CASE_UPPER, schemaCase, searchStringEscape, SEC, selectWords, selectWordSet, sequenceNameSQL, sequenceSchemaSQL, sequenceSQL, setStringRightTruncationOn, simulateLocking, smallintTypeName, sqlStateCodes, storageLimitationsFatal, storeCharsAsNumbers, storeLargeNumbersAsStrings, stringLengthFunction, structTypeName, substringFunctionName, supportsAlterTableWithAddColumn, supportsAlterTableWithDropColumn, supportsAutoAssign, supportsCascadeDeleteAction, supportsCascadeUpdateAction, supportsCaseConversionForLob, supportsComments, supportsCorrelatedSubselect, supportsDefaultDeleteAction, supportsDefaultUpdateAction, supportsDeferredConstraints, supportsDelimitedIdentifiers, supportsForeignKeys, supportsForeignKeysComposite, supportsGeneralCaseExpression, supportsGetGeneratedKeys, supportsHaving, supportsLockingWithDistinctClause, supportsLockingWithInnerJoin, supportsLockingWithMultipleTables, supportsLockingWithOrderClause, supportsLockingWithOuterJoin, supportsLockingWithSelectRange, supportsModOperator, supportsMultipleNontransactionalResultSets, supportsNullDeleteAction, supportsNullTableForGetColumns, supportsNullTableForGetImportedKeys, supportsNullTableForGetIndexInfo, supportsNullTableForGetPrimaryKeys, supportsNullUniqueColumn, supportsNullUpdateAction, supportsParameterInSelect, supportsQueryTimeout, supportsRestrictDeleteAction, supportsRestrictUpdateAction, supportsSchemaForGetColumns, supportsSchemaForGetTables, supportsSelectEndIndex, supportsSelectForUpdate, supportsSelectFromFinalTable, supportsSelectStartIndex, supportsSimpleCaseExpression, supportsSubselect, supportsUniqueConstraints, supportsXMLColumn, systemSchemas, systemSchemaSet, systemTables, systemTableSet, tableForUpdateClause, tableLengthIncludesSchema, tableTypes, timestampTypeName, timeTypeName, tinyintTypeName, toLowerCaseFunction, toUpperCaseFunction, trailingDelimiter, trimBothFunction, trimLeadingFunction, trimSchemaName, trimStringColumns, trimTrailingFunction, typeModifierSet, UNLIMITED, useGetBestRowIdentifierForPrimaryKeys, useGetBytesForBlobs, useGetObjectForBlobs, useGetStringForClobs, useJDBC4SetBinaryStream, useNativeSequenceCache, useSchemaName, useSetBytesForBlobs, useSetStringForClobs, useWildCardForCount, validationSQL, varbinaryTypeName, varcharTypeName, VENDOR_DATADIRECT, VENDOR_OTHER, xmlTypeEncoding, xmlTypeName`

Fields inherited from interface org.apache.openjpa.jdbc.sql.JoinSyntaxes
`SYNTAX_DATABASE, SYNTAX_SQL92, SYNTAX_TRADITIONAL`

Constructor Summary
`SybaseDictionary()`

Method Summary
`Connection` | `decorate(Connection conn)` Decorate the given connection if needed.
`void` | `endConfiguration()` Invoked upon completion of bean property configuration for this object.
`protected boolean` | `getBooleanFromResultSet(ResultSet rs, String jdbcName, String sybaseName)` Helper method obtains a boolean value from a given column in a ResultSet.
`String[]` | `getCreateTableSQL(Table table)` Return a series of SQL statements to create the given table, complete with columns.
`protected String` | `getDeclareColumnSQL(Column col, boolean alter)` Return the declaration SQL for the given column.
`String[]` | `getDropColumnSQL(Column column)` Return a series of SQL statements to drop the given column from its table.
`String` | `getIdentityColumnName()`
`String` | `getIsNotNullSQL(String colAlias, int colType)`
`String` | `getIsNullSQL(String colAlias, int colType)`
`int` | `getJDBCType(int metaTypeCode, boolean lob)` Return the preferred `Types` constant for the given `JavaTypes` or `JavaSQLTypes` constant.
`protected String` | `getStringFromResultSet(ResultSet rs, String jdbcName, String sybaseName)` Helper method obtains a string value from a given column in a ResultSet.
`void` | `indexOf(SQLBuffer buf, FilterValue str, FilterValue find, FilterValue start)` Invoke this database's indexOf function.
`boolean` | `isFatalException(int subtype, SQLException ex)` Determine if the given SQL Exception is fatal or recoverable (such as a timeout).
`protected Index` | `newIndex(ResultSet idxMeta)` Create a new index from the information in the index metadata.
`protected PrimaryKey` | `newPrimaryKey(ResultSet pkMeta)` Create a new primary key from the information in the schema metadata.
`void` | `refSchemaComponents(Table table)` Increment the reference count of any table components that this dictionary adds that are not used by mappings.
`void` | `setBigInteger(PreparedStatement stmnt, int idx, 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, setNull, substring`

Methods inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
`addCastAsType, addErrorCode, appendCast, appendLength, appendNumericCast, appendSelect, appendSize, appendUpdates, appendXmlComparison, assertSupport, calculateValue, canOuterJoin, checkNameLength, checkNameLength, checkNameLength, closeDataSource, combineForeignKey, comment, comparison, configureNamingRules, connectedConfiguration, convertSchemaCase, convertSchemaCase, copy, copy, createIndexIfNecessary, createIndexIfNecessary, deleteStream, delimitAll, executeQuery, fromDBName, getAddColumnSQL, getAddForeignKeySQL, getAddPrimaryKeySQL, getAlterSequenceSQL, getArray, getAsciiStream, getBatchFetchSize, getBatchLimit, getBatchUpdateCount, getBigDecimal, getBigInteger, getBinaryStream, getBlob, getBlobObject, getBoolean, getByte, getBytes, getCalendar, getCastFunction, getCastFunction, getCatalogNameForMetadata, getCatalogNameForMetadata, getChar, getCharacterStream, getClob, getClobString, getColumnDBName, getColumnIdentifier, getColumnNameForMetadata, getColumnNameForMetadata, getColumns, getConversionKey, getCreateIndexSQL, getCreateSequenceSQL, getCreateTableSQL, getDate, getDate, getDefaultIdentifierRule, getDefaultSchemaName, getDeleteTableContentsSQL, getDeleteTargets, getDelimitedCase, getDelimitIdentifiers, getDouble, getDropForeignKeySQL, getDropIndexSQL, getDropPrimaryKeySQL, getDropSequenceSQL, getDropTableSQL, getFloat, getForeignKeyConstraintSQL, getForUpdateClause, getFrom, getFromSelect, getFullIdentifier, getFullName, getFullName, getGeneratedKey, getGeneratedKeySequenceName, getGenKeySeqName, getIdentifierConcatenator, getIdentifierDelimiter, getIdentifierRule, getIdentifierRules, getImportedKeys, getImportedKeys, getImportedKeys, getImportedKeys, getIndexInfo, getIndexInfo, getInt, getInvalidColumnWordSet, getJDBCType, getJDBCType, getKey, getLeadingDelimiter, getLOBStream, getLocale, getLog, getLong, getMarkerForInsertUpdate, getNamingUtil, getNumber, getObject, getPlaceholderValueString, getPreferredType, getPrimaryKeyConstraintSQL, getPrimaryKeys, getPrimaryKeys, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromGetPrimaryKeys, getPrimaryKeysFromGetPrimaryKeys, getRef, getSchemaCase, getSchemaNameForMetadata, getSchemaNameForMetadata, getSelectOperation, getSelects, getSelectTableAliases, getSequence, getSequences, getSequences, getSequencesSQL, getSequencesSQL, getShort, getString, getSupportsDelimitedIdentifiers, getSupportsXMLColumn, getTableNameForMetadata, getTableNameForMetadata, getTables, getTables, getTime, getTimestamp, getTrailingDelimiter, getTrimSchemaName, getTypeName, getTypeName, getUniqueConstraintSQL, getValidColumnName, getValidColumnName, getValidColumnName, getValidColumnName, getValidForeignKeyName, getValidForeignKeyName, getValidIndexName, getValidIndexName, getValidPrimaryKeyName, getValidSequenceName, getValidSequenceName, getValidTableName, getValidTableName, getValidUniqueName, getValidUniqueName, getVersionColumn, getVersionColumn, getWhere, getXMLTypeEncoding, handleWarning, insertBlobForStreamingLoad, insertClobForStreamingLoad, insertSize, isImplicitJoin, isSelect, isSystemIndex, isSystemIndex, isSystemSequence, isSystemSequence, isSystemSequence, isSystemTable, isSystemTable, makeNameValid, makeNameValid, makeNameValid, makeNameValid, matchErrorState, mathFunction, narrow, needsToCreateIndex, needsToCreateIndex, newColumn, newForeignKey, newSequence, newStoreException, newTable, prepareStatement, putBytes, putChars, putString, serialize, setArray, setAsciiStream, setBatchLimit, setBigDecimal, setBinaryStream, setBlob, setBlobObject, setBoolean, setByte, setBytes, setCalendar, setChar, setCharacterStream, setClob, setClobString, setConfiguration, setDate, setDate, setDefaultSchemaName, setDelimitedCase, setDelimitIdentifiers, setDouble, setFloat, setInt, setJoinSyntax, setLeadingDelimiter, setLocale, setLong, setNumber, setObject, setQueryTimeout, setRef, setShort, setStatementQueryTimeout, setString, setSupportsDelimitedIdentifiers, setSupportsXMLColumn, setTime, setTimeouts, setTimeouts, setTimestamp, setTrailingDelimiter, setTrimSchemaName, setTyped, setUnknown, setUnknown, setXMLTypeEncoding, shorten, startConfiguration, storageWarning, supportsDeferredForeignKeyConstraints, supportsDeferredUniqueConstraints, supportsDeleteAction, supportsIsolationForUpdate, supportsLocking, supportsRandomAccessResultSet, supportsUpdateAction, toBulkOperation, toDBName, toDBName, toDelete, toLong, toNativeJoin, toOperation, toOperation, toSelect, toSelect, toSelect, toSelect, toSelect, toSelectCount, toSQL92Join, toTraditionalJoin, toUpdate, updateBlob, updateClob, validateBatchProcess, validateDBSpecificBatchProcess`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### RIGHT_TRUNCATION_ON_SQL

    public static String RIGHT_TRUNCATION_ON_SQL

### NUMERIC_TRUNCATION_OFF_SQL

    public static String NUMERIC_TRUNCATION_OFF_SQL

### 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 String identityColumnName

  If `createIdentityColumn` is true, then the `identityColumnName` will be the name of the additional unique column that will be created.

### ignoreNumericTruncation

    public boolean ignoreNumericTruncation

  If true, Sybase will ignore numeric truncation on insert or update operations. Otherwise, the operation will fail. The default value, false is in accordance with SQL92.

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(PreparedStatement stmnt,
                              int idx,
                              BigInteger val,
                              Column col)
                       throws SQLException

  Description copied from class: `DBDictionary`
  Set the given value as a parameter to the statement.

  Overrides:
    `setBigInteger` in class `DBDictionary`
  Throws:
    `SQLException`

### getCreateTableSQL

    public 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 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, org.apache.openjpa.jdbc.schema.SchemaGroup)` and `DBDictionary.getAddColumnSQL(org.apache.openjpa.jdbc.schema.Column)`.

  Overrides:
    `getDeclareColumnSQL` in class `DBDictionary`

### getDropColumnSQL

    public 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()

  Description copied from interface: `Configurable`
  Invoked upon completion of bean property configuration for this object.

  Specified by:
    `endConfiguration` in interface `Configurable`
  Overrides:
    `endConfiguration` in class `DBDictionary`

### decorate

    public Connection decorate(Connection conn)
                        throws 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 decorate the connection.

  Specified by:
    `decorate` in interface `ConnectionDecorator`
  Overrides:
    `decorate` in class `DBDictionary`
  Throws:
    `SQLException`

### getStringFromResultSet

    protected String getStringFromResultSet(ResultSet rs,
                                            String jdbcName,
                                            String sybaseName)
                                     throws SQLException

  Helper method obtains a string value from a given column in a ResultSet. Strings provided are column names, jdbcName will be tried first if an SQLException occurs we'll try the sybase name.

  Throws:
    `SQLException`

### getBooleanFromResultSet

    protected boolean getBooleanFromResultSet(ResultSet rs,
                                              String jdbcName,
                                              String sybaseName)
                                       throws SQLException

  Helper method obtains a boolean value from a given column in a ResultSet. Strings provided are column names, jdbcName will be tried first if an SQLException occurs we'll try the sybase name.

  Throws:
    `SQLException`

### newPrimaryKey

    protected PrimaryKey newPrimaryKey(ResultSet pkMeta)
                                throws SQLException

  Create a new primary key from the information in the schema metadata.

  Overrides:
    `newPrimaryKey` in class `DBDictionary`
  Throws:
    `SQLException`

### newIndex

    protected Index newIndex(ResultSet idxMeta)
                      throws SQLException

  Create a new index from the information in the index metadata.

  Overrides:
    `newIndex` in class `DBDictionary`
  Throws:
    `SQLException`

### isFatalException

    public boolean isFatalException(int subtype,
                                    SQLException ex)

  Description copied from class: `DBDictionary`
  Determine if the given SQL Exception is fatal or recoverable (such as a timeout). This implementation always returns true (i.e. all exceptions are fatal). The current dictionary implementation can overwrite this method to mark certain exception conditions as recoverable error.

  Overrides:
    `isFatalException` in class `DBDictionary`
  Parameters:
    `subtype` - A constant indicating the category of error as defined in `StoreException`.
    `ex` - original SQL Exception as raised by the database driver.
  Returns:
    false if the error is fatal.

### getIsNullSQL

    public String getIsNullSQL(String colAlias,
                               int colType)

  Overrides:
    `getIsNullSQL` in class `DBDictionary`

### getIsNotNullSQL

    public String getIsNotNullSQL(String colAlias,
                                  int colType)

  Overrides:
    `getIsNotNullSQL` in class `DBDictionary`

### getIdentityColumnName

    public String getIdentityColumnName()

  Overrides:
    `getIdentityColumnName` in class `DBDictionary`

### indexOf

    public void indexOf(SQLBuffer buf,
                        FilterValue str,
                        FilterValue find,
                        FilterValue start)

  Description copied from class: `DBDictionary`
  Invoke this database's indexOf function.

  Overrides:
    `indexOf` in class `DBDictionary`
  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

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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