Package org.h2.engine

# Class Mode

java.lang.Object
org.h2.engine.Mode

public class Mode extends Object
The compatibility modes. There is a fixed set of modes (for example PostgreSQL, MySQL). Each mode has different settings.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static enum`
`Mode.CharPadding`
When CHAR values are right-padded with spaces.
`static enum`
`Mode.ExpressionNames`
Generation of column names for expressions.
`static enum`
`Mode.ModeEnum`
`static enum`
`Mode.ViewExpressionNames`
Generation of column names for expressions to be used in a view.

## Field Summary

Fields
Modifier and Type
Field
Description
`boolean`
`acceptsCommaAsJsonKeyValueSeparator`
Accepts comma ',' as key/value separator in JSON_OBJECT and JSON_OBJECTAGG functions.
`boolean`
`aliasColumnName`
When enabled, aliased columns (as in SELECT ID AS I FROM TEST) return the alias (I in this case) in ResultSetMetaData.getColumnName() and 'null' in getTableName().
`boolean`
`allNumericTypesHavePrecision`
If `true` all numeric data types may have precision and 'UNSIGNED' clause.
`boolean`
`allowDB2TimestampFormat`
Whether DB2 TIMESTAMP formats are allowed.
`boolean`
`allowEmptyInPredicate`
Whether IN predicate may have an empty value list.
`boolean`
`allowEmptySchemaValuesAsDefaultSchema`
If `true` constructs like 'CREATE TABLE CATALOG..TABLE_NAME' are allowed, the default schema is used.
`boolean`
`allowPlusForStringConcat`
Text can be concatenated using '+'.
`boolean`
`allowUnrelatedOrderByExpressionsInDistinctQueries`
If `true` unrelated ORDER BY expression are allowed in DISTINCT queries, if `false` they are disallowed.
`boolean`
`allowUsingFromClauseInUpdateStatement`
If `true`, allow using from clause in update statement.
`boolean`
`alterTableExtensionsMySQL`
If `true` some additional non-standard ALTER TABLE commands are allowed.
`boolean`
`alterTableModifyColumn`
If `true` non-standard ALTER TABLE MODIFY COLUMN is allowed.
`boolean`
`alterTableModifyColumnPreserveNullability`
If `true` non-standard ALTER TABLE MODIFY COLUMN preserves nullability when changing data type.
`boolean`
`autoIncrementClause`
Whether MySQL-style AUTO_INCREMENT clause is supported.
`boolean`
`charAndByteLengthUnits`
If `true` 'CHAR' and 'BYTE' length units are allowed.
`Mode.CharPadding`
`charPadding`
How to pad or trim CHAR values.
`boolean`
`convertOnlyToSmallerScale`
When converting the scale of decimal data, the number is only converted if the new scale is smaller than the current scale.
`boolean`
`createUniqueConstraintForReferencedColumns`
If `true`, referential constraints will create a unique constraint on referenced columns if it doesn't exist instead of throwing an exception.
`Mode.ViewExpressionNames`
`cteExpressionNames`
How column names are generated for CTEs.
`boolean`
`dateIsTimestamp0`
Whether DATE data type is parsed as TIMESTAMP(0).
`boolean`
`datetimeAndYearType`
Whether MySQL-style DATETIME and YEAR data type is parsed.
`boolean`
`datetimeTypes`
Whether DATETIME, SMALLDATETIME, DATETIME2, and DATETIMEOFFSET data types are parsed.
`boolean`
`dateTimeValueWithinTransaction`
If `true`, datetime value function return the same value within a transaction, if `false` datetime value functions return the same value within a command.
`boolean`
`decimalSequences`
If `true` NEXT VALUE FOR SEQUENCE, CURRENT VALUE FOR SEQUENCE, SEQUENCE.NEXTVAL, and SEQUENCE.CURRVAL return values with DECIMAL/NUMERIC data type instead of BIGINT.
`boolean`
`deleteIdentifierFrom`
If `true` DELETE identifier FROM is allowed
`Set<String>`
`disallowedTypes`
An optional Set of hidden/disallowed column types.
`boolean`
`discardWithTableHints`
Discard SQLServer table hints (e.g.
`Mode.ExpressionNames`
`expressionNames`
How column names are generated for expressions.
`boolean`
`forBitData`
If `true` 'FOR BIT DATA' clauses are allowed for character string data types.
`boolean`
`greatestLeastIgnoreNulls`
If `true` GREATEST and LEAST ignore nulls
`boolean`
`groupByColumnIndex`
Allow to use GROUP BY n, where n is column index in the SELECT list, similar to ORDER BY
`boolean`
`identityClause`
Whether SQL Server-style IDENTITY clause is supported.
`boolean`
`identityColumnsHaveDefaultOnNull`
If `true`, identity columns have DEFAULT ON NULL clause.
`boolean`
`identityDataType`
Whether IDENTITY pseudo data type is supported.
`boolean`
`indexDefinitionInCreateTable`
Creating indexes in the CREATE TABLE statement is allowed using `INDEX(..)` or `KEY(..)`.
`boolean`
`insertOnConflict`
PostgreSQL style INSERT ...
`boolean`
`isolationLevelInSelectOrInsertStatement`
can set the isolation level using WITH {RR|RS|CS|UR}
`boolean`
`limit`
Whether LIMIT / OFFSET clauses are supported.
`boolean`
`logIsLogBase10`
The single-argument function LOG() uses base 10 instead of E.
`boolean`
`mergeWhere`
If `true`, merge when matched clause may have WHERE clause.
`boolean`
`minusIsExcept`
Whether MINUS can be used as EXCEPT.
`boolean`
`mySqlTableOptions`
If `true` MySQL table and column options are allowed
`boolean`
`nextvalAndCurrvalPseudoColumns`
If `true`, sequence.NEXTVAL and sequence.CURRVAL pseudo columns are supported.
`boolean`
`nextValueReturnsDifferentValues`
If `true`, the next value expression returns different values when invoked multiple times within a row.
`NullsDistinct`
`nullsDistinct`
Determines how rows with `NULL` values in indexed columns are handled in unique indexes and constraints by default.
`boolean`
`numericIsDecfloat`
Whether NUMERIC and DECIMAL/DEC without parameters are parsed as DECFLOAT.
`boolean`
`numericWithBooleanComparison`
Allow to compare numeric with BOOLEAN.
`boolean`
`onDuplicateKeyUpdate`
MySQL style INSERT ...
`boolean`
`regexpReplaceBackslashReferences`
The function REGEXP_REPLACE() uses \ for back-references.
`boolean`
`replaceInto`
MySQL style REPLACE INTO.
`boolean`
`serialDataTypes`
Whether SERIAL and BIGSERIAL pseudo data types are supported.
`boolean`
`squareBracketQuotedNames`
Identifiers may be quoted using square brackets as in [Test].
`Pattern`
`supportedClientInfoPropertiesRegEx`
Pattern describing the keys the java.sql.Connection.setClientInfo() method accepts.
`boolean`
`supportPoundSymbolForColumnNames`
Support the # for column names
`boolean`
`swapConvertFunctionParameters`
Swap the parameters of the CONVERT function.
`boolean`
`swapLogFunctionParameters`
Swap the parameters of LOG() function.
`boolean`
`sysDummy1`
Support the pseudo-table SYSIBM.SYSDUMMY1.
`boolean`
`systemColumns`
The system columns 'ctid' and 'oid' are supported.
`boolean`
`takeGeneratedSequenceValue`
If `true`, last identity of the session is updated on generation of a new sequence value.
`boolean`
`takeInsertedIdentity`
If `true`, last identity of the session is updated on insertion of a new value into identity column.
`boolean`
`topInDML`
Whether TOP clause in DML commands is supported.
`boolean`
`topInSelect`
Whether TOP clause in SELECT queries is supported.
`boolean`
`treatEmptyStringsAsNull`
Empty strings are treated like NULL values.
`boolean`
`truncateTableRestartIdentity`
If `true` TRUNCATE TABLE uses RESTART IDENTITY by default.
`HashMap<String,DataType>`
`typeByNameMap`
Custom mappings from type names to data types.
`boolean`
`updateSequenceOnManualIdentityInsertion`
If `true`, sequences of generated by default identity columns are updated when value is provided by user.
`Mode.ViewExpressionNames`
`viewExpressionNames`
How column names are generated for views.
`boolean`
`zeroExLiteralsAreBinaryStrings`
If `true` `0x`-prefixed numbers are parsed as binary string literals, if `false` they are parsed as hexadecimal numeric values.

## Method Summary

Modifier and Type
Method
Description
`Mode.ModeEnum`
`getEnum()`
`static Mode`
`getInstance(String name)`
Get the mode with the given name.
`String`
`getName()`
`static Mode`
`getRegular()`
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### aliasColumnName

public boolean aliasColumnName
When enabled, aliased columns (as in SELECT ID AS I FROM TEST) return the alias (I in this case) in ResultSetMetaData.getColumnName() and 'null' in getTableName(). If disabled, the real column name (ID in this case) and table name is returned.

### convertOnlyToSmallerScale

public boolean convertOnlyToSmallerScale
When converting the scale of decimal data, the number is only converted if the new scale is smaller than the current scale. Usually, the scale is converted and 0s are added if required.

### indexDefinitionInCreateTable

public boolean indexDefinitionInCreateTable
Creating indexes in the CREATE TABLE statement is allowed using `INDEX(..)` or `KEY(..)`. Example: `create table test(id int primary key, name varchar(255), key idx_name(name));`

### squareBracketQuotedNames

public boolean squareBracketQuotedNames
Identifiers may be quoted using square brackets as in [Test].

### systemColumns

public boolean systemColumns
The system columns 'ctid' and 'oid' are supported.

### nullsDistinct

public NullsDistinct nullsDistinct
Determines how rows with `NULL` values in indexed columns are handled in unique indexes and constraints by default.

### treatEmptyStringsAsNull

public boolean treatEmptyStringsAsNull
Empty strings are treated like NULL values. Useful for Oracle emulation.

### greatestLeastIgnoreNulls

public boolean greatestLeastIgnoreNulls
If `true` GREATEST and LEAST ignore nulls

### sysDummy1

public boolean sysDummy1
Support the pseudo-table SYSIBM.SYSDUMMY1.

### allowPlusForStringConcat

public boolean allowPlusForStringConcat
Text can be concatenated using '+'.

### logIsLogBase10

public boolean logIsLogBase10
The single-argument function LOG() uses base 10 instead of E.

### swapLogFunctionParameters

public boolean swapLogFunctionParameters
Swap the parameters of LOG() function.

### regexpReplaceBackslashReferences

public boolean regexpReplaceBackslashReferences
The function REGEXP_REPLACE() uses \ for back-references.

### swapConvertFunctionParameters

public boolean swapConvertFunctionParameters
Swap the parameters of the CONVERT function.

### isolationLevelInSelectOrInsertStatement

public boolean isolationLevelInSelectOrInsertStatement
can set the isolation level using WITH {RR|RS|CS|UR}

### onDuplicateKeyUpdate

public boolean onDuplicateKeyUpdate
MySQL style INSERT ... ON DUPLICATE KEY UPDATE ... and INSERT IGNORE.

### replaceInto

public boolean replaceInto
MySQL style REPLACE INTO.

### insertOnConflict

public boolean insertOnConflict
PostgreSQL style INSERT ... ON CONFLICT DO NOTHING.

### supportedClientInfoPropertiesRegEx

public Pattern supportedClientInfoPropertiesRegEx
Pattern describing the keys the java.sql.Connection.setClientInfo() method accepts.

### supportPoundSymbolForColumnNames

public boolean supportPoundSymbolForColumnNames
Support the # for column names

### allowEmptyInPredicate

public boolean allowEmptyInPredicate
Whether IN predicate may have an empty value list.

### charPadding

public Mode.CharPadding charPadding
How to pad or trim CHAR values.

### allowDB2TimestampFormat

public boolean allowDB2TimestampFormat
Whether DB2 TIMESTAMP formats are allowed.

### discardWithTableHints

public boolean discardWithTableHints
Discard SQLServer table hints (e.g. "SELECT * FROM table WITH (NOLOCK)")

### dateTimeValueWithinTransaction

public boolean dateTimeValueWithinTransaction
If `true`, datetime value function return the same value within a transaction, if `false` datetime value functions return the same value within a command.

### zeroExLiteralsAreBinaryStrings

public boolean zeroExLiteralsAreBinaryStrings
If `true` `0x`-prefixed numbers are parsed as binary string literals, if `false` they are parsed as hexadecimal numeric values.

### allowUnrelatedOrderByExpressionsInDistinctQueries

public boolean allowUnrelatedOrderByExpressionsInDistinctQueries
If `true` unrelated ORDER BY expression are allowed in DISTINCT queries, if `false` they are disallowed.

### alterTableExtensionsMySQL

public boolean alterTableExtensionsMySQL
If `true` some additional non-standard ALTER TABLE commands are allowed.

### alterTableModifyColumn

public boolean alterTableModifyColumn
If `true` non-standard ALTER TABLE MODIFY COLUMN is allowed.

### alterTableModifyColumnPreserveNullability

public boolean alterTableModifyColumnPreserveNullability
If `true` non-standard ALTER TABLE MODIFY COLUMN preserves nullability when changing data type.

### mySqlTableOptions

public boolean mySqlTableOptions
If `true` MySQL table and column options are allowed

### deleteIdentifierFrom

public boolean deleteIdentifierFrom
If `true` DELETE identifier FROM is allowed

### truncateTableRestartIdentity

public boolean truncateTableRestartIdentity
If `true` TRUNCATE TABLE uses RESTART IDENTITY by default.

### decimalSequences

public boolean decimalSequences
If `true` NEXT VALUE FOR SEQUENCE, CURRENT VALUE FOR SEQUENCE, SEQUENCE.NEXTVAL, and SEQUENCE.CURRVAL return values with DECIMAL/NUMERIC data type instead of BIGINT.

### allowEmptySchemaValuesAsDefaultSchema

public boolean allowEmptySchemaValuesAsDefaultSchema
If `true` constructs like 'CREATE TABLE CATALOG..TABLE_NAME' are allowed, the default schema is used.

### allNumericTypesHavePrecision

public boolean allNumericTypesHavePrecision
If `true` all numeric data types may have precision and 'UNSIGNED' clause.

### forBitData

public boolean forBitData
If `true` 'FOR BIT DATA' clauses are allowed for character string data types.

### charAndByteLengthUnits

public boolean charAndByteLengthUnits
If `true` 'CHAR' and 'BYTE' length units are allowed.

### nextvalAndCurrvalPseudoColumns

public boolean nextvalAndCurrvalPseudoColumns
If `true`, sequence.NEXTVAL and sequence.CURRVAL pseudo columns are supported.

### nextValueReturnsDifferentValues

public boolean nextValueReturnsDifferentValues
If `true`, the next value expression returns different values when invoked multiple times within a row. This setting does not affect NEXTVAL() function.

### updateSequenceOnManualIdentityInsertion

public boolean updateSequenceOnManualIdentityInsertion
If `true`, sequences of generated by default identity columns are updated when value is provided by user.

### takeInsertedIdentity

public boolean takeInsertedIdentity
If `true`, last identity of the session is updated on insertion of a new value into identity column.

### takeGeneratedSequenceValue

public boolean takeGeneratedSequenceValue
If `true`, last identity of the session is updated on generation of a new sequence value.

### identityColumnsHaveDefaultOnNull

public boolean identityColumnsHaveDefaultOnNull
If `true`, identity columns have DEFAULT ON NULL clause.

### mergeWhere

public boolean mergeWhere
If `true`, merge when matched clause may have WHERE clause.

### allowUsingFromClauseInUpdateStatement

public boolean allowUsingFromClauseInUpdateStatement
If `true`, allow using from clause in update statement.

### createUniqueConstraintForReferencedColumns

public boolean createUniqueConstraintForReferencedColumns
If `true`, referential constraints will create a unique constraint on referenced columns if it doesn't exist instead of throwing an exception.

### expressionNames

public Mode.ExpressionNames expressionNames
How column names are generated for expressions.

### viewExpressionNames

public Mode.ViewExpressionNames viewExpressionNames
How column names are generated for views.

### cteExpressionNames

public Mode.ViewExpressionNames cteExpressionNames
How column names are generated for CTEs.

### topInSelect

public boolean topInSelect
Whether TOP clause in SELECT queries is supported.

### topInDML

public boolean topInDML
Whether TOP clause in DML commands is supported.

### limit

public boolean limit
Whether LIMIT / OFFSET clauses are supported.

### minusIsExcept

public boolean minusIsExcept
Whether MINUS can be used as EXCEPT.

### identityDataType

public boolean identityDataType
Whether IDENTITY pseudo data type is supported.

### serialDataTypes

public boolean serialDataTypes
Whether SERIAL and BIGSERIAL pseudo data types are supported.

### identityClause

public boolean identityClause
Whether SQL Server-style IDENTITY clause is supported.

### autoIncrementClause

public boolean autoIncrementClause
Whether MySQL-style AUTO_INCREMENT clause is supported.

### dateIsTimestamp0

public boolean dateIsTimestamp0
Whether DATE data type is parsed as TIMESTAMP(0).

### datetimeAndYearType

public boolean datetimeAndYearType
Whether MySQL-style DATETIME and YEAR data type is parsed.

### datetimeTypes

public boolean datetimeTypes
Whether DATETIME, SMALLDATETIME, DATETIME2, and DATETIMEOFFSET data types are parsed.

### numericIsDecfloat

public boolean numericIsDecfloat
Whether NUMERIC and DECIMAL/DEC without parameters are parsed as DECFLOAT.

### disallowedTypes

public Set<String> disallowedTypes
An optional Set of hidden/disallowed column types. Certain DBMSs don't support all column types provided by H2, such as "NUMBER" when using PostgreSQL mode.

### typeByNameMap

public HashMap<String,DataType> typeByNameMap
Custom mappings from type names to data types.

### groupByColumnIndex

public boolean groupByColumnIndex
Allow to use GROUP BY n, where n is column index in the SELECT list, similar to ORDER BY

### numericWithBooleanComparison

public boolean numericWithBooleanComparison
Allow to compare numeric with BOOLEAN.

### acceptsCommaAsJsonKeyValueSeparator

public boolean acceptsCommaAsJsonKeyValueSeparator
Accepts comma ',' as key/value separator in JSON_OBJECT and JSON_OBJECTAGG functions.

## Method Details

### getInstance

public static Mode getInstance(String name)
Get the mode with the given name.

Parameters:
  `name` - the name of the mode
Returns:
  the mode object

### getRegular

public static Mode getRegular()

### getName

public String getName()

### getEnum

public Mode.ModeEnum getEnum()

### toString

public String toString()

Overrides:
  `toString` in class `Object`