org.hibernate.dialect
Class SQLAnywhere10Dialect
java.lang.Object
org.hibernate.dialect.Dialect
org.hibernate.dialect.SQLAnywhere10Dialect
- Direct Known Subclasses:
- SQLAnywhere11Dialect
public class SQLAnywhere10Dialect
- extends org.hibernate.dialect.Dialect
SQL Dialect for SQL Anywhere 10 - for the Hibernate 3.2 distribution
(Tested on SQL Anywhere 10.0.1)
- Author:
- Glenn Paulley, Sybase iAnywhere
| Fields inherited from class org.hibernate.dialect.Dialect |
CLOSED_QUOTE, DEFAULT_BATCH_SIZE, NO_BATCH, QUOTE |
|
Method Summary |
java.lang.String |
appendIdentitySelectToInsert(java.lang.String insertSQL)
|
java.lang.String |
appendLockHint(org.hibernate.LockMode mode,
java.lang.String tableName)
|
java.lang.String |
applyLocksToSql(java.lang.String sql,
java.util.Map aliasedLockModes,
java.util.Map keyColumnNames)
|
boolean |
areStringComparisonsCaseInsensitive()
|
boolean |
bindLimitParametersFirst()
|
boolean |
bindLimitParametersInReverseOrder()
|
char |
closeQuote()
|
boolean |
doesReadCommittedCauseWritersToBlockReaders()
|
boolean |
doesRepeatableReadCauseReadersToBlockWriters()
|
boolean |
dropConstraints()
|
boolean |
forUpdateOfColumns()
|
java.lang.String |
getAddColumnString()
|
java.lang.String |
getColumnComment(java.lang.String comment)
|
java.lang.String |
getCreateTemporaryTablePostfix()
|
java.lang.String |
getCreateTemporaryTableString()
|
java.lang.String |
getCurrentTimestampSelectString()
|
java.lang.String |
getCurrentTimestampSQLFunctionName()
|
java.lang.String |
getDropForeignKeyString()
|
java.lang.String |
getForReadOnlyString()
|
java.lang.String |
getForUpdateByLockString()
|
java.lang.String |
getForUpdateNoWaitString()
|
java.lang.String |
getForUpdateString(org.hibernate.LockMode lockMode)
SQL Anywhere 10 supports READ, WRITE, and INTENT row
locks. |
java.lang.String |
getForUpdateString(java.lang.String aliases)
|
java.lang.String |
getIdentityColumnString()
|
java.lang.String |
getIdentitySelectString()
|
java.lang.String |
getLimitString(java.lang.String sql,
boolean hasOffset)
|
java.lang.String |
getLimitString(java.lang.String querySelect,
int offset,
int limit)
|
java.lang.String |
getNoColumnsInsertString()
SQL Anywhere currently supports only "VALUES (DEFAULT)", not
the ANSI standard "DEFAULT VALUES". |
java.lang.String |
getNullColumnString()
|
java.sql.ResultSet |
getResultSet(java.sql.CallableStatement ps)
|
java.lang.String |
getSelectGUIDString()
|
java.lang.String |
getTableComment(java.lang.String comment)
|
boolean |
isCurrentTimestampSelectStringCallable()
|
char |
openQuote()
|
java.lang.Boolean |
performTemporaryTableDDLInIsolation()
|
boolean |
qualifyIndexName()
|
int |
registerResultSetOutParameter(java.sql.CallableStatement statement,
int col)
|
boolean |
supportsCommentOn()
|
boolean |
supportsCurrentTimestampSelection()
Quoted identifiers are controlled through the QUOTED_IDENTIFIER connection option. |
boolean |
supportsEmptyInList()
|
boolean |
supportsExistsInSelect()
|
boolean |
supportsIdentityColumns()
|
boolean |
supportsInsertSelectIdentity()
|
boolean |
supportsLimit()
SQL Anywhere Version 10 and up support both TOP N and START AT clauses |
boolean |
supportsLimitOffset()
|
boolean |
supportsOuterJoinForUpdate()
|
boolean |
supportsResultSetPositionQueryMethodsOnForwardOnlyCursor()
|
boolean |
supportsTemporaryTables()
|
boolean |
supportsUnionAll()
|
boolean |
supportsVariableLimit()
|
| Methods inherited from class org.hibernate.dialect.Dialect |
applyLocksToSql, buildSQLExceptionConverter, convertToFirstRowValue, createCaseFragment, createOuterJoinFragment, dropTemporaryTableAfterUse, forceLimitUsage, generateTemporaryTableName, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getCascadeConstraintsString, getCastTypeName, getCreateMultisetTableString, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getCrossJoinSeparator, getDefaultProperties, getDialect, getDialect, getDropSequenceStrings, getDropTemporaryTableString, getForUpdateNowaitString, getForUpdateNowaitString, getForUpdateString, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIdentityColumnString, getIdentityInsertString, getIdentitySelectString, getKeywords, getLockingStrategy, getLowercaseFunction, getMaxAliasLength, getNativeIdentifierGeneratorClass, getQuerySequencesString, getReadLockString, getSelectClauseNullString, getSelectSequenceNextValString, getSequenceNextValString, getTableTypeString, getTypeName, getTypeName, getViolatedConstraintNameExtracter, getWriteLockString, hasAlterTable, hasDataTypeInIdentityColumn, hasSelfReferentialForeignKeyBug, isLockTimeoutParameterized, quote, requiresCastingOfParametersInSelectClause, supportsBindAsCallableArgument, supportsCascadeDelete, supportsCircularCascadeDeleteConstraints, supportsColumnCheck, supportsExpectedLobUsagePattern, supportsIfExistsAfterTableName, supportsIfExistsBeforeTableName, supportsLobValueChangePropogation, supportsLockTimeouts, supportsNotNullUnique, supportsParametersInInsertSelect, supportsPooledSequences, supportsRowValueConstructorSyntax, supportsRowValueConstructorSyntaxInInList, supportsSequences, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsUnboundedLobLocatorMaterialization, supportsUnique, supportsUniqueConstraintInCreateAlterTable, toBooleanValueString, toString, transformSelectString, useInputStreamToInsertBlob, useMaxForLimit |
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
SQLAnywhere10Dialect
public SQLAnywhere10Dialect()
supportsIdentityColumns
public boolean supportsIdentityColumns()
- Overrides:
supportsIdentityColumns in class org.hibernate.dialect.Dialect
getIdentitySelectString
public java.lang.String getIdentitySelectString()
- Overrides:
getIdentitySelectString in class org.hibernate.dialect.Dialect
getIdentityColumnString
public java.lang.String getIdentityColumnString()
- Overrides:
getIdentityColumnString in class org.hibernate.dialect.Dialect
supportsInsertSelectIdentity
public boolean supportsInsertSelectIdentity()
- Overrides:
supportsInsertSelectIdentity in class org.hibernate.dialect.Dialect
appendIdentitySelectToInsert
public java.lang.String appendIdentitySelectToInsert(java.lang.String insertSQL)
- Overrides:
appendIdentitySelectToInsert in class org.hibernate.dialect.Dialect
getSelectGUIDString
public java.lang.String getSelectGUIDString()
- Overrides:
getSelectGUIDString in class org.hibernate.dialect.Dialect
supportsLimit
public boolean supportsLimit()
- SQL Anywhere Version 10 and up support both TOP N and START AT clauses
- Overrides:
supportsLimit in class org.hibernate.dialect.Dialect
supportsLimitOffset
public boolean supportsLimitOffset()
- Overrides:
supportsLimitOffset in class org.hibernate.dialect.Dialect
supportsVariableLimit
public boolean supportsVariableLimit()
- Overrides:
supportsVariableLimit in class org.hibernate.dialect.Dialect
bindLimitParametersInReverseOrder
public boolean bindLimitParametersInReverseOrder()
- Overrides:
bindLimitParametersInReverseOrder in class org.hibernate.dialect.Dialect
bindLimitParametersFirst
public boolean bindLimitParametersFirst()
- Overrides:
bindLimitParametersFirst in class org.hibernate.dialect.Dialect
getLimitString
public java.lang.String getLimitString(java.lang.String sql,
boolean hasOffset)
- Overrides:
getLimitString in class org.hibernate.dialect.Dialect
getLimitString
public java.lang.String getLimitString(java.lang.String querySelect,
int offset,
int limit)
throws java.lang.UnsupportedOperationException
- Overrides:
getLimitString in class org.hibernate.dialect.Dialect
- Throws:
java.lang.UnsupportedOperationException
getForUpdateString
public java.lang.String getForUpdateString(org.hibernate.LockMode lockMode)
- SQL Anywhere 10 supports READ, WRITE, and INTENT row
locks. INTENT locks are sufficient to ensure that other
concurrent connections cannot modify a row (though other
connections can still read that row). SQL Anywhere also
supports 3 modes of snapshot isolation (multi-version
concurrency control (MVCC).
SQL Anywhere's FOR UPDATE clause supports
FOR UPDATE BY [ LOCK | VALUES ]
FOR UPDATE OF ( COLUMN LIST )
though they cannot be specified at the same time. BY LOCK is
the syntax that acquires INTENT locks. FOR UPDATE BY VALUES
forces the use of the KEYSET cursor, which returns a warning to
the application when a row in the cursor has been subsequently
modified by another connection, and an error if the row has
been deleted.
SQL Anywhere does not support the FOR UPDATE NOWAIT syntax of
Oracle on a statement-by-statement basis. However, the
identical functionality is provided by setting the connection
option BLOCKING to "OFF", or setting an appropriate timeout
period through the connection option BLOCKING_TIMEOUT.
- Overrides:
getForUpdateString in class org.hibernate.dialect.Dialect
forUpdateOfColumns
public boolean forUpdateOfColumns()
- Overrides:
forUpdateOfColumns in class org.hibernate.dialect.Dialect
supportsOuterJoinForUpdate
public boolean supportsOuterJoinForUpdate()
- Overrides:
supportsOuterJoinForUpdate in class org.hibernate.dialect.Dialect
getForReadOnlyString
public java.lang.String getForReadOnlyString()
getForUpdateByLockString
public java.lang.String getForUpdateByLockString()
getForUpdateNoWaitString
public java.lang.String getForUpdateNoWaitString()
getForUpdateString
public java.lang.String getForUpdateString(java.lang.String aliases)
- Overrides:
getForUpdateString in class org.hibernate.dialect.Dialect
doesReadCommittedCauseWritersToBlockReaders
public boolean doesReadCommittedCauseWritersToBlockReaders()
- Overrides:
doesReadCommittedCauseWritersToBlockReaders in class org.hibernate.dialect.Dialect
doesRepeatableReadCauseReadersToBlockWriters
public boolean doesRepeatableReadCauseReadersToBlockWriters()
- Overrides:
doesRepeatableReadCauseReadersToBlockWriters in class org.hibernate.dialect.Dialect
appendLockHint
public java.lang.String appendLockHint(org.hibernate.LockMode mode,
java.lang.String tableName)
- Overrides:
appendLockHint in class org.hibernate.dialect.Dialect
applyLocksToSql
public java.lang.String applyLocksToSql(java.lang.String sql,
java.util.Map aliasedLockModes,
java.util.Map keyColumnNames)
supportsCurrentTimestampSelection
public boolean supportsCurrentTimestampSelection()
- Quoted identifiers are controlled through the QUOTED_IDENTIFIER connection option.
- Overrides:
supportsCurrentTimestampSelection in class org.hibernate.dialect.Dialect
getCurrentTimestampSQLFunctionName
public java.lang.String getCurrentTimestampSQLFunctionName()
- Overrides:
getCurrentTimestampSQLFunctionName in class org.hibernate.dialect.Dialect
isCurrentTimestampSelectStringCallable
public boolean isCurrentTimestampSelectStringCallable()
- Overrides:
isCurrentTimestampSelectStringCallable in class org.hibernate.dialect.Dialect
getCurrentTimestampSelectString
public java.lang.String getCurrentTimestampSelectString()
- Overrides:
getCurrentTimestampSelectString in class org.hibernate.dialect.Dialect
closeQuote
public char closeQuote()
- Overrides:
closeQuote in class org.hibernate.dialect.Dialect
openQuote
public char openQuote()
- Overrides:
openQuote in class org.hibernate.dialect.Dialect
supportsEmptyInList
public boolean supportsEmptyInList()
- Overrides:
supportsEmptyInList in class org.hibernate.dialect.Dialect
supportsResultSetPositionQueryMethodsOnForwardOnlyCursor
public boolean supportsResultSetPositionQueryMethodsOnForwardOnlyCursor()
- Overrides:
supportsResultSetPositionQueryMethodsOnForwardOnlyCursor in class org.hibernate.dialect.Dialect
supportsExistsInSelect
public boolean supportsExistsInSelect()
- Overrides:
supportsExistsInSelect in class org.hibernate.dialect.Dialect
areStringComparisonsCaseInsensitive
public boolean areStringComparisonsCaseInsensitive()
- Overrides:
areStringComparisonsCaseInsensitive in class org.hibernate.dialect.Dialect
dropConstraints
public boolean dropConstraints()
- Overrides:
dropConstraints in class org.hibernate.dialect.Dialect
getAddColumnString
public java.lang.String getAddColumnString()
- Overrides:
getAddColumnString in class org.hibernate.dialect.Dialect
getNullColumnString
public java.lang.String getNullColumnString()
- Overrides:
getNullColumnString in class org.hibernate.dialect.Dialect
qualifyIndexName
public boolean qualifyIndexName()
- Overrides:
qualifyIndexName in class org.hibernate.dialect.Dialect
getDropForeignKeyString
public java.lang.String getDropForeignKeyString()
- Overrides:
getDropForeignKeyString in class org.hibernate.dialect.Dialect
supportsCommentOn
public boolean supportsCommentOn()
- Overrides:
supportsCommentOn in class org.hibernate.dialect.Dialect
getTableComment
public java.lang.String getTableComment(java.lang.String comment)
- Overrides:
getTableComment in class org.hibernate.dialect.Dialect
getColumnComment
public java.lang.String getColumnComment(java.lang.String comment)
- Overrides:
getColumnComment in class org.hibernate.dialect.Dialect
getNoColumnsInsertString
public java.lang.String getNoColumnsInsertString()
- SQL Anywhere currently supports only "VALUES (DEFAULT)", not
the ANSI standard "DEFAULT VALUES". This latter syntax will be
supported in the SQL Anywhere 11.0.1 release. For the moment,
"VALUES (DEFAULT)" works only for a single-column table.
- Overrides:
getNoColumnsInsertString in class org.hibernate.dialect.Dialect
supportsTemporaryTables
public boolean supportsTemporaryTables()
- Overrides:
supportsTemporaryTables in class org.hibernate.dialect.Dialect
getCreateTemporaryTableString
public java.lang.String getCreateTemporaryTableString()
- Overrides:
getCreateTemporaryTableString in class org.hibernate.dialect.Dialect
getCreateTemporaryTablePostfix
public java.lang.String getCreateTemporaryTablePostfix()
- Overrides:
getCreateTemporaryTablePostfix in class org.hibernate.dialect.Dialect
performTemporaryTableDDLInIsolation
public java.lang.Boolean performTemporaryTableDDLInIsolation()
- Overrides:
performTemporaryTableDDLInIsolation in class org.hibernate.dialect.Dialect
registerResultSetOutParameter
public int registerResultSetOutParameter(java.sql.CallableStatement statement,
int col)
throws java.sql.SQLException
- Overrides:
registerResultSetOutParameter in class org.hibernate.dialect.Dialect
- Throws:
java.sql.SQLException
getResultSet
public java.sql.ResultSet getResultSet(java.sql.CallableStatement ps)
throws java.sql.SQLException
- Overrides:
getResultSet in class org.hibernate.dialect.Dialect
- Throws:
java.sql.SQLException
supportsUnionAll
public boolean supportsUnionAll()
- Overrides:
supportsUnionAll in class org.hibernate.dialect.Dialect