The Dialect type exposes the following members.

Constructors

  NameDescription
Protected methodDialect
The base constructor for Dialect.

Methods

  NameDescription
Public methodAddIdentifierOutParameterToInsert
Public methodAppendIdentitySelectToInsert
Provided we SupportsInsertSelectIdentity, then attch the "select identity" clause to the insert statement.
Public methodAppendLockHint
Some dialects support an alternative means to SELECT FOR UPDATE, whereby a "lock hint" is appends to the table name in the from clause.
Public methodApplyLocksToSql
Modifies the given SQL by applying the appropriate updates for the specified lock modes and key columns.
Public methodBuildSQLExceptionConverter
Build an instance of the ISQLExceptionConverter preferred by this dialect for converting DbException into NHibernate's ADOException hierarchy.
Public methodCreateCaseFragment
Create a CaseFragment strategy responsible for handling this dialect's variations in how CASE statements are handled.
Public methodCreateOuterJoinFragment
Create a JoinFragment strategy responsible for handling this dialect's variations in how joins are handled.
Public methodDropTemporaryTableAfterUse
Do we need to drop the temporary table after use?
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Protected methodStatic memberExtractColumnOrAliasNames
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGenerateTemporaryTableName
Generate a temporary table name given the bas table.
Public methodGetAddForeignKeyConstraintString
The syntax used to add a foreign key constraint to a table. If SupportsForeignKeyConstraintInAlterTable is false, the returned string will be added to the create table statement instead. In this case, extra strings, like "add", that apply when using alter table should be omitted.
Public methodGetAddPrimaryKeyConstraintString
The syntax used to add a primary key constraint to a table
Public methodGetCastTypeName
Get the name of the database type appropriate for casting operations (via the CAST() SQL function) for the given SqlType typecode.
Public methodGetColumnComment
Public methodGetCreateSequenceString(String)
Typically dialects which support sequences can create a sequence with a single command.
Protected methodGetCreateSequenceString(String, Int32, Int32)
Overloaded form of GetCreateSequenceString(String), additionally taking the initial value and increment size to be applied to the sequence definition.
Public methodGetCreateSequenceStrings
An optional multi-line form for databases which SupportsPooledSequences.
Public methodGetDataBaseSchema
Public methodStatic memberGetDialect()()()()
Get an instance of the dialect specified by the current Environment properties.
Public methodStatic memberGetDialect(IDictionary<(Of <<'(String, String>)>>))
Get de Dialect from a property bag (prop name Dialect)
Public methodGetDropForeignKeyConstraintString
The syntax used to drop a foreign key constraint from a table.
Public methodGetDropIndexConstraintString
The syntax used to drop an index constraint from a table.
Public methodGetDropPrimaryKeyConstraintString
The syntax used to drop a primary key constraint from a table.
Public methodGetDropSequenceString
Typically dialects which support sequences can drop a sequence with a single command.
Public methodGetDropSequenceStrings
The multiline script used to drop a sequence.
Public methodGetDropTableString
Return SQL needed to drop the named table. May (and should) use some form of "if exists" clause, and cascade constraints.
Public methodGetForUpdateNowaitString
Get the FOR UPDATE OF column_list NOWAIT fragment appropriate for this dialect given the aliases of the columns to be write locked.
Public methodGetForUpdateString(String)
Get the FOR UPDATE OF column_list fragment appropriate for this dialect given the aliases of the columns to be write locked.
Public methodGetForUpdateString(LockMode)
Given a lock mode, determine the appropriate for update fragment to use.
Public methodGetHashCode
Serves as a hash function for a particular type.
(Inherited from Object.)
Public methodGetHibernateTypeName(DbType)
Get the name of the Hibernate IType associated with th given DbType typecode.
Public methodGetHibernateTypeName(DbType, Int32, Int32, Int32)
Get the name of the Hibernate IType associated with the given DbType typecode with the given storage specification parameters.
Public methodGetIdentityColumnString
The syntax used during DDL to define a column as being an IDENTITY of a particular type.
Public methodGetIdentitySelectString
Get the select command to use to retrieve the last generated IDENTITY value for a particular table
Public methodGetIfExistsDropConstraint
The syntax that is used to check if a constraint exists before dropping it
Public methodGetIfExistsDropConstraintEnd
The syntax that is used to close the if for a constraint exists check, used for dialects that requires begin/end for ifs
Public methodGetIfNotExistsCreateConstraint
The syntax that is used to check if a constraint does not exists before creating it
Public methodGetIfNotExistsCreateConstraintEnd
The syntax that is used to close the if for a constraint exists check, used for dialects that requires begin/end for ifs
Public methodGetLimitString(SqlString, SqlString, SqlString)
Add a LIMIT clause to the given SQL SELECT. Expects any database-specific offset and limit adjustments to have already been performed (ex. UseMaxForLimit, OffsetStartsAtOne).
Public methodGetLimitString(SqlString, Nullable<(Of <<'(Int32>)>>), Nullable<(Of <<'(Int32>)>>), Parameter, Parameter)
Generates a string to limit the result set to a number of maximum results with a specified offset into the results. Expects any database-specific offset and limit adjustments to have already been performed (ex. UseMaxForLimit, OffsetStartsAtOne). Performs error checking based on the various dialect limit support options. If both parameters and fixed valeus are specified, this will use the parameter option if possible. Otherwise, it will fall back to a fixed string.
Public methodGetLimitValue
Some databases require that a limit statement contain the maximum row number instead of the number of rows to retrieve. This method adjusts source limit and offset values to account for this.
Public methodGetLockingStrategy
Get a strategy instance which knows how to acquire a database-level lock of the specified mode for this dialect.
Public methodGetLongestTypeName
Gets the name of the longest registered type for a particular DbType.
Public methodGetOffsetValue
Some databases use limit row offsets that start at one instead of zero. This method adjusts a desired offset using the OffsetStartsAtOne flag.
Public methodGetResultSet
Given a callable statement previously processed by RegisterResultSetOutParameter(DbCommand, Int32), extract the DbDataReader from the OUT parameter.
Public methodGetSelectClauseNullString
Given a DbType type code, determine an appropriate null value to use in a select clause.
Public methodGetSelectSequenceNextValString
Generate the select expression fragment that will retrieve the next value of a sequence as part of another (typically DML) statement.
Public methodGetSequenceNextValString
Generate the appropriate select statement to to retreive the next value of a sequence.
Public methodGetTableComment
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetTypeName(SqlType)
Get the name of the database type associated with the given SqlType,
Public methodGetTypeName(SqlType, Int32, Int32, Int32)
Get the name of the database type associated with the given SqlType.
Public methodIsKnownToken
Public methodIsQuoted
Checks to see if the name has been quoted.
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodPerformTemporaryTableDDLInIsolation
Does the dialect require that temporary table DDL statements occur in isolation from other statements? This would be the case if the creation would cause any current transaction to get committed implicitly.
Public methodQualify
Protected methodQuote
Quotes a name.
Public methodQuoteForAliasName
Quotes a name for being used as a aliasname
Public methodQuoteForColumnName
Quotes a name for being used as a columnname
Public methodQuoteForSchemaName
Quotes a name for being used as a schemaname
Public methodQuoteForTableName
Quotes a name for being used as a tablename
Protected methodRegisterColumnType(DbType, String)
Suclasses register a typename for the given type code. $l in the typename will be replaced by the column length (if appropriate).
Protected methodRegisterColumnType(DbType, Int32, String)
Subclasses register a typename for the given type code and maximum column length. $l in the type name will be replaced by the column length (if appropriate)
Protected methodRegisterFunction
Protected methodRegisterHibernateType(DbType, String)
Registers a Hibernate IType name for the given DbType type code.
Protected methodRegisterHibernateType(DbType, Int32, String)
Registers a Hibernate IType name for the given DbType type code and maximum column length.
Protected methodRegisterKeyword
Public methodRegisterResultSetOutParameter
Registers an OUT parameter which will be returing a DbDataReader. How this is accomplished varies greatly from DB to DB, hence its inclusion (along with {@link #getResultSet}) here.
Public methodToBooleanValueString
The SQL literal value to which this database maps boolean values.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodUnQuote(String)
Unquotes and unescapes an already quoted name
Public methodUnQuote(array<String>[]()[][])
Unquotes an array of Quoted Names.

Extension Methods

  NameDescription
Public Extension MethodAs<(Of <<'(T>)>>) (Defined by TypeHelperExtensionMethods.)
Public Extension MethodIsBetween
Apply a "between" constraint to the named property Note: throws an exception outside of a QueryOver expression
(Defined by RestrictionExtensions.)
Public Extension MethodIsIn(array<Object>[]()[][])Overloaded.
Apply an "in" constraint to the named property Note: throws an exception outside of a QueryOver expression
(Defined by RestrictionExtensions.)
Public Extension MethodIsIn(ICollection)Overloaded.
Apply an "in" constraint to the named property Note: throws an exception outside of a QueryOver expression
(Defined by RestrictionExtensions.)
Public Extension MethodIsProxy (Defined by NHibernateProxyHelper.)
Public Extension MethodToTypeParameters (Defined by ReflectHelper.)

Fields

  NameDescription
Protected fieldStatic memberDefaultBatchSize
Protected fieldStatic memberNoBatch
Public fieldStatic memberPossibleClosedQuoteChars
Public fieldStatic memberPossibleQuoteChars
Characters used for quoting sql identifiers

Properties

  NameDescription
Public propertyAddColumnString
The syntax used to add a column to a table. Note this is deprecated
Public propertyAreStringComparisonsCaseInsensitive
Are string comparisons implicitly case insensitive. In other words, does [where 'XYZ' = 'xyz'] resolve to true?
Public propertyCascadeConstraintsString
Completely optional cascading drop clause
Public propertyCloseQuote
The closing quote for a quoted identifier.
Public propertyCreateMultisetTableString
Slight variation on CreateTableString. The command used to create a multiset table.
Public propertyCreateTableString
Command used to create a table.
Public propertyCreateTemporaryTablePostfix
Get any fragments needing to be postfixed to the command for temporary table creation.
Public propertyCreateTemporaryTableString
Command used to create a temporary table.
Public propertyCurrentTimestampSelectString
Retrieve the command used to retrieve the current timestammp from the database.
Public propertyCurrentTimestampSQLFunctionName
The name of the database-specific SQL function for retrieving the current timestamp.
Public propertyDefaultProperties
Retrieve a set of default Hibernate properties for this database.
Public propertyDisableForeignKeyConstraintsString
Only needed if the Dialect does not have SupportsForeignKeyConstraintInAlterTable.
Public propertyDoesReadCommittedCauseWritersToBlockReaders
For the underlying database, is READ_COMMITTED isolation implemented by forcing readers to wait for write locks to be released?
Public propertyDoesRepeatableReadCauseReadersToBlockWriters
For the underlying database, is REPEATABLE_READ isolation implemented by forcing writers to wait for read locks to be released?
Public propertyDropConstraints
Do we need to drop constraints before dropping tables in the dialect?
Public propertyDropForeignKeyString
Public propertyEnableForeignKeyConstraintsString
Only needed if the Dialect does not have SupportsForeignKeyConstraintInAlterTable.
Public propertyForUpdateNowaitString
Retrieves the FOR UPDATE NOWAIT syntax specific to this dialect
Public propertyForUpdateOfColumns
Is FOR UPDATE OF syntax supported?
Public propertyForUpdateString
Get the string to append to SELECT statements to acquire locks for this dialect.
Public propertyFunctions
Aggregate SQL functions as defined in general. This is a case-insensitive hashtable!
Public propertyGenerateTablePrimaryKeyConstraintForIdentityColumn
Set this to false if no table-level primary key constraint should be generated when an identity column has been specified for the table. This is used as a work-around for SQLite so it doesn't tell us we have "more than one primary key".
Public propertyHasDataTypeInIdentityColumn
Whether this dialect has an identity clause added to the data type or a completely separate identity data type.
Public propertyHasSelfReferentialForeignKeyBug
Public propertyIdentityColumnString
The keyword used to specify an identity column, if native key generation is supported
Public propertyIdentityInsertString
The keyword used to insert a generated value into an identity column (or null). Need if the dialect does not support inserts that specify no column values.
Public propertyIdentitySelectString
Get the select command to use to retrieve the last generated IDENTITY value.
Public propertyIdentityStyleIdentifierGeneratorClass
The class (which implements IIdentifierGenerator) which acts as this dialects identity-style generation strategy.
Public propertyInsertGeneratedIdentifierRetrievalMethod
Public propertyIsCurrentTimestampSelectStringCallable
Should the value returned by CurrentTimestampSelectString be treated as callable. Typically this indicates that JDBC escape sytnax is being used...
Public propertyKeywords
Public propertyLowercaseFunction
The name of the SQL function that transforms a string to lowercase
Public propertyMaxAliasLength
Public propertyNativeIdentifierGeneratorClass
The class (which implements IIdentifierGenerator) which acts as this dialects native generation strategy.
Public propertyNoColumnsInsertString
The keyword used to insert a row without specifying any column values
Public propertyNullColumnString
The keyword used to specify a nullable column
Public propertyOffsetStartsAtOne
For limit clauses, indicates whether to use 0 or 1 as the offset that returns the first row. Should be true if the first row is at offset 1.
Public propertyOpenQuote
The opening quote for a quoted identifier.
Public propertyPrimaryKeyString
The keyword used to create a primary key constraint
Public propertyQualifyIndexName
Do we need to qualify index names with the schema name?
Public propertyQuerySequencesString
Get the select command used retrieve the names of all sequences.
Public propertySelectGUIDString
Get the command used to select a GUID from the underlying database. (Optional operation.)
Public propertySupportsBindAsCallableArgument
Does this dialect support using a JDBC bind parameter as an argument to a function or procedure call?
Public propertySupportsCascadeDelete
Public propertySupportsCircularCascadeDeleteConstraints
Does this dialect support definition of cascade delete constraints which can cause circular chains?
Public propertySupportsColumnCheck
Does this dialect support column-level check constraints?
Public propertySupportsCommentOn
Public propertySupportsCurrentTimestampSelection
Does this dialect support a way to retrieve the database's current timestamp value?
Public propertySupportsEmptyInList
Does this dialect support empty IN lists? For example, is [where XYZ in ()] a supported construct?
Public propertySupportsExistsInSelect
Does the dialect support an exists statement in the select clause?
Public propertySupportsExpectedLobUsagePattern
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...

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...

Public propertySupportsForeignKeyConstraintInAlterTable
Does this dialect support adding foreign key constraints via alter table? If not, it's assumed they can only be added through create table.
Public propertySupportsIdentityColumns
Does this dialect support identity column key generation?
Public propertySupportsIfExistsAfterTableName
Does the dialect support the syntax 'drop table NAME if exists'
Public propertySupportsIfExistsBeforeTableName
Does the dialect support the syntax 'drop table if exists NAME'
Public propertySupportsInsertSelectIdentity
Does the dialect support some form of inserting and selecting the generated IDENTITY value all in the same statement.
Public propertySupportsLimit
Does this Dialect have some kind of LIMIT syntax?
Public propertySupportsLimitOffset
Does this Dialect support an offset?
Public propertySupportsLobValueChangePropogation
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...

For BLOBs, the internal value might be changed by: {@link java.sql.Blob#setBinaryStream}, {@link java.sql.Blob#setBytes(long, byte[])}, {@link java.sql.Blob#setBytes(long, byte[], int, int)}, or {@link java.sql.Blob#truncate(long)}.

For CLOBs, the internal value might be changed by: {@link java.sql.Clob#setAsciiStream(long)}, {@link java.sql.Clob#setCharacterStream(long)}, {@link java.sql.Clob#setString(long, String)}, {@link java.sql.Clob#setString(long, String, int, int)}, or {@link java.sql.Clob#truncate(long)}.

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 {@link #supportsExpectedLobUsagePattern}.

Public propertySupportsNotNullUnique
Public propertySupportsOuterJoinForUpdate
Does this dialect support FOR UPDATE in conjunction with outer joined rows?
Public propertySupportsParametersInInsertSelect
Does this dialect support parameters within the select clause of INSERT ... SELECT ... statements?
Public propertySupportsPooledSequences
Does this dialect support "pooled" sequences. Not aware of a better name for this. Essentially can we specify the initial and increment values?
Public propertySupportsResultSetPositionQueryMethodsOnForwardOnlyCursor
Does this dialect support asking the result set its positioning information on forward only cursors. Specifically, in the case of scrolling fetches, Hibernate needs to use {@link java.sql.ResultSet#isAfterLast} and {@link java.sql.ResultSet#isBeforeFirst}. Certain drivers do not allow access to these methods for forward only cursors.

NOTE : this is highly driver dependent!

Public propertySupportsRowValueConstructorSyntax
Is this dialect known to support what ANSI-SQL terms "row value constructor" syntax; sometimes called tuple syntax.

Basically, does it support syntax like "... where (FIRST_NAME, LAST_NAME) = ('Steve', 'Ebersole') ...".

Public propertySupportsRowValueConstructorSyntaxInInList
If the dialect supports {@link #supportsRowValueConstructorSyntax() row values}, does it offer such support in IN lists as well?

For example, "... where (FIRST_NAME, LAST_NAME) IN ( (?, ?), (?, ?) ) ..."

Public propertySupportsSequences
Does this dialect support sequences?
Public propertySupportsSqlBatches
Supports splitting batches using GO T-SQL command
Public propertySupportsSubqueryOnMutatingTable
Does this dialect support referencing the table being mutated in a subquery. The "table being mutated" is the table referenced in an UPDATE or a DELETE query. And so can that table then be referenced in a subquery of said UPDATE/DELETE query.

For example, would the following two syntaxes be supported:

  • delete from TABLE_A where ID not in ( select ID from TABLE_A )
  • update TABLE_A set NON_ID = 'something' where ID in ( select ID from TABLE_A)
Public propertySupportsSubselectAsInPredicateLHS
Are subselects supported as the left-hand-side (LHS) of IN-predicates.

In other words, is syntax like "... {subquery} IN (1, 2, 3) ..." supported?

Public propertySupportsSubSelects
Does this dialect support subselects?
Public propertySupportsTableCheck
Does this dialect support table-level check constraints?
Public propertySupportsTemporaryTables
Does this dialect support temporary tables?
Public propertySupportsUnboundedLobLocatorMaterialization
Is it supported to materialize a LOB locator outside the transaction in which it was created?

Again, part of the trickiness here is the fact that this is largely driver dependent.

NOTE: all database I have tested which {@link #supportsExpectedLobUsagePattern()} also support the ability to materialize a LOB outside the owning transaction...

Public propertySupportsUnionAll
Does this dialect support UNION ALL, which is generally a faster variant of UNION? True if UNION ALL is supported; false otherwise.
Public propertySupportsUnique
Does this dialect support the UNIQUE column syntax?
Public propertySupportsUniqueConstraintInCreateAlterTable
Does this dialect support adding Unique constraints via create and alter table ?
Public propertySupportsVariableLimit
Can parameters be used for a statement containing a LIMIT?
Public propertyTableTypeString
Public propertyTimestampResolutionInTicks
Gives the best resolution that the database can use for storing date/time values, in ticks.
Public propertyUseInputStreamToInsertBlob
Should LOBs (both BLOB and CLOB) be bound using stream operations (i.e. {@link java.sql.PreparedStatement#setBinaryStream}).
Public propertyUseMaxForLimit
Does the LIMIT clause take a "maximum" row number instead of a total number of returned rows?
Public propertyViolatedConstraintNameExtracter

See Also