# Mode

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

Methods
static Mode | getInstance(String name) Get the mode with the given name.
static Mode | getInstance(String name) Get the mode with the given name. Parameters: name - the name of the mode Returns: the mode object
String | getName()
String | getName()

Fields
static boolean | aliasColumnName
static boolean | allowAffinityKey
static boolean | allowPlusForStringConcat
static boolean | convertInsertNullToZero
static boolean | convertOnlyToSmallerScale
static boolean | indexDefinitionInCreateTable
static boolean | isolationLevelInSelectOrInsertStatement
static boolean | logIsLogBase10
static boolean | lowerCaseIdentifiers
static boolean | nullConcatIsNull
static boolean | onDuplicateKeyUpdate
static boolean | prohibitEmptyInPredicate
static boolean | serialColumnIsNotPK
static boolean | squareBracketQuotedNames
static boolean | supportOffsetFetch
static boolean | supportPoundSymbolForColumnNames
static Pattern | supportedClientInfoPropertiesRegEx
static boolean | swapConvertFunctionParameters
static boolean | sysDummy1
static boolean | systemColumns
static boolean | treatEmptyStringsAsNull
static boolean | uniqueIndexSingleNull
static boolean | uniqueIndexSingleNullExceptAllColumnsAreNull

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

#### allowAffinityKey

Whether AFFINITY KEY keywords are supported.

#### allowPlusForStringConcat

Text can be concatenated using '+'.

#### convertInsertNullToZero

When inserting data, if a column is defined to be NOT NULL and NULL is inserted, then a 0 (or empty string, or the current timestamp for timestamp columns) value is used. Usually, this operation is not allowed and an exception is thrown.

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

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));`

#### isolationLevelInSelectOrInsertStatement

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

#### logIsLogBase10

The function LOG() uses base 10 instead of E.

#### lowerCaseIdentifiers

Meta data calls return identifiers in lower case.

#### nullConcatIsNull

Concatenation with NULL results in NULL. Usually, NULL is treated as an empty string if only one of the operands is NULL, and NULL is only returned if both operands are NULL.

#### onDuplicateKeyUpdate

MySQL style INSERT ... ON DUPLICATE KEY UPDATE ...

#### prohibitEmptyInPredicate

Whether an empty list as in "NAME IN()" results in a syntax error.

#### serialColumnIsNotPK

SERIAL and BIGSERIAL columns are not automatically primary keys.

#### squareBracketQuotedNames

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

#### supportOffsetFetch

Support for the syntax [OFFSET .. ROW|ROWS] [FETCH FIRST .. ROW|ROWS ONLY] as an alternative for LIMIT .. OFFSET.

#### supportPoundSymbolForColumnNames

Support the # for column names

#### supportedClientInfoPropertiesRegEx

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

#### swapConvertFunctionParameters

Swap the parameters of the CONVERT function.

#### sysDummy1

Support the pseudo-table SYSIBM.SYSDUMMY1.

#### systemColumns

The system columns 'CTID' and 'OID' are supported.

#### treatEmptyStringsAsNull

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

#### uniqueIndexSingleNull

For unique indexes, NULL is distinct. That means only one row with NULL in one of the columns is allowed.

#### uniqueIndexSingleNullExceptAllColumnsAreNull

When using unique indexes, multiple rows with NULL in all columns are allowed, however it is not allowed to have multiple rows with the same values otherwise.