Package 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
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
Modifier and TypeClassDescriptionprotected static class
Connection wrapper to cache theConnection.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.DateMillisecondBehaviors, DBDictionary.SerializedData
-
Field Summary
Modifier and TypeFieldDescriptionboolean
If true, then whenever theschematool
creates a table, it will append an additional IDENTITY column to the table's creation SQL.IfcreateIdentityColumn
is true, then theidentityColumnName
will be the name of the additional unique column that will be created.boolean
If true, Sybase will ignore numeric truncation on insert or update operations.static String
static String
Fields inherited from class org.apache.openjpa.jdbc.sql.DBDictionary
_procs, _proxyManager, allowQueryTimeoutOnFindUpdate, allowsAliasInBulkClause, arrayTypeName, autoAssignClause, autoAssignTypeName, batchLimit, bigintTypeName, binaryTypeName, bitLengthFunction, bitTypeName, blobBufferSize, blobTypeName, booleanRepresentation, 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, databaseProductName, databaseProductVersion, dateFractionDigits, datePrecision, dateTypeName, DECI, decimalTypeName, defaultSchemaName, delimitedCase, disableAlterSeqenceIncrementBy, disableSchemaFactoryColumnTypeErrors, distinctCountColumnSeparator, distinctTypeName, doubleTypeName, driverVendor, dropTableSQL, fixedSizeTypeNames, fixedSizeTypeNameSet, floatTypeName, forUpdateClause, fractionalTypeNameSet, fullResultCollectionInOrderByRelation, getStringVal, inClauseLimit, indexPhysicalForeignKeys, initializationSQL, innerJoinClause, integerTypeName, invalidColumnWordSet, isJDBC3, isJDBC4, javaObjectTypeName, javaToDbColumnNameProcessing, 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, timestampWithZoneTypeName, timeTypeName, timeWithZoneTypeName, 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
-
Method Summary
Modifier and TypeMethodDescriptiondecorate
(Connection conn) Decorate the given connection if needed.void
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.getIsNotNullSQL
(String colAlias, int colType) getIsNullSQL
(String colAlias, int colType) int
getJDBCType
(int metaTypeCode, boolean lob) 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
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, applyRange, assertSupport, calculateValue, canOuterJoin, 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, getBooleanRepresentation, getByte, getBytes, getCalendar, getCastFunction, getCastFunction, getCatalogNameForMetadata, getCatalogNameForMetadata, getChar, getCharacterStream, getClob, getClobString, getColumnDBName, getColumnIdentifier, getColumnNameForMetadata, getColumnNameForMetadata, getColumns, getConversionKey, getCreateIndexSQL, getCreateSequenceSQL, getCreateTableSQL, getDate, getDate, getDateFractionDigits, 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, getLocalDate, getLocalDateTime, getLocale, getLocalTime, getLog, getLong, getMajorVersion, getMarkerForInsertUpdate, getMillisecondBehavior, getMinorVersion, getNamingUtil, getNumber, getObject, getOffsetDateTime, getOffsetTime, getPlaceholderValueString, getPreferredType, getPrimaryKeyConstraintSQL, getPrimaryKeys, getPrimaryKeys, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromBestRowIdentifier, getPrimaryKeysFromGetPrimaryKeys, getPrimaryKeysFromGetPrimaryKeys, getRef, getSchemaCase, getSchemaNameForMetadata, getSchemaNameForMetadata, getSelectOperation, getSelects, getSelectTableAliases, getSequence, getSequences, getSequences, getSequencesSQL, getSequencesSQL, getShort, getStoredProcedure, 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, isUsingLimit, isUsingOffset, isUsingOrderBy, isUsingRange, makeNameValid, makeNameValid, makeNameValid, makeNameValid, matchErrorState, mathFunction, needsToCreateIndex, needsToCreateIndex, newColumn, newForeignKey, newSequence, newStoreException, newTable, prepareStatement, processDBColumnName, putBytes, putChars, putString, serialize, setArray, setAsciiStream, setBatchLimit, setBigDecimal, setBinaryStream, setBlob, setBlobObject, setBoolean, setBooleanRepresentation, setByte, setBytes, setCalendar, setChar, setCharacterStream, setClob, setClobString, setConfiguration, setDate, setDate, setDateMillisecondBehavior, setDefaultSchemaName, setDelimitedCase, setDelimitIdentifiers, setDouble, setFloat, setInt, setJoinSyntax, setLeadingDelimiter, setLocalDate, setLocalDateTime, setLocale, setLocalTime, setLong, setMajorVersion, setMinorVersion, setNumber, setObject, setOffsetDateTime, setOffsetTime, 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, toNativeJoin, toOperation, toOperation, toSelect, toSelect, toSelect, toSelect, toSelect, toSelectCount, toSnakeCase, toSQL92Join, toTraditionalJoin, toUpdate, updateBlob, updateClob, validateBatchProcess, validateDBSpecificBatchProcess, versionEqualOrEarlierThan, versionEqualOrLaterThan, versionLaterThan
-
Field Details
-
RIGHT_TRUNCATION_ON_SQL
-
NUMERIC_TRUNCATION_OFF_SQL
-
createIdentityColumn
public boolean createIdentityColumnIf true, then whenever theschematool
creates a table, it will append an additional IDENTITY column to the table's creation SQL. This is so Sybase will be able to performSELECT...FOR UPDATE
statements. -
identityColumnName
IfcreateIdentityColumn
is true, then theidentityColumnName
will be the name of the additional unique column that will be created. -
ignoreNumericTruncation
public boolean ignoreNumericTruncationIf 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 Details
-
SybaseDictionary
public SybaseDictionary()
-
-
Method Details
-
getJDBCType
public int getJDBCType(int metaTypeCode, boolean lob) Description copied from class:DBDictionary
- Overrides:
getJDBCType
in classDBDictionary
-
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 classDBDictionary
- Throws:
SQLException
-
getCreateTableSQL
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 classDBDictionary
-
getDeclareColumnSQL
Description copied from class:DBDictionary
Return the declaration SQL for the given column. This method is used for each column from withinDBDictionary.getCreateTableSQL(org.apache.openjpa.jdbc.schema.Table, org.apache.openjpa.jdbc.schema.SchemaGroup)
andDBDictionary.getAddColumnSQL(org.apache.openjpa.jdbc.schema.Column)
.- Overrides:
getDeclareColumnSQL
in classDBDictionary
-
getDropColumnSQL
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. ReturnsALTER TABLE <table name> DROP COLUMN <col name>
by default.- Overrides:
getDropColumnSQL
in classDBDictionary
-
refSchemaComponents
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 classDBDictionary
-
endConfiguration
public void endConfiguration()Description copied from interface:Configurable
Invoked upon completion of bean property configuration for this object.- Specified by:
endConfiguration
in interfaceConfigurable
- Overrides:
endConfiguration
in classDBDictionary
-
decorate
Description copied from class:DBDictionary
Decorate the given connection if needed. Some databases require special handling for JDBC bugs. This implementation issues anyDBDictionary.initializationSQL
that has been set for the dictionary but does not decorate the connection.- Specified by:
decorate
in interfaceConnectionDecorator
- Overrides:
decorate
in classDBDictionary
- 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
Create a new primary key from the information in the schema metadata.- Overrides:
newPrimaryKey
in classDBDictionary
- Throws:
SQLException
-
newIndex
Create a new index from the information in the index metadata.- Overrides:
newIndex
in classDBDictionary
- Throws:
SQLException
-
isFatalException
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 classDBDictionary
- Parameters:
subtype
- A constant indicating the category of error as defined inStoreException
.ex
- original SQL Exception as raised by the database driver.- Returns:
- false if the error is fatal.
-
getIsNullSQL
- Overrides:
getIsNullSQL
in classDBDictionary
-
getIsNotNullSQL
- Overrides:
getIsNotNullSQL
in classDBDictionary
-
getIdentityColumnName
- Overrides:
getIdentityColumnName
in classDBDictionary
-
indexOf
Description copied from class:DBDictionary
Invoke this database's indexOf function.- Overrides:
indexOf
in classDBDictionary
- Parameters:
buf
- the SQL buffer to write the indexOf invocation tostr
- a query value representing the target stringfind
- a query value representing the search stringstart
- a query value representing the start index, or null to start at the beginning
-