public class PostgreSQL81Dialect extends Dialect
An SQL dialect for Postgres <p/> For discussion of BLOB support in Postgres, as of 8.4, have a peek at <a href="http://jdbc.postgresql.org/documentation/84/binary-data.html">http://jdbc.postgresql.org/documentation/84/binary-data.html</a>. For the effects in regards to Hibernate see <a href="http://in.relation.to/15492.lace">http://in.relation.to/15492.lace</a>
CLOSED_QUOTE, DEFAULT_BATCH_SIZE, LEGACY_LOB_MERGE_STRATEGY, NEW_LOCATOR_LOB_MERGE_STRATEGY, NO_BATCH, QUOTE, STANDARD_DEFAULT_BATCH_LOAD_SIZING_STRATEGY, STREAM_XFER_LOB_MERGE_STRATEGY| Constructor and Description |
|---|
PostgreSQL81Dialect()
Constructs a PostgreSQL81Dialect
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
bindLimitParametersInReverseOrder()
ANSI SQL defines the LIMIT clause to be in the form LIMIT offset, limit.
|
SQLExceptionConversionDelegate |
buildSQLExceptionConversionDelegate()
Build an instance of a
SQLExceptionConversionDelegate for
interpreting dialect-specific error or SQLState codes. |
boolean |
dropConstraints()
Do we need to drop constraints before dropping tables in this dialect?
|
String |
getAddColumnString()
The syntax used to add a column to a table (optional).
|
CallableStatementSupport |
getCallableStatementSupport() |
String |
getCascadeConstraintsString()
Completely optional cascading drop clause
|
String |
getCaseInsensitiveLike()
The name of the SQL function that can do case insensitive <b>like</b> comparison.
|
String |
getCreateSequenceString(String sequenceName)
Typically dialects which support sequences can create a sequence
with a single command.
|
protected String |
getCreateSequenceString(String sequenceName,
int initialValue,
int incrementSize)
only necessary for postgre < 7.4 See http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_sequence.sgml
<p/>
Overloaded form of
Dialect.getCreateSequenceString(String), additionally
taking the initial value and increment size to be applied to the sequence
definition. |
String |
getCurrentTimestampSelectString()
Retrieve the command used to retrieve the current timestamp from the
database.
|
MultiTableBulkIdStrategy |
getDefaultMultiTableBulkIdStrategy() |
String |
getDropSequenceString(String sequenceName)
Typically dialects which support sequences can drop a sequence
with a single command.
|
String |
getForUpdateNowaitString()
Retrieves the <tt>FOR UPDATE NOWAIT</tt> syntax specific to this dialect.
|
String |
getForUpdateNowaitString(String aliases)
Get the <tt>FOR UPDATE OF column_list NOWAIT</tt> fragment appropriate
for this dialect given the aliases of the columns to be write locked.
|
String |
getForUpdateString()
Get the string to append to SELECT statements to acquire locks
for this dialect.
|
String |
getForUpdateString(String aliases)
Get the <tt>FOR UPDATE OF column_list</tt> fragment appropriate for this
dialect given the aliases of the columns to be write locked.
|
String |
getForUpdateString(String aliases,
LockOptions lockOptions)
Get the <tt>FOR UPDATE OF column_list</tt> fragment appropriate for this
dialect given the aliases of the columns to be write locked.
|
IdentityColumnSupport |
getIdentityColumnSupport()
Get the appropriate
IdentityColumnSupport |
LimitHandler |
getLimitHandler()
Returns the delegate managing LIMIT clause.
|
String |
getLimitString(String sql,
boolean hasOffset)
Apply s limit clause to the query.
|
String |
getNativeIdentifierGeneratorStrategy()
Resolves the native generation strategy associated to this dialect.
|
String |
getNoColumnsInsertString()
The fragment used to insert a row without specifying any column values.
|
String |
getQuerySequencesString()
Get the select command used retrieve the names of all sequences.
|
String |
getReadLockString(int timeout)
Get the string to append to SELECT statements to acquire READ locks
for this dialect.
|
String |
getReadLockString(String aliases,
int timeout)
Get the string to append to SELECT statements to acquire READ locks
for this dialect given the aliases of the columns to be read locked.
|
ResultSet |
getResultSet(CallableStatement ps)
Given a callable statement previously processed by
Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int),
extract the ResultSet from the OUT parameter. |
ResultSet |
getResultSet(CallableStatement statement,
int position)
Given a callable statement previously processed by
Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int),
extract the ResultSet. |
ResultSet |
getResultSet(CallableStatement statement,
String name)
Given a callable statement previously processed by
Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int),
extract the ResultSet from the OUT parameter. |
String |
getSelectClauseNullString(int sqlType)
Workaround for postgres bug #1453
<p/>
Given a
Types type code, determine an appropriate
null value to use in a select clause. |
String |
getSelectSequenceNextValString(String sequenceName)
Generate the select expression fragment that will retrieve the next
value of a sequence as part of another (typically DML) statement.
|
String |
getSequenceNextValString(String sequenceName)
Generate the appropriate select statement to to retrieve the next value
of a sequence.
|
SqlTypeDescriptor |
getSqlTypeDescriptorOverride(int sqlCode)
Returns the
SqlTypeDescriptor that should be used to handle the given JDBC type code. |
ViolatedConstraintNameExtracter |
getViolatedConstraintNameExtracter() |
String |
getWriteLockString(int timeout)
Get the string to append to SELECT statements to acquire WRITE locks
for this dialect.
|
String |
getWriteLockString(String aliases,
int timeout)
Get the string to append to SELECT statements to acquire WRITE locks
for this dialect given the aliases of the columns to be write locked.
|
boolean |
isCurrentTimestampSelectStringCallable()
Should the value returned by
Dialect.getCurrentTimestampSelectString()
be treated as callable. |
boolean |
qualifyIndexName()
Do we need to qualify index names with the schema name?
|
int |
registerResultSetOutParameter(CallableStatement statement,
int col)
Registers a parameter (either OUT, or the new REF_CURSOR param type available in Java 8) capable of
returning
ResultSet by position. |
boolean |
requiresParensForTupleDistinctCounts()
If
Dialect.supportsTupleDistinctCounts() is true, does the Dialect require the tuple to be wrapped with parens? |
boolean |
supportsCaseInsensitiveLike()
Does this dialect support case insensitive LIKE restrictions?
|
boolean |
supportsCommentOn()
Does this dialect/database support commenting on tables, columns, etc?
|
boolean |
supportsCurrentTimestampSelection()
Does this dialect support a way to retrieve the database’s current
timestamp value?
|
boolean |
supportsEmptyInList()
Does this dialect support empty IN lists?
<p/>
For example, is [where XYZ in ()] a supported construct?
|
boolean |
supportsExpectedLobUsagePattern()
Expected LOB usage pattern is such that I can perform an insert
via prepared statement with a parameter binding for a LOB value
without crazy casting to JDBC driver implementation-specific classes…
<p/>
Part of the trickiness here is the fact that this is largely
driver dependent.
|
boolean |
supportsLimit()
Does this dialect support some form of limiting query results
via a SQL clause?
|
boolean |
supportsLobValueChangePropogation()
Does the dialect support propagating changes to LOB
values back to the database? Talking about mutating the
internal value of the locator as opposed to supplying a new
locator instance…
<p/>
For BLOBs, the internal value might be changed by:
Blob.setBinaryStream(long),
Blob.setBytes(long, byte[]),
Blob.setBytes(long, byte[], int, int),
or Blob.truncate(long). |
boolean |
supportsNationalizedTypes()
Does this dialect supports Nationalized Types
|
boolean |
supportsNoWait()
Does this dialect/database support NO_WAIT timeout.
|
boolean |
supportsOuterJoinForUpdate()
Does this dialect support <tt>FOR UPDATE</tt> in conjunction with
outer joined rows?
|
boolean |
supportsPooledSequences()
Does this dialect support "pooled" sequences.
|
boolean |
supportsRowValueConstructorSyntax()
Is this dialect known to support what ANSI-SQL terms "row value
constructor" syntax; sometimes called tuple syntax.
|
boolean |
supportsSequences()
Does this dialect support sequences?
|
boolean |
supportsUnboundedLobLocatorMaterialization()
Is it supported to materialize a LOB locator outside the transaction in
which it was created?
<p/>
Again, part of the trickiness here is the fact that this is largely
driver dependent.
|
boolean |
supportsUnionAll()
Does this dialect support UNION ALL, which is generally a faster
variant of UNION?
|
String |
toBooleanValueString(boolean bool)
The SQL literal value to which this database maps boolean values.
|
boolean |
useInputStreamToInsertBlob()
Should LOBs (both BLOB and CLOB) be bound using stream operations (i.e.
|
addSqlHintOrComment, appendLockHint, appendLockHint, applyLocksToSql, areStringComparisonsCaseInsensitive, augmentRecognizedTableTypes, bindLimitParametersFirst, buildIdentifierHelper, buildSQLExceptionConverter, canCreateCatalog, canCreateSchema, cast, cast, cast, closeQuote, contributeTypes, convertToFirstRowValue, createCaseFragment, createOuterJoinFragment, defaultScrollMode, doesReadCommittedCauseWritersToBlockReaders, doesRepeatableReadCauseReadersToBlockWriters, escapeLiteral, forceLimitUsage, forceLobAsLastValue, forUpdateOfColumns, getAddColumnSuffixString, getAddForeignKeyConstraintString, getAddForeignKeyConstraintString, getAddPrimaryKeyConstraintString, getAddUniqueConstraintString, getAlterTableString, getAuxiliaryDatabaseObjectExporter, getCastTypeName, getColumnAliasExtractor, getColumnComment, getCreateCatalogCommand, getCreateMultisetTableString, getCreateSchemaCommand, getCreateSequenceStrings, getCreateSequenceStrings, getCreateTableString, getCrossJoinSeparator, getCurrentSchemaCommand, getCurrentTimestampSQLFunctionName, getDefaultBatchLoadSizingStrategy, getDefaultProperties, getDialect, getDialect, getDropCatalogCommand, getDropForeignKeyString, getDropSchemaCommand, getDropSequenceStrings, getDropTableString, getForeignKeyExporter, getForUpdateSkipLockedString, getForUpdateSkipLockedString, getForUpdateString, getForUpdateString, getFunctions, getHibernateTypeName, getHibernateTypeName, getIndexExporter, getInExpressionCountLimit, getKeywords, getLimitString, getLobMergeStrategy, getLockingStrategy, getLowercaseFunction, getMaxAliasLength, getNameQualifierSupport, getNativeIdentifierGeneratorClass, getNotExpression, getNullColumnString, getQueryHintString, getQueryHintString, getSchemaNameResolver, getSelectGUIDString, getSequenceExporter, getSequenceInformationExtractor, getTableComment, getTableExporter, getTableTypeString, getTypeName, getTypeName, getUniqueDelegate, getUniqueKeyExporter, hasAlterTable, hasSelfReferentialForeignKeyBug, inlineLiteral, isJdbcLogWarningsEnabledByDefault, isLegacyLimitHandlerBehaviorEnabled, isLockTimeoutParameterized, isTypeNameRegistered, openQuote, prependComment, quote, registerColumnType, registerColumnType, registerFunction, registerHibernateType, registerHibernateType, registerKeyword, registerResultSetOutParameter, remapSqlTypeDescriptor, renderOrderByElement, replaceResultVariableInOrderByClauseWithPosition, requiresCastingOfParametersInSelectClause, supportsBindAsCallableArgument, supportsCascadeDelete, supportsCircularCascadeDeleteConstraints, supportsColumnCheck, supportsExistsInSelect, supportsIfExistsAfterAlterTable, supportsIfExistsAfterConstraintName, supportsIfExistsAfterTableName, supportsIfExistsBeforeConstraintName, supportsIfExistsBeforeTableName, supportsLimitOffset, supportsLockTimeouts, supportsNamedParameters, supportsNonQueryWithCTE, supportsNotNullUnique, supportsParametersInInsertSelect, supportsPartitionBy, supportsResultSetPositionQueryMethodsOnForwardOnlyCursor, supportsRowValueConstructorSyntaxInInList, supportsSkipLocked, supportsSubqueryOnMutatingTable, supportsSubselectAsInPredicateLHS, supportsTableCheck, supportsTupleCounts, supportsTupleDistinctCounts, supportsTuplesInSubqueries, supportsUnique, supportsUniqueConstraintInCreateAlterTable, supportsValuesList, supportsVariableLimit, toString, transformSelectString, useFollowOnLocking, useFollowOnLocking, useMaxForLimitpublic PostgreSQL81Dialect()
Constructs a PostgreSQL81Dialect
public SqlTypeDescriptor getSqlTypeDescriptorOverride(int sqlCode)
DialectReturns the SqlTypeDescriptor that should be used to handle the given JDBC type code. Returns
null if there is no override.
getSqlTypeDescriptorOverride in class DialectsqlCode - A Types constant indicating the SQL column typeSqlTypeDescriptor to use as an override, or null if there is no override.public String getAddColumnString()
DialectThe syntax used to add a column to a table (optional).
getAddColumnString in class Dialectpublic String getSequenceNextValString(String sequenceName)
DialectGenerate the appropriate select statement to to retrieve the next value of a sequence. <p/> This should be a "stand alone" select statement.
getSequenceNextValString in class DialectsequenceName - the name of the sequencepublic String getSelectSequenceNextValString(String sequenceName)
DialectGenerate the select expression fragment that will retrieve the next
value of a sequence as part of another (typically DML) statement.
<p/>
This differs from Dialect.getSequenceNextValString(String) in that this
should return an expression usable within another statement.
getSelectSequenceNextValString in class DialectsequenceName - the name of the sequencepublic String getCreateSequenceString(String sequenceName)
DialectTypically dialects which support sequences can create a sequence
with a single command. This is convenience form of
Dialect.getCreateSequenceStrings(java.lang.String) to help facilitate that.
<p/>
Dialects which support sequences and can create a sequence in a
single command need only override this method. Dialects
which support sequences but require multiple commands to create
a sequence should instead override Dialect.getCreateSequenceStrings(java.lang.String).
getCreateSequenceString in class DialectsequenceName - The name of the sequencepublic String getDropSequenceString(String sequenceName)
DialectTypically dialects which support sequences can drop a sequence
with a single command. This is convenience form of
Dialect.getDropSequenceStrings(java.lang.String) to help facilitate that.
<p/>
Dialects which support sequences and can drop a sequence in a
single command need only override this method. Dialects
which support sequences but require multiple commands to drop
a sequence should instead override Dialect.getDropSequenceStrings(java.lang.String).
getDropSequenceString in class DialectsequenceName - The name of the sequencepublic String getCascadeConstraintsString()
DialectCompletely optional cascading drop clause
getCascadeConstraintsString in class Dialectpublic boolean dropConstraints()
DialectDo we need to drop constraints before dropping tables in this dialect?
dropConstraints in class Dialectpublic boolean supportsSequences()
DialectDoes this dialect support sequences?
supportsSequences in class Dialectpublic String getQuerySequencesString()
DialectGet the select command used retrieve the names of all sequences.
getQuerySequencesString in class DialectSchemaUpdatepublic LimitHandler getLimitHandler()
DialectReturns the delegate managing LIMIT clause.
getLimitHandler in class Dialectpublic boolean supportsLimit()
DialectDoes this dialect support some form of limiting query results via a SQL clause?
supportsLimit in class Dialectpublic String getLimitString(String sql, boolean hasOffset)
DialectApply s limit clause to the query.
<p/>
Typically dialects utilize variable
limit clauses when they support limits. Thus, when building the
select command we do not actually need to know the limit or the offest
since we will just be using placeholders.
<p/>
Here we do still pass along whether or not an offset was specified
so that dialects not supporting offsets can generate proper exceptions.
In general, dialects will override one or the other of this method and
Dialect.getLimitString(String, int, int).
getLimitString in class Dialectsql - The query to which to apply the limit.hasOffset - Is the query requesting an offset?public boolean bindLimitParametersInReverseOrder()
DialectANSI SQL defines the LIMIT clause to be in the form LIMIT offset, limit. Does this dialect require us to bind the parameters in reverse order?
bindLimitParametersInReverseOrder in class Dialectpublic String getForUpdateString(String aliases)
DialectGet the <tt>FOR UPDATE OF column_list</tt> fragment appropriate for this dialect given the aliases of the columns to be write locked.
getForUpdateString in class Dialectaliases - The columns to be write locked.public String getForUpdateString(String aliases, LockOptions lockOptions)
DialectGet the <tt>FOR UPDATE OF column_list</tt> fragment appropriate for this dialect given the aliases of the columns to be write locked.
getForUpdateString in class Dialectaliases - The columns to be write locked.lockOptions - the lock options to applypublic String getNoColumnsInsertString()
DialectThe fragment used to insert a row without specifying any column values. This is not possible on some databases.
getNoColumnsInsertString in class Dialectpublic String getCaseInsensitiveLike()
DialectThe name of the SQL function that can do case insensitive <b>like</b> comparison.
getCaseInsensitiveLike in class Dialectpublic boolean supportsCaseInsensitiveLike()
DialectDoes this dialect support case insensitive LIKE restrictions?
supportsCaseInsensitiveLike in class Dialecttrue if the underlying database supports case insensitive like comparison,
false otherwise. The default is false.public String getNativeIdentifierGeneratorStrategy()
DialectResolves the native generation strategy associated to this dialect. <p/> Comes into play whenever the user specifies the native generator.
getNativeIdentifierGeneratorStrategy in class Dialectpublic boolean supportsOuterJoinForUpdate()
DialectDoes this dialect support <tt>FOR UPDATE</tt> in conjunction with outer joined rows?
supportsOuterJoinForUpdate in class Dialectpublic boolean useInputStreamToInsertBlob()
DialectShould LOBs (both BLOB and CLOB) be bound using stream operations (i.e.
PreparedStatement.setBinaryStream(int, java.io.InputStream, int)).
useInputStreamToInsertBlob in class Dialectpublic boolean supportsUnionAll()
DialectDoes this dialect support UNION ALL, which is generally a faster variant of UNION?
supportsUnionAll in class Dialectpublic String getSelectClauseNullString(int sqlType)
Workaround for postgres bug #1453 <p/>
Given a Types type code, determine an appropriate
null value to use in a select clause.
<p/>
One thing to consider here is that certain databases might
require proper casting for the nulls here since the select here
will be part of a UNION/UNION ALL.
getSelectClauseNullString in class DialectsqlType - The Types type code.public boolean supportsCommentOn()
DialectDoes this dialect/database support commenting on tables, columns, etc?
supportsCommentOn in class Dialecttrue if commenting is supportedpublic MultiTableBulkIdStrategy getDefaultMultiTableBulkIdStrategy()
getDefaultMultiTableBulkIdStrategy in class Dialectpublic boolean supportsCurrentTimestampSelection()
DialectDoes this dialect support a way to retrieve the database’s current timestamp value?
supportsCurrentTimestampSelection in class Dialectpublic boolean isCurrentTimestampSelectStringCallable()
DialectShould the value returned by Dialect.getCurrentTimestampSelectString()
be treated as callable. Typically this indicates that JDBC escape
syntax is being used…
isCurrentTimestampSelectStringCallable in class DialectDialect.getCurrentTimestampSelectString() return
is callable; false otherwise.public String getCurrentTimestampSelectString()
DialectRetrieve the command used to retrieve the current timestamp from the database.
getCurrentTimestampSelectString in class Dialectpublic boolean requiresParensForTupleDistinctCounts()
DialectIf Dialect.supportsTupleDistinctCounts() is true, does the Dialect require the tuple to be wrapped with parens?
requiresParensForTupleDistinctCounts in class Dialectpublic String toBooleanValueString(boolean bool)
DialectThe SQL literal value to which this database maps boolean values.
toBooleanValueString in class Dialectbool - The boolean valuepublic ViolatedConstraintNameExtracter getViolatedConstraintNameExtracter()
getViolatedConstraintNameExtracter in interface ConversionContextgetViolatedConstraintNameExtracter in class Dialectpublic SQLExceptionConversionDelegate buildSQLExceptionConversionDelegate()
DialectBuild an instance of a SQLExceptionConversionDelegate for
interpreting dialect-specific error or SQLState codes.
<p/>
When Dialect.buildSQLExceptionConverter() returns null, the default
SQLExceptionConverter is used to interpret SQLState and
error codes. If this method is overridden to return a non-null value,
the default SQLExceptionConverter will use the returned
SQLExceptionConversionDelegate in addition to the following
standard delegates:
<ol>
<li>a "static" delegate based on the JDBC 4 defined SQLException hierarchy;</li>
<li>a delegate that interprets SQLState codes for either X/Open or SQL-2003 codes,
depending on java.sql.DatabaseMetaData#getSQLStateType</li>
</ol>
<p/>
It is strongly recommended that specific Dialect implementations override this
method, since interpretation of a SQL error is much more accurate when based on
the a vendor-specific ErrorCode rather than the SQLState.
<p/>
Specific Dialects may override to return whatever is most appropriate for that vendor.
buildSQLExceptionConversionDelegate in class Dialectpublic int registerResultSetOutParameter(CallableStatement statement, int col) throws SQLException
DialectRegisters a parameter (either OUT, or the new REF_CURSOR param type available in Java 8) capable of
returning ResultSet by position. Pre-Java 8, registering such ResultSet-returning
parameters varied greatly across database and drivers; hence its inclusion as part of the Dialect contract.
registerResultSetOutParameter in class Dialectstatement - The callable statement.col - The bind position at which to register the output param.SQLException - Indicates problems registering the param.public ResultSet getResultSet(CallableStatement ps) throws SQLException
DialectGiven a callable statement previously processed by Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int),
extract the ResultSet from the OUT parameter.
getResultSet in class Dialectps - The callable statement.SQLException - Indicates problems extracting the result set.public boolean supportsPooledSequences()
DialectDoes this dialect support "pooled" sequences. Not aware of a better name for this. Essentially can we specify the initial and increment values?
supportsPooledSequences in class DialectDialect.getCreateSequenceStrings(String, int, int),
Dialect.getCreateSequenceString(String, int, int)protected String getCreateSequenceString(String sequenceName, int initialValue, int incrementSize)
only necessary for postgre < 7.4 See http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/ref/create_sequence.sgml <p/>
Overloaded form of Dialect.getCreateSequenceString(String), additionally
taking the initial value and increment size to be applied to the sequence
definition.
</p>
The default definition is to suffix Dialect.getCreateSequenceString(String)
with the string: " start with {initialValue} increment by {incrementSize}" where
{initialValue} and {incrementSize} are replacement placeholders. Generally
dialects should only need to override this method if different key phrases
are used to apply the allocation information.
getCreateSequenceString in class DialectsequenceName - The name of the sequenceinitialValue - The initial value to apply to 'create sequence' statementincrementSize - The increment value to apply to 'create sequence' statementpublic boolean supportsEmptyInList()
DialectDoes this dialect support empty IN lists? <p/> For example, is [where XYZ in ()] a supported construct?
supportsEmptyInList in class Dialectpublic boolean supportsExpectedLobUsagePattern()
DialectExpected LOB usage pattern is such that I can perform an insert via prepared statement with a parameter binding for a LOB value without crazy casting to JDBC driver implementation-specific classes… <p/> Part of the trickiness here is the fact that this is largely driver dependent. For example, Oracle (which is notoriously bad with LOB support in their drivers historically) actually does a pretty good job with LOB support as of the 10.2.x versions of their drivers…
supportsExpectedLobUsagePattern in class Dialectpublic boolean supportsLobValueChangePropogation()
DialectDoes the dialect support propagating changes to LOB
values back to the database? Talking about mutating the
internal value of the locator as opposed to supplying a new
locator instance…
<p/>
For BLOBs, the internal value might be changed by:
Blob.setBinaryStream(long),
Blob.setBytes(long, byte[]),
Blob.setBytes(long, byte[], int, int),
or Blob.truncate(long).
<p/>
For CLOBs, the internal value might be changed by:
Clob.setAsciiStream(long),
Clob.setCharacterStream(long),
Clob.setString(long, String),
Clob.setString(long, String, int, int),
or Clob.truncate(long).
<p/>
NOTE : I do not know the correct answer currently for
databases which (1) are not part of the cruise control process
or (2) do not Dialect.supportsExpectedLobUsagePattern().
supportsLobValueChangePropogation in class Dialectpublic boolean supportsUnboundedLobLocatorMaterialization()
DialectIs it supported to materialize a LOB locator outside the transaction in
which it was created?
<p/>
Again, part of the trickiness here is the fact that this is largely
driver dependent.
<p/>
NOTE: all database I have tested which Dialect.supportsExpectedLobUsagePattern()
also support the ability to materialize a LOB outside the owning transaction…
supportsUnboundedLobLocatorMaterialization in class Dialectpublic String getForUpdateString()
DialectGet the string to append to SELECT statements to acquire locks for this dialect.
getForUpdateString in class Dialectpublic String getWriteLockString(int timeout)
DialectGet the string to append to SELECT statements to acquire WRITE locks for this dialect. Location of the of the returned string is treated the same as getForUpdateString.
getWriteLockString in class Dialecttimeout - in milliseconds, -1 for indefinite wait and 0 for no wait.public String getWriteLockString(String aliases, int timeout)
DialectGet the string to append to SELECT statements to acquire WRITE locks for this dialect given the aliases of the columns to be write locked. Location of the of the returned string is treated the same as getForUpdateString.
getWriteLockString in class Dialectaliases - The columns to be read locked.timeout - in milliseconds, -1 for indefinite wait and 0 for no wait.public String getReadLockString(int timeout)
DialectGet the string to append to SELECT statements to acquire READ locks for this dialect. Location of the of the returned string is treated the same as getForUpdateString.
getReadLockString in class Dialecttimeout - in milliseconds, -1 for indefinite wait and 0 for no wait.public String getReadLockString(String aliases, int timeout)
DialectGet the string to append to SELECT statements to acquire READ locks for this dialect given the aliases of the columns to be read locked. Location of the of the returned string is treated the same as getForUpdateString.
getReadLockString in class Dialectaliases - The columns to be read locked.timeout - in milliseconds, -1 for indefinite wait and 0 for no wait.public boolean supportsRowValueConstructorSyntax()
DialectIs this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax. <p/> Basically, does it support syntax like "… where (FIRST_NAME, LAST_NAME) = ('Steve', 'Ebersole') …".
supportsRowValueConstructorSyntax in class Dialectpublic String getForUpdateNowaitString()
DialectRetrieves the <tt>FOR UPDATE NOWAIT</tt> syntax specific to this dialect.
getForUpdateNowaitString in class Dialectpublic String getForUpdateNowaitString(String aliases)
DialectGet the <tt>FOR UPDATE OF column_list NOWAIT</tt> fragment appropriate for this dialect given the aliases of the columns to be write locked.
getForUpdateNowaitString in class Dialectaliases - The columns to be write locked.public CallableStatementSupport getCallableStatementSupport()
getCallableStatementSupport in class Dialectpublic ResultSet getResultSet(CallableStatement statement, int position) throws SQLException
DialectGiven a callable statement previously processed by Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int),
extract the ResultSet.
getResultSet in class Dialectstatement - The callable statement.position - The bind position at which to register the output param.SQLException - Indicates problems extracting the result set.public ResultSet getResultSet(CallableStatement statement, String name) throws SQLException
DialectGiven a callable statement previously processed by Dialect.registerResultSetOutParameter(java.sql.CallableStatement, int),
extract the ResultSet from the OUT parameter.
getResultSet in class Dialectstatement - The callable statement.name - The parameter name (for drivers which support named parameters).SQLException - Indicates problems extracting the result set.public boolean qualifyIndexName()
DialectDo we need to qualify index names with the schema name?
qualifyIndexName in class Dialectpublic IdentityColumnSupport getIdentityColumnSupport()
DialectGet the appropriate IdentityColumnSupport
getIdentityColumnSupport in class Dialectpublic boolean supportsNationalizedTypes()
DialectDoes this dialect supports Nationalized Types
supportsNationalizedTypes in class Dialectpublic boolean supportsNoWait()
DialectDoes this dialect/database support NO_WAIT timeout.
supportsNoWait in class Dialecttrue if NO_WAIT is supportedCopyright © 2001-2018 Red Hat, Inc. All Rights Reserved.