diff --git a/docs/_fragments/_uuid-support-table.mdx b/docs/_fragments/_uuid-support-table.mdx index 423009d1c..dd06d3342 100644 --- a/docs/_fragments/_uuid-support-table.mdx +++ b/docs/_fragments/_uuid-support-table.mdx @@ -2,9 +2,9 @@ import { DialectTableFilter } from '@site/src/components/dialect-table-filter.ts -| | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | -| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------ | --------- | --- | ---- | ------ | -| `uuidV1` | [`uuid_generate_v1`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | [`UUID`](https://mariadb.com/kb/en/uuid/) | [`UUID`](https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid) | N/A | N/A | N/A | N/A | N/A | N/A | -| `uuidV4` | **pg >= v13**: [`gen_random_uuid`](https://www.postgresql.org/docs/current/functions-uuid.html)
**pg < v13**: [`uuid_generate_v4`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | N/A | N/A | [`NEWID`](https://learn.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-ver16) | N/A | N/A | N/A | N/A | N/A | +| | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ------ | --------- | --- | ---- | ------ | -------- | +| `uuidV1` | [`uuid_generate_v1`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | [`UUID`](https://mariadb.com/kb/en/uuid/) | [`UUID`](https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_uuid) | N/A | N/A | N/A | N/A | N/A | N/A | N/A | +| `uuidV4` | **pg >= v13**: [`gen_random_uuid`](https://www.postgresql.org/docs/current/functions-uuid.html)
**pg < v13**: [`uuid_generate_v4`](https://www.postgresql.org/docs/current/uuid-ossp.html) (requires `uuid-ossp`) | N/A | N/A | [`NEWID`](https://learn.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-ver16) | N/A | N/A | N/A | N/A | N/A | N/A |
diff --git a/docs/databases/hana.mdx b/docs/databases/hana.mdx new file mode 100644 index 000000000..0d8f7536a --- /dev/null +++ b/docs/databases/hana.mdx @@ -0,0 +1,59 @@ +--- +title: SAP HANA +sidebar_position: 1 +--- + +# Sequelize for SAP HANA + +:::info Version Compatibility + +See [Releases](/releases#sap-hana-support-table) to see which versions of SAP HANA are supported. + +::: + +To use Sequelize with SAP HANA, you need to install the `@sequelize/hana` dialect package: + +```bash npm2yarn +npm i @sequelize/hana +``` + +Then use the `HanaDialect` class as the dialect option in the Sequelize constructor: + +```ts +import { Sequelize } from '@sequelize/core'; +import { HanaDialect } from '@sequelize/hana'; + +const sequelize = new Sequelize({ + dialect: HanaDialect, + database: 'mydb', + user: 'myuser', + password: 'mypass', + host: 'localhost', + port: 443, +}); +``` + +## Connection Options + +import ConnectionOptions from './_connection-options.md'; + + + +The following options are accepted by the SAP HANA dialect: + +| Option | Description | +| --------------- | ------------------------------------------------------------------------ | +| `host` | Specifies the name of the host to connect to. | +| `port` | Specifies the port number to connect to. | +| `database` | Specifies the name of the database to connect to. | +| `user` | Specifies the name of an SAP HANA database user. | +| `password` | Specifies the password for the SAP HANA database user. | +| `currentSchema` | Sets the current schema, which is used for identifiers without a schema. | + +:::info + +Sequelize uses the [`@sap/hana-client`](https://www.npmjs.com/package/@sap/hana-client) package to connect to SAP HANA. +Most of the above options are provided as-is to the `@sap/hana-client` package, +and you can find more information about them in the [@sap/hana-client documentation](https://help.sap.com/docs/SAP_HANA_CLIENT/f1b440ded6144a54ada97ff95dac7adf/4fe9978ebac44f35b9369ef5a4a26f4c.html). + +::: diff --git a/docs/models/data-types.mdx b/docs/models/data-types.mdx index dd619c981..69c9037a8 100644 --- a/docs/models/data-types.mdx +++ b/docs/models/data-types.mdx @@ -29,22 +29,22 @@ A ❌ means the dialect does not support that DataType. -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | [Snowflake](https://docs.snowflake.com/en/sql-reference/data-types-text.html) | db2 | ibmi | [Oracle](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-7B72E154-677A-4342-A1EA-C74C1EA928E6) | -| -------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------- | ---------------------------- | ------------------------------ | -------------------------- | ----------------------------------------------------------------------------- | --------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| [`STRING`](pathname:///api/v7/classes/_sequelize_core.index.unknown.STRING.html) | [`VARCHAR(255)`][postgres-char] | [`VARCHAR(255)`][mariadb-varchar] | [`VARCHAR(255)`][mysql-char] | [`NVARCHAR(255)`][mssql-nchar] | `TEXT` | `VARCHAR(255)` | `VARCHAR(255)` | `VARCHAR(255)` | [`NVARCHAR2(255)`](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-CC15FC97-BE94-4FA4-994A-6DDF7F1A9904) | -| `STRING(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR(100)` | `TEXT` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR2(100)` | -| `STRING.BINARY` | ❌ | `VARCHAR(255) BINARY` | `VARCHAR(255) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(255) BINARY` | `VARCHAR(255) FOR BIT DATA` | `VARCHAR(255) FOR BIT DATA` | [`RAW(255)`](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-4FD497DD-3331-4C25-9147-3CEBEFDBFF22) | -| `STRING(100).BINARY` | ❌ | `VARCHAR(100) BINARY` | `VARCHAR(100) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(100) BINARY` | `VARCHAR(100) FOR BIT DATA` | `VARCHAR(100) FOR BIT DATA` | `RAW(100)` | -| [`TEXT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TEXT.html) | [`TEXT`][postgres-char] | [`TEXT`][mariadb-text] | [`TEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` | [`CLOB`][oracle-lob] | -| `TEXT('tiny')` | `TEXT` | [`TINYTEXT`][mariadb-tinytext] | [`TINYTEXT`][mysql-text] | `NVARCHAR(256)` | `TEXT` | `TEXT` | `VARCHAR(256)` | `VARCHAR(256)` | `CLOB` | -| `TEXT('medium')` | `TEXT` | [`MEDIUMTEXT`][mariadb-mediumtext] | [`MEDIUMTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `VARCHAR(16777216)` | `VARCHAR(16777216)` | `CLOB` | -| `TEXT('long')` | `TEXT` | [`LONGTEXT`][mariadb-longtext] | [`LONGTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` | `CLOB` | -| [`CHAR`](pathname:///api/v7/classes/_sequelize_core.index.unknown.CHAR.html) | [`CHAR(255)`][postgres-char] | [`CHAR(255)`][mariadb-char] | [`CHAR(255)`][mysql-char] | [`CHAR(255)`][mssql-char] | ❌ | `CHAR(255)` | `CHAR(255)` | `CHAR(255)` | [`CHAR(255)`][oracle-char] | -| `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | ❌ | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | -| `CHAR.BINARY` | ❌ | `CHAR(255) BINARY` | `CHAR(255) BINARY` | ❌ | ❌ | `CHAR(255) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` | `RAW(255)` | -| `CHAR(100).BINARY` | ❌ | `CHAR(100) BINARY` | `CHAR(100) BINARY` | ❌ | ❌ | `CHAR(100) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` | `RAW(100)` | -| `CITEXT` | [`CITEXT`](https://www.postgresql.org/docs/current/citext.html) | ❌ | ❌ | ❌ | `TEXT COLLATE NOCASE` | ❌ | ❌ | ❌ | ❌ | -| `TSVECTOR` | [`TSVECTOR`][postgres-tsvector] | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | [Snowflake](https://docs.snowflake.com/en/sql-reference/data-types-text.html) | db2 | ibmi | [Oracle](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-7B72E154-677A-4342-A1EA-C74C1EA928E6) | SAP HANA | +| -------------------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------- | ---------------------------- | ------------------------------ | -------------------------- | ----------------------------------------------------------------------------- | --------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------- | ---------------------------- | +| [`STRING`](pathname:///api/v7/classes/_sequelize_core.index.unknown.STRING.html) | [`VARCHAR(255)`][postgres-char] | [`VARCHAR(255)`][mariadb-varchar] | [`VARCHAR(255)`][mysql-char] | [`NVARCHAR(255)`][mssql-nchar] | `TEXT` | `VARCHAR(255)` | `VARCHAR(255)` | `VARCHAR(255)` | [`NVARCHAR2(255)`](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-CC15FC97-BE94-4FA4-994A-6DDF7F1A9904) | [`NVARCHAR(255)`][hana-char] | +| `STRING(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR(100)` | `TEXT` | `VARCHAR(100)` | `VARCHAR(100)` | `VARCHAR(100)` | `NVARCHAR2(100)` | `NVARCHAR(100)` | +| `STRING.BINARY` | ❌ | `VARCHAR(255) BINARY` | `VARCHAR(255) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(255) BINARY` | `VARCHAR(255) FOR BIT DATA` | `VARCHAR(255) FOR BIT DATA` | [`RAW(255)`](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-4FD497DD-3331-4C25-9147-3CEBEFDBFF22) | ❌ | +| `STRING(100).BINARY` | ❌ | `VARCHAR(100) BINARY` | `VARCHAR(100) BINARY` | ❌ | `TEXT COLLATE BINARY` | `VARCHAR(100) BINARY` | `VARCHAR(100) FOR BIT DATA` | `VARCHAR(100) FOR BIT DATA` | `RAW(100)` | ❌ | +| [`TEXT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TEXT.html) | [`TEXT`][postgres-char] | [`TEXT`][mariadb-text] | [`TEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` | [`CLOB`][oracle-lob] | [`NCLOB`][hana-lob] | +| `TEXT('tiny')` | `TEXT` | [`TINYTEXT`][mariadb-tinytext] | [`TINYTEXT`][mysql-text] | `NVARCHAR(256)` | `TEXT` | `TEXT` | `VARCHAR(256)` | `VARCHAR(256)` | `CLOB` | `NVARCHAR(256)` | +| `TEXT('medium')` | `TEXT` | [`MEDIUMTEXT`][mariadb-mediumtext] | [`MEDIUMTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `VARCHAR(16777216)` | `VARCHAR(16777216)` | `CLOB` | `NCLOB` | +| `TEXT('long')` | `TEXT` | [`LONGTEXT`][mariadb-longtext] | [`LONGTEXT`][mysql-text] | `NVARCHAR(MAX)` | `TEXT` | `TEXT` | `CLOB(2147483647)` | `CLOB(2147483647)` | `CLOB` | `NCLOB` | +| [`CHAR`](pathname:///api/v7/classes/_sequelize_core.index.unknown.CHAR.html) | [`CHAR(255)`][postgres-char] | [`CHAR(255)`][mariadb-char] | [`CHAR(255)`][mysql-char] | [`CHAR(255)`][mssql-char] | ❌ | `CHAR(255)` | `CHAR(255)` | `CHAR(255)` | [`CHAR(255)`][oracle-char] | `NCHAR(255)` | +| `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | ❌ | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `CHAR(100)` | `NCHAR(100)` | +| `CHAR.BINARY` | ❌ | `CHAR(255) BINARY` | `CHAR(255) BINARY` | ❌ | ❌ | `CHAR(255) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` | `RAW(255)` | ❌ | +| `CHAR(100).BINARY` | ❌ | `CHAR(100) BINARY` | `CHAR(100) BINARY` | ❌ | ❌ | `CHAR(100) BINARY` | `CHAR(255) FOR BIT DATA` | `CHAR(255) FOR BIT DATA` | `RAW(100)` | ❌ | +| `CITEXT` | [`CITEXT`](https://www.postgresql.org/docs/current/citext.html) | ❌ | ❌ | ❌ | `TEXT COLLATE NOCASE` | ❌ | ❌ | ❌ | ❌ | ❌ | +| `TSVECTOR` | [`TSVECTOR`][postgres-tsvector] | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -57,9 +57,9 @@ For the Oracle dialect, `DataTypes.TEXT` maps to CLOB, which has limitations whe -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | -| ------------------ | -------------------------------------------------------------------------- | ------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------- | ------------------------ | -| `BOOLEAN` | [`BOOLEAN`](https://www.postgresql.org/docs/current/datatype-boolean.html) | [`TINYINT(1)`][mariadb-tinyint] | [`TINYINT(1)`][mysql-numeric] | [`BIT`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-ver15) | [`TINYINT(1)`][sqlite-datatypes] | [`BOOLEAN`](https://docs.snowflake.com/en/sql-reference/data-types-logical.html) | `BOOLEAN` | `SMALLINT` | [`CHAR(1)`][oracle-char] | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| ------------------ | -------------------------------------------------------------------------- | ------------------------------- | ----------------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------- | -------------------------------------------------------------------------------- | --------- | ---------- | ------------------------ | ------------------------- | +| `BOOLEAN` | [`BOOLEAN`](https://www.postgresql.org/docs/current/datatype-boolean.html) | [`TINYINT(1)`][mariadb-tinyint] | [`TINYINT(1)`][mysql-numeric] | [`BIT`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql?view=sql-server-ver15) | [`TINYINT(1)`][sqlite-datatypes] | [`BOOLEAN`](https://docs.snowflake.com/en/sql-reference/data-types-logical.html) | `BOOLEAN` | `SMALLINT` | [`CHAR(1)`][oracle-char] | [`BOOLEAN`][hana-boolean] | @@ -67,28 +67,28 @@ For the Oracle dialect, `DataTypes.TEXT` maps to CLOB, which has limitations whe -| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-ints] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | [Oracle][oracle-numeric] | -| -------------------------------------------------------------------------------------- | ------------------------------ | --------------------------------------------------- | ---------------------- | -------------------- | -------------------------- | ------------------------------ | ------------------- | ------------------- | --------------------------- | -| [`TINYINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TINYINT.html) | `SMALLINT`[^ints-1] | [`TINYINT`][mariadb-tinyint] | `TINYINT` | `SMALLINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT`[^ints-1] | `SMALLINT`[^ints-1] | `NUMBER(3)` | -| `TINYINT(1)` | ❌ | `TINYINT(1)` | `TINYINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(3)` | -| `TINYINT.UNSIGNED` | `SMALLINT` | `TINYINT UNSIGNED` | `TINYINT UNSIGNED` | `TINYINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` | `NUMBER(3)` | -| `TINYINT.ZEROFILL` | ❌ | `TINYINT ZEROFILL` | `TINYINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [`SMALLINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.SMALLINT.html) | `SMALLINT` | [`SMALLINT`](https://mariadb.com/kb/en/smallint/) | `SMALLINT` | `SMALLINT` | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` | `SMALLINT` | -| `SMALLINT(1)` | ❌ | `SMALLINT(1)` | `SMALLINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(1,0)` | -| `SMALLINT.UNSIGNED` | `INTEGER`[^ints-2] | `SMALLINT UNSIGNED` | `SMALLINT UNSIGNED` | `INTEGER`[^ints-2] | `INTEGER` | `INTEGER` | `INTEGER`[^ints-2] | `INTEGER`[^ints-2] | `SMALLINT` | -| `SMALLINT.ZEROFILL` | ❌ | `SMALLINT ZEROFILL` | `SMALLINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [`MEDIUMINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.MEDIUMINT.html) | `INTEGER` | [`MEDIUMINT`](https://mariadb.com/kb/en/mediumint/) | `MEDIUMINT` | `INTEGER`[^ints-1] | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `NUMBER(8)` | -| `MEDIUMINT(1)` | ❌ | `MEDIUMINT(1)` | `MEDIUMINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(8)` | -| `MEDIUMINT.UNSIGNED` | `INTEGER` | `MEDIUMINT UNSIGNED` | `MEDIUMINT UNSIGNED` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `NUMBER(8)` | -| `MEDIUMINT.ZEROFILL` | ❌ | `MEDIUMINT ZEROFILL` | `MEDIUMINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [`INTEGER`](pathname:///api/v7/classes/_sequelize_core.index.unknown.INTEGER.html) | `INTEGER` | [`INTEGER`](https://mariadb.com/kb/en/integer/) | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | [`INTEGER`][oracle-integer] | -| `INTEGER(1)` | ❌ | `INTEGER(1)` | `INTEGER(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(1,0)` | -| `INTEGER.UNSIGNED` | `BIGINT` | `INTEGER UNSIGNED` | `INTEGER UNSIGNED` | `BIGINT` | `INTEGER` | `INTEGER` | `BIGINT` | `BIGINT` | `INTEGER` | -| `INTEGER.ZEROFILL` | ❌ | `INTEGER ZEROFILL` | `INTEGER ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [`BIGINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BIGINT.html) | `BIGINT` | [`BIGINT`](https://mariadb.com/kb/en/bigint/) | `BIGINT` | `BIGINT` | ❌ | `INTEGER` | `BIGINT` | `BIGINT` | `NUMBER(19,0)` | -| `BIGINT(1)` | ❌ | `BIGINT(1)` | `BIGINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(19,0)` | -| `BIGINT.UNSIGNED` | ❌ | `BIGINT UNSIGNED` | `BIGINT UNSIGNED` | ❌ | ❌ | `INTEGER` | ❌ | ❌ | `NUMBER(19,0)` | -| `BIGINT.ZEROFILL` | ❌ | `BIGINT ZEROFILL` | `BIGINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-ints] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | [Oracle][oracle-numeric] | SAP HANA | +| -------------------------------------------------------------------------------------- | ------------------------------ | --------------------------------------------------- | ---------------------- | -------------------- | -------------------------- | ------------------------------ | ------------------- | ------------------- | --------------------------- | ------------------- | +| [`TINYINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.TINYINT.html) | `SMALLINT`[^ints-1] | [`TINYINT`][mariadb-tinyint] | `TINYINT` | `SMALLINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT`[^ints-1] | `SMALLINT`[^ints-1] | `NUMBER(3)` | `SMALLINT`[^hana-1] | +| `TINYINT(1)` | ❌ | `TINYINT(1)` | `TINYINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(3)` | ❌ | +| `TINYINT.UNSIGNED` | `SMALLINT` | `TINYINT UNSIGNED` | `TINYINT UNSIGNED` | `TINYINT`[^mssql-1] | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` | `NUMBER(3)` | `TINYINT`[^hana-1] | +| `TINYINT.ZEROFILL` | ❌ | `TINYINT ZEROFILL` | `TINYINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [`SMALLINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.SMALLINT.html) | `SMALLINT` | [`SMALLINT`](https://mariadb.com/kb/en/smallint/) | `SMALLINT` | `SMALLINT` | `INTEGER` | `INTEGER` | `SMALLINT` | `SMALLINT` | `SMALLINT` | `SMALLINT` | +| `SMALLINT(1)` | ❌ | `SMALLINT(1)` | `SMALLINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(1,0)` | ❌ | +| `SMALLINT.UNSIGNED` | `INTEGER`[^ints-2] | `SMALLINT UNSIGNED` | `SMALLINT UNSIGNED` | `INTEGER`[^ints-2] | `INTEGER` | `INTEGER` | `INTEGER`[^ints-2] | `INTEGER`[^ints-2] | `SMALLINT` | `INTEGER`[^ints-2] | +| `SMALLINT.ZEROFILL` | ❌ | `SMALLINT ZEROFILL` | `SMALLINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [`MEDIUMINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.MEDIUMINT.html) | `INTEGER` | [`MEDIUMINT`](https://mariadb.com/kb/en/mediumint/) | `MEDIUMINT` | `INTEGER`[^ints-1] | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `NUMBER(8)` | `INTEGER`[^ints-1] | +| `MEDIUMINT(1)` | ❌ | `MEDIUMINT(1)` | `MEDIUMINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(8)` | ❌ | +| `MEDIUMINT.UNSIGNED` | `INTEGER` | `MEDIUMINT UNSIGNED` | `MEDIUMINT UNSIGNED` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `NUMBER(8)` | `INTEGER` | +| `MEDIUMINT.ZEROFILL` | ❌ | `MEDIUMINT ZEROFILL` | `MEDIUMINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [`INTEGER`](pathname:///api/v7/classes/_sequelize_core.index.unknown.INTEGER.html) | `INTEGER` | [`INTEGER`](https://mariadb.com/kb/en/integer/) | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | `INTEGER` | [`INTEGER`][oracle-integer] | `INTEGER` | +| `INTEGER(1)` | ❌ | `INTEGER(1)` | `INTEGER(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(1,0)` | ❌ | +| `INTEGER.UNSIGNED` | `BIGINT` | `INTEGER UNSIGNED` | `INTEGER UNSIGNED` | `BIGINT` | `INTEGER` | `INTEGER` | `BIGINT` | `BIGINT` | `INTEGER` | `BIGINT` | +| `INTEGER.ZEROFILL` | ❌ | `INTEGER ZEROFILL` | `INTEGER ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [`BIGINT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BIGINT.html) | `BIGINT` | [`BIGINT`](https://mariadb.com/kb/en/bigint/) | `BIGINT` | `BIGINT` | ❌ | `INTEGER` | `BIGINT` | `BIGINT` | `NUMBER(19,0)` | `BIGINT` | +| `BIGINT(1)` | ❌ | `BIGINT(1)` | `BIGINT(1)` | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER(19,0)` | ❌ | +| `BIGINT.UNSIGNED` | ❌ | `BIGINT UNSIGNED` | `BIGINT UNSIGNED` | ❌ | ❌ | `INTEGER` | ❌ | ❌ | `NUMBER(19,0)` | ❌ | +| `BIGINT.ZEROFILL` | ❌ | `BIGINT ZEROFILL` | `BIGINT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -98,6 +98,8 @@ For the Oracle dialect, `DataTypes.TEXT` maps to CLOB, which has limitations whe [^mssql-1]: `TINYINT` in SQL Server is unsigned. `DataTypes.TINYINT.UNSIGNED` therefore maps to `TINYINT`, and `DataTypes.TINYINT` maps to `SMALLINT`. +[^hana-1]: `TINYINT` in SAP HANA is unsigned. `DataTypes.TINYINT.UNSIGNED` therefore maps to `TINYINT`, and `DataTypes.TINYINT` maps to `SMALLINT`. + :::caution The JavaScript [`number`][mdn-number] type can represent ints ranging from [`-9007199254740991`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER) @@ -123,16 +125,16 @@ The types in the following table are typically represented as an [IEEE 754 float -| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-inexact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | [Oracle][oracle-float] | -| -------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------- | --------------------------- | ------------------------------- | -------------------------- | ------------------------------ | -------- | -------- | ---------------------- | -| [`FLOAT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.FLOAT.html) | `REAL` | [`FLOAT`](https://mariadb.com/kb/en/float/) | `FLOAT` | `REAL` | `REAL`[^sqlite-3] | `FLOAT`[^snowflake-1] | `REAL` | `REAL` | `BINARY_FLOAT` | -| `FLOAT(11, 10)` | ❌ | `FLOAT(11,10)` | `FLOAT(11,10)` | ❌ | ❌ | ❌ | ❌ | ❌ | `BINARY_FLOAT` | -| `FLOAT.UNSIGNED` | `REAL` | `FLOAT UNSIGNED` | `FLOAT UNSIGNED` | `REAL` | `REAL` | `FLOAT` | `REAL` | `REAL` | `BINARY_FLOAT` | -| `FLOAT.ZEROFILL` | ❌ | `FLOAT ZEROFILL` | `FLOAT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [`DOUBLE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DOUBLE.html) | `DOUBLE PRECISION` | [`DOUBLE PRECISION`](https://mariadb.com/kb/en/double/) | `DOUBLE PRECISION` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` | `BINARY_DOUBLE` | -| `DOUBLE(11, 10)` | ❌ | `DOUBLE PRECISION(11, 10)` | `DOUBLE PRECISION(11, 10)` | ❌ | ❌ | ❌ | ❌ | ❌ | `BINARY_DOUBLE` | -| `DOUBLE.UNSIGNED` | `DOUBLE PRECISION` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` | `BINARY_DOUBLE` | -| `DOUBLE.ZEROFILL` | ❌ | `DOUBLE PRECISION ZEROFILL` | `DOUBLE PRECISION ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-inexact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | [Oracle][oracle-float] | SAP HANA | +| -------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------- | --------------------------- | ------------------------------- | -------------------------- | ------------------------------ | -------- | -------- | ---------------------- | -------- | +| [`FLOAT`](pathname:///api/v7/classes/_sequelize_core.index.unknown.FLOAT.html) | `REAL` | [`FLOAT`](https://mariadb.com/kb/en/float/) | `FLOAT` | `REAL` | `REAL`[^sqlite-3] | `FLOAT`[^snowflake-1] | `REAL` | `REAL` | `BINARY_FLOAT` | `REAL` | +| `FLOAT(11, 10)` | ❌ | `FLOAT(11,10)` | `FLOAT(11,10)` | ❌ | ❌ | ❌ | ❌ | ❌ | `BINARY_FLOAT` | ❌ | +| `FLOAT.UNSIGNED` | `REAL` | `FLOAT UNSIGNED` | `FLOAT UNSIGNED` | `REAL` | `REAL` | `FLOAT` | `REAL` | `REAL` | `BINARY_FLOAT` | `REAL` | +| `FLOAT.ZEROFILL` | ❌ | `FLOAT ZEROFILL` | `FLOAT ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [`DOUBLE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DOUBLE.html) | `DOUBLE PRECISION` | [`DOUBLE PRECISION`](https://mariadb.com/kb/en/double/) | `DOUBLE PRECISION` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` | `BINARY_DOUBLE` | `DOUBLE` | +| `DOUBLE(11, 10)` | ❌ | `DOUBLE PRECISION(11, 10)` | `DOUBLE PRECISION(11, 10)` | ❌ | ❌ | ❌ | ❌ | ❌ | `BINARY_DOUBLE` | ❌ | +| `DOUBLE.UNSIGNED` | `DOUBLE PRECISION` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION UNSIGNED` | `DOUBLE PRECISION` | `REAL` | `FLOAT` | `DOUBLE` | `DOUBLE` | `BINARY_DOUBLE` | `DOUBLE` | +| `DOUBLE.ZEROFILL` | ❌ | `DOUBLE PRECISION ZEROFILL` | `DOUBLE PRECISION ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -154,12 +156,12 @@ Numeric options can be combined:
-| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-exact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | [Oracle][oracle-decimal] | -| ---------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------ | ------------------------ | ----------------------------- | -------------------------- | ------------------------------ | ---------------- | ---------------- | ------------------------ | -| [`DECIMAL`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DECIMAL.html) | `DECIMAL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER` | -| `DECIMAL(11, 10)` | `DECIMAL(11, 10)` | [`DECIMAL(11,10)`](https://mariadb.com/kb/en/decimal/) | `DECIMAL(11,10)` | `DECIMAL(11,10)` | ❌ | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `NUMBER(11,10)` | -| `DECIMAL(p, s).UNSIGNED` | `DECIMAL(p, s)` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s)` | ❌ | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `NUMBER(p, s)` | -| `DECIMAL(p, s).ZEROFILL` | ❌ | `DECIMAL(p, s) ZEROFILL` | `DECIMAL(p, s) ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | [PostgreSQL][postgres-numeric] | [MariaDB][mariadb-numeric] | [MySQL][mysql-numeric] | [MSSQL][mssql-exact-decimals] | [SQLite][sqlite-datatypes] | [Snowflake][snowflake-numeric] | db2 | ibmi | [Oracle][oracle-decimal] | SAP HANA | +| ---------------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------ | ------------------------ | ----------------------------- | -------------------------- | ------------------------------ | ---------------- | ---------------- | ------------------------ | ---------------- | +| [`DECIMAL`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DECIMAL.html) | `DECIMAL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | `NUMBER` | `DECIMAL` | +| `DECIMAL(11, 10)` | `DECIMAL(11, 10)` | [`DECIMAL(11,10)`](https://mariadb.com/kb/en/decimal/) | `DECIMAL(11,10)` | `DECIMAL(11,10)` | ❌ | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `DECIMAL(11,10)` | `NUMBER(11,10)` | `DECIMAL(11,10)` | +| `DECIMAL(p, s).UNSIGNED` | `DECIMAL(p, s)` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s) UNSIGNED` | `DECIMAL(p, s)` | ❌ | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `DECIMAL(p, s)` | `NUMBER(p, s)` | `DECIMAL(p, s)` | +| `DECIMAL(p, s).ZEROFILL` | ❌ | `DECIMAL(p, s) ZEROFILL` | `DECIMAL(p, s) ZEROFILL` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -183,13 +185,13 @@ Numeric options can be combined:
-| Sequelize DataType | [PostgreSQL][postgres-temporal] | [MariaDB][mariadb-temporal] | [MySQL][mysql-temporal] | MSSQL | SQLite | [Snowflake][snowflake-temporal] | db2 | ibmi | [Oracle][oracle-date] | -| ---------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------ | ------------------------------- | -------------- | -------------- | -------------------------------- | -| [`DATE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DATE.html) | `TIMESTAMP WITH TIME ZONE` | [`DATETIME`](https://mariadb.com/kb/en/datetime/) | [`DATETIME`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATETIMEOFFSET`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql) | `TEXT` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP WITH LOCAL TIME ZONE` | -| `DATE(6)` | `TIMESTAMP(6) WITH TIME ZONE` | `DATETIME(6)` | `DATETIME(6)` | `DATETIMEOFFSET(6)` | `TEXT` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP WITH LOCAL TIME ZONE` | -| `DATEONLY` | `DATE` | [`DATE`](https://mariadb.com/kb/en/date/) | [`DATE`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATE`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) | `TEXT` | `DATE` | `DATE` | `DATE` | `DATE` | -| `TIME` | `TIME` | [`TIME`](https://mariadb.com/kb/en/time/) | [`TIME`](https://dev.mysql.com/doc/refman/8.0/en/time.html) | [`TIME`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) | `TEXT` | `TIME` | `TIME` | `TIME` | ❌ | -| `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TEXT` | `TIME(6)` | `TIME(6)` | `TIME(6)` | ❌ | +| Sequelize DataType | [PostgreSQL][postgres-temporal] | [MariaDB][mariadb-temporal] | [MySQL][mysql-temporal] | MSSQL | SQLite | [Snowflake][snowflake-temporal] | db2 | ibmi | [Oracle][oracle-date] | [SAP HANA][hana-temporal] | +| ---------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------ | ------------------------------- | -------------- | -------------- | -------------------------------- | ------------------------- | +| [`DATE`](pathname:///api/v7/classes/_sequelize_core.index.unknown.DATE.html) | `TIMESTAMP WITH TIME ZONE` | [`DATETIME`](https://mariadb.com/kb/en/datetime/) | [`DATETIME`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATETIMEOFFSET`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetimeoffset-transact-sql) | `TEXT` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP` | `TIMESTAMP WITH LOCAL TIME ZONE` | `TIMESTAMP` | +| `DATE(6)` | `TIMESTAMP(6) WITH TIME ZONE` | `DATETIME(6)` | `DATETIME(6)` | `DATETIMEOFFSET(6)` | `TEXT` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP(6)` | `TIMESTAMP WITH LOCAL TIME ZONE` | `TIMESTAMP` | +| `DATEONLY` | `DATE` | [`DATE`](https://mariadb.com/kb/en/date/) | [`DATE`](https://dev.mysql.com/doc/refman/8.0/en/datetime.html) | [`DATE`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/date-transact-sql) | `TEXT` | `DATE` | `DATE` | `DATE` | `DATE` | `DATE` | +| `TIME` | `TIME` | [`TIME`](https://mariadb.com/kb/en/time/) | [`TIME`](https://dev.mysql.com/doc/refman/8.0/en/time.html) | [`TIME`](https://docs.microsoft.com/en-us/sql/t-sql/data-types/time-transact-sql) | `TEXT` | `TIME` | `TIME` | `TIME` | ❌ | `TIME` | +| `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TIME(6)` | `TEXT` | `TIME(6)` | `TIME(6)` | `TIME(6)` | ❌ | ❌ | @@ -200,9 +202,9 @@ which will use the appropriate native SQL function based on your dialect. -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | -| ------------------ | -------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------ | --------- | -------------- | ----- | --------------------------- | -| `NOW` | [`NOW`](https://www.postgresql.org/docs/8.2/functions-datetime.html) | [`NOW`](https://mariadb.com/kb/en/now/) | [`NOW`](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html) | [`GETDATE()`](https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql?view=sql-server-ver15) | ❌ | `NOW` | `CURRENT TIME` | `NOW` | [`SYSDATE`][oracle-sysdate] | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| ------------------ | -------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ------ | --------- | -------------- | ----- | --------------------------- | -------------- | +| `NOW` | [`NOW`](https://www.postgresql.org/docs/8.2/functions-datetime.html) | [`NOW`](https://mariadb.com/kb/en/now/) | [`NOW`](https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html) | [`GETDATE()`](https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql?view=sql-server-ver15) | ❌ | `NOW` | `CURRENT TIME` | `NOW` | [`SYSDATE`][oracle-sysdate] | `CURRENT_DATE` | @@ -226,9 +228,9 @@ to limit which version of UUID is accepted by the attribute to v4 or v1 respecti -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | -| ------------------ | -------------------------------------------------------------------- | ----------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------- | ----------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------- | -| `UUID` | [`UUID`](https://www.postgresql.org/docs/current/datatype-uuid.html) | `CHAR(36) BINARY` | `CHAR(36) BINARY` | [`UNIQUEIDENTIFIER`](https://learn.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-ver16) | `TEXT` | `VARCHAR(36)` | `CHAR(36) FOR BIT DATA` | `CHAR(36) FOR BIT DATA` | [`VARCHAR2(36)`](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-0DC7FFAA-F03F-4448-8487-F2592496A510) | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| ------------------ | -------------------------------------------------------------------- | ----------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------- | ----------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------- | +| `UUID` | [`UUID`](https://www.postgresql.org/docs/current/datatype-uuid.html) | `CHAR(36) BINARY` | `CHAR(36) BINARY` | [`UNIQUEIDENTIFIER`](https://learn.microsoft.com/en-us/sql/t-sql/data-types/uniqueidentifier-transact-sql?view=sql-server-ver16) | `TEXT` | `VARCHAR(36)` | `CHAR(36) FOR BIT DATA` | `CHAR(36) FOR BIT DATA` | [`VARCHAR2(36)`](https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-0DC7FFAA-F03F-4448-8487-F2592496A510) | `VARCHAR(36)` | @@ -271,12 +273,12 @@ The blob datatype allows you to insert data both as strings and buffers. However -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi | [Oracle][oracle-lob] | -| ---------------------------------------------------------------------------- | ---------- | ------------ | ------------ | ---------------- | -------------------------- | ------------ | ----------- | ----------- | -------------------- | -| [`BLOB`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BLOB.html) | `BYTEA` | `BLOB` | `BLOB` | `VARBINARY(MAX)` | `BLOB` | `BLOB` | `BLOB(1M)` | `BLOB(1M)` | `BLOB` | -| `BLOB('tiny')` | `BYTEA` | `TINYBLOB` | `TINYBLOB` | `VARBINARY(256)` | `BLOB` | `TINYBLOB` | `BLOB(255)` | `BLOB(255)` | `BLOB` | -| `BLOB('medium')` | `BYTEA` | `MEDIUMBLOB` | `MEDIUMBLOB` | `VARBINARY(MAX)` | `BLOB` | `MEDIUMBLOB` | `BLOB(16M)` | `BLOB(16M)` | `BLOB` | -| `BLOB('long')` | `BYTEA` | `LONGBLOB` | `LONGBLOB` | `VARBINARY(MAX)` | `BLOB` | `LONGBLOB` | `BLOB(2G)` | `BLOB(2G)` | `BLOB` | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi | [Oracle][oracle-lob] | SAP HANA | +| ---------------------------------------------------------------------------- | ---------- | ------------ | ------------ | ---------------- | -------------------------- | ------------ | ----------- | ----------- | -------------------- | -------- | +| [`BLOB`](pathname:///api/v7/classes/_sequelize_core.index.unknown.BLOB.html) | `BYTEA` | `BLOB` | `BLOB` | `VARBINARY(MAX)` | `BLOB` | `BLOB` | `BLOB(1M)` | `BLOB(1M)` | `BLOB` | `BLOB` | +| `BLOB('tiny')` | `BYTEA` | `TINYBLOB` | `TINYBLOB` | `VARBINARY(256)` | `BLOB` | `TINYBLOB` | `BLOB(255)` | `BLOB(255)` | `BLOB` | `BLOB` | +| `BLOB('medium')` | `BYTEA` | `MEDIUMBLOB` | `MEDIUMBLOB` | `VARBINARY(MAX)` | `BLOB` | `MEDIUMBLOB` | `BLOB(16M)` | `BLOB(16M)` | `BLOB` | `BLOB` | +| `BLOB('long')` | `BYTEA` | `LONGBLOB` | `LONGBLOB` | `VARBINARY(MAX)` | `BLOB` | `LONGBLOB` | `BLOB(2G)` | `BLOB(2G)` | `BLOB` | `BLOB` | @@ -303,10 +305,10 @@ The `DataTypes.JSON` data type is only supported for SQLite, MySQL, MariaDB, Pos -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi | Oracle | -| ------------------ | ----------------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | --------------- | -------------------------- | --------- | --- | ---- | -------------------- | -| `JSON` | [`JSON`](https://www.postgresql.org/docs/9.4/datatype-json.html) | [`JSON`](https://mariadb.com/kb/en/json-data-type/) | [`JSON`](https://dev.mysql.com/doc/refman/8.0/en/json.html) | `NVARCHAR(MAX)` | `TEXT` | ❌ | ❌ | ❌ | [`BLOB`][oracle-lob] | -| `JSONB` | [`JSONB`](https://www.postgresql.org/docs/9.4/datatype-json.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | [SQLite][sqlite-datatypes] | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| ------------------ | ----------------------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------------- | --------------- | -------------------------- | --------- | --- | ---- | -------------------- | ---------------- | +| `JSON` | [`JSON`](https://www.postgresql.org/docs/9.4/datatype-json.html) | [`JSON`](https://mariadb.com/kb/en/json-data-type/) | [`JSON`](https://dev.mysql.com/doc/refman/8.0/en/json.html) | `NVARCHAR(MAX)` | `TEXT` | ❌ | ❌ | ❌ | [`BLOB`][oracle-lob] | `NVARCHAR(5000)` | +| `JSONB` | [`JSONB`](https://www.postgresql.org/docs/9.4/datatype-json.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -333,15 +335,15 @@ SQL `NULL` value. -| Sequelize DataType | PostgreSQL | [MariaDB](https://mariadb.com/kb/en/geometry-types/) | [MySQL](https://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html) | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | -| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------- | ----- | ------ | --------- | --- | ---- | ------ | -| [`GEOMETRY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOMETRY.html) | [`GEOMETRY`](https://postgis.net/workshops/postgis-intro/geometries.html) | `GEOMETRY` | `GEOMETRY` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `GEOMETRY('POINT')` | `GEOMETRY(POINT)` | `POINT` | `POINT` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `GEOMETRY('POINT', 4326)` | `GEOMETRY(POINT,4326)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `GEOMETRY('POLYGON')` | `GEOMETRY(POLYGON)` | `POLYGON` | `POLYGON` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `GEOMETRY('LINESTRING')` | `GEOMETRY(LINESTRING)` | `LINESTRING` | `LINESTRING` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| [`GEOGRAPHY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOGRAPHY.html) | [`GEOGRAPHY`](https://postgis.net/workshops/postgis-intro/geography.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `HSTORE` | [`HSTORE`](https://www.postgresql.org/docs/9.1/hstore.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | PostgreSQL | [MariaDB](https://mariadb.com/kb/en/geometry-types/) | [MySQL](https://dev.mysql.com/doc/refman/8.0/en/spatial-type-overview.html) | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------------- | ----- | ------ | --------- | --- | ---- | ------ | -------- | +| [`GEOMETRY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOMETRY.html) | [`GEOMETRY`](https://postgis.net/workshops/postgis-intro/geometries.html) | `GEOMETRY` | `GEOMETRY` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `GEOMETRY('POINT')` | `GEOMETRY(POINT)` | `POINT` | `POINT` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `GEOMETRY('POINT', 4326)` | `GEOMETRY(POINT,4326)` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `GEOMETRY('POLYGON')` | `GEOMETRY(POLYGON)` | `POLYGON` | `POLYGON` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `GEOMETRY('LINESTRING')` | `GEOMETRY(LINESTRING)` | `LINESTRING` | `LINESTRING` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| [`GEOGRAPHY`](pathname:///api/v7/classes/_sequelize_core.index.unknown.GEOGRAPHY.html) | [`GEOGRAPHY`](https://postgis.net/workshops/postgis-intro/geography.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `HSTORE` | [`HSTORE`](https://www.postgresql.org/docs/9.1/hstore.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -468,12 +470,12 @@ User.init({ -| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | -| ------------------ | ------------------------------------------------------------------------ | ------- | ----- | ----- | ------ | --------- | --- | ---- | ------ | -| `CIDR` | [`CIDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `INET` | [`INET`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `MACADDR` | [`MACADDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | -| `MACADDR8` | [`MACADDR8`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Sequelize DataType | PostgreSQL | MariaDB | MySQL | MSSQL | SQLite | Snowflake | db2 | ibmi | Oracle | SAP HANA | +| ------------------ | ------------------------------------------------------------------------ | ------- | ----- | ----- | ------ | --------- | --- | ---- | ------ | -------- | +| `CIDR` | [`CIDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `INET` | [`INET`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `MACADDR` | [`MACADDR`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| `MACADDR8` | [`MACADDR8`](https://www.postgresql.org/docs/11/datatype-net-types.html) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | @@ -550,3 +552,7 @@ to request the addition of a new built-in DataType. [oracle-sysdate]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-807F8FC5-D72D-4F4D-B66D-B0FE1A8FA7D2 [oracle-lob]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-1A71C635-188E-4EC9-B821-1DBEC2B45451 [oracle-integer]: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-0BC16006-32F1-42B1-B45E-F27A494963FF +[hana-char]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/character-string-data-types +[hana-boolean]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/boolean-data-type +[hana-lob]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/large-object-lob-data-types +[hana-temporal]: https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/datetime-data-types diff --git a/docs/querying/select-in-depth.md b/docs/querying/select-in-depth.md index f7ca6e6a3..778753fd0 100644 --- a/docs/querying/select-in-depth.md +++ b/docs/querying/select-in-depth.md @@ -437,6 +437,7 @@ Snowflake: 'https://docs.snowflake.com/en/sql-reference/constructs/join', db2: 'https://www.ibm.com/docs/sr/db2-for-zos/11?topic=table-right-outer-join', ibmi: 'https://www.ibm.com/docs/en/i/7.4?topic=table-right-outer-join', 'Oracle': 'https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-70DD48FA-BF46-4479-9C3F-146C5616E440', +hana: 'https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/select-statement-data-manipulation', }} /> diff --git a/docusaurus.config.js b/docusaurus.config.js index 749bc329a..69fadd02b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -8,7 +8,7 @@ const lightCodeTheme = require('prism-react-renderer').themes.github; const config = { title: 'Sequelize', tagline: - 'Sequelize is a modern TypeScript and Node.js ORM for Oracle, Postgres, MySQL, MariaDB, SQLite and SQL Server, and more. Featuring solid transaction support, relations, eager and lazy loading, read replication and more.', + 'Sequelize is a modern TypeScript and Node.js ORM for Oracle, Postgres, MySQL, MariaDB, SQLite, SQL Server and SAP HANA, and more. Featuring solid transaction support, relations, eager and lazy loading, read replication and more.', url: 'https://sequelize.org', baseUrl: '/', onBrokenLinks: 'throw', diff --git a/src/pages/releases.mdx b/src/pages/releases.mdx index ef587c835..e2cd914cc 100644 --- a/src/pages/releases.mdx +++ b/src/pages/releases.mdx @@ -164,6 +164,16 @@ In Sequelize 6, Oracle requires the installation of the [node-oracledb] npm pack [Oracle]: https://www.oracle.com/database/technologies/oracle-database-software-downloads.html [node-oracledb]: https://www.npmjs.com/package/oracledb +## SAP HANA Support Table + +| Sequelize | [SAP HANA] | +| ----------- | ------------- | +| 7 (alpha) | all | +| 6 (current) | not available | + +[SAP HANA]: https://www.sap.com/products/data-cloud/hana.html +[node-hana-client]: https://www.npmjs.com/package/@sap/hana-client + [^1]: Connector libraries do not need to be installed manually anymore. [^⚠️2]: Support for mariadb 3 has not been completed yet https://github.com/sequelize/sequelize/pull/14187 diff --git a/src/utils/dialects.ts b/src/utils/dialects.ts index 67b137d08..ff20bd73d 100644 --- a/src/utils/dialects.ts +++ b/src/utils/dialects.ts @@ -8,4 +8,5 @@ export const SUPPORTED_DIALECTS = new Set([ 'db2', 'ibmi', 'Oracle', + 'hana', ]);