org.h2.engine

## Class Mode

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

    public class Mode
    extends java.lang.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
`static class` `Mode.CharPadding` When CHAR values are right-padded with spaces.
`static class` `Mode.ExpressionNames` Generation of column names for expressions.
`static class` `Mode.ModeEnum`
`static class` `Mode.ViewExpressionNames` Generation of column names for expressions to be used in a view.

### Field Summary

Fields
`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.
`boolean` `dateIsTimestamp0` Whether DATE data type is parsed as TIMESTAMP(0).
`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
`java.util.Set<java.lang.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` `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].
`java.util.regex.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.
`java.util.HashMap<java.lang.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

All Methods Static Methods Instance Methods Concrete Methods
`Mode.ModeEnum` `getEnum()`
`static Mode` `getInstance(java.lang.String name)` Get the mode with the given name.
`java.lang.String` `getName()`
`static Mode` `getRegular()`
`java.lang.String` `toString()`

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

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

### Field Detail

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

#### 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 java.util.regex.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.

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

#### numericIsDecfloat

    public boolean numericIsDecfloat

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

#### disallowedTypes

    public java.util.Set<java.lang.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 java.util.HashMap<java.lang.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 Detail

#### getInstance

    public static Mode getInstance(java.lang.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 java.lang.String getName()

#### getEnum

    public Mode.ModeEnum getEnum()

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`