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
    Modifier and Type | Class and Description
    --- | ---
    `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
    Modifier and Type | Field and 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.
    `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,org.h2.value.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
    Modifier and Type | Method and Description
    --- | ---
    `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,org.h2.value.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`