> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wirekite.io/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL / MariaDB / SingleStore

> This page explains how data types are mapped from a source MySQL and MariaDB database to target databases. Please visit the [MySQL Data Types Documentation](https://dev.mysql.com/doc/refman/8.4/en/data-types.html) to get a primer on the various MySQL and MariaDB datatypes.

### Mapping

The following tables explain how MySQL/MariaDB source datatypes are mapped to each target database. Wirekite extracts data from MySQL, converts it to an internal type representation, then maps to the appropriate target type.

#### Numeric Types

| MySQL                | PostgreSQL         | SQL Server    | Oracle          | DB2             | Firebolt  | Snowflake | Spanner   | BigQuery  | SingleStore          | Databricks |
| -------------------- | ------------------ | ------------- | --------------- | --------------- | --------- | --------- | --------- | --------- | -------------------- | ---------- |
| `TINYINT`            | `smallint`         | `SMALLINT`    | `NUMBER(38)`    | `SMALLINT`      | `INTEGER` | `tinyint` | `INT64`   | `INT64`   | `TINYINT`            | `TINYINT`  |
| `TINYINT UNSIGNED`   | `smallint`         | `SMALLINT`    | `NUMBER(38)`    | `SMALLINT`      | `INTEGER` | `number`  | `INT64`   | `INT64`   | `TINYINT UNSIGNED`   | `SMALLINT` |
| `SMALLINT`           | `smallint`         | `SMALLINT`    | `NUMBER(38)`    | `SMALLINT`      | `INTEGER` | `number`  | `INT64`   | `INT64`   | `SMALLINT`           | `SMALLINT` |
| `SMALLINT UNSIGNED`  | `integer`          | `INT`         | `NUMBER(38)`    | `INTEGER`       | `INTEGER` | `number`  | `INT64`   | `INT64`   | `SMALLINT UNSIGNED`  | `INT`      |
| `MEDIUMINT`          | `integer`          | `INT`         | `NUMBER(38)`    | `INTEGER`       | `INTEGER` | `number`  | `INT64`   | `INT64`   | `MEDIUMINT`          | `INT`      |
| `MEDIUMINT UNSIGNED` | `integer`          | `INT`         | `NUMBER(38)`    | `INTEGER`       | `INTEGER` | `number`  | `INT64`   | `INT64`   | `MEDIUMINT UNSIGNED` | `INT`      |
| `INT`                | `integer`          | `INT`         | `NUMBER(38)`    | `INTEGER`       | `INTEGER` | `int`     | `INT64`   | `INT64`   | `INT`                | `INT`      |
| `INT UNSIGNED`       | `bigint`           | `BIGINT`      | `NUMBER(38)`    | `BIGINT`        | `BIGINT`  | `number`  | `INT64`   | `INT64`   | `INT UNSIGNED`       | `DECIMAL`  |
| `BIGINT`             | `bigint`           | `BIGINT`      | `NUMBER(38)`    | `BIGINT`        | `BIGINT`  | `bigint`  | `INT64`   | `INT64`   | `BIGINT`             | `BIGINT`   |
| `BIGINT UNSIGNED`    | `numeric(21)`      | `NUMERIC(21)` | `NUMBER(38)`    | `DECIMAL(20,0)` | `NUMERIC` | `number`  | `NUMERIC` | `NUMERIC` | `BIGINT UNSIGNED`    | `DECIMAL`  |
| `DECIMAL`            | `decimal`          | `DECIMAL`     | `NUMBER`        | `DECIMAL`       | `NUMERIC` | `number`  | `NUMERIC` | `NUMERIC` | `DECIMAL`            | `DECIMAL`  |
| `DECIMAL UNSIGNED`   | `numeric`          | `NUMERIC(38)` | `NUMBER`        | `DECIMAL`       | `NUMERIC` | `number`  | `NUMERIC` | `NUMERIC` | `DECIMAL UNSIGNED`   | `DECIMAL`  |
| `FLOAT`              | `real`             | `REAL`        | `BINARY_FLOAT`  | `DOUBLE`        | `DOUBLE`  | `float`   | `FLOAT32` | `FLOAT64` | `FLOAT`              | `FLOAT`    |
| `FLOAT UNSIGNED`     | `double precision` | `REAL`        | `BINARY_FLOAT`  | `DOUBLE`        | `DOUBLE`  | `float`   | `FLOAT64` | `FLOAT64` | `FLOAT UNSIGNED`     | `DOUBLE`   |
| `DOUBLE`             | `double precision` | `FLOAT`       | `BINARY_DOUBLE` | `DOUBLE`        | `DOUBLE`  | `float`   | `FLOAT64` | `FLOAT64` | `DOUBLE`             | `DOUBLE`   |
| `DOUBLE UNSIGNED`    | N/A                | N/A           | `BINARY_DOUBLE` | `DOUBLE`        | N/A       | N/A       | `NUMERIC` | `NUMERIC` | `DOUBLE UNSIGNED`    | `DECIMAL`  |
| `BIT`                | `bit varying`      | `VARCHAR`     | `VARCHAR2`      | `VARCHAR`       | `TEXT`    | `varchar` | `STRING`  | `STRING`  | `BIT`                | `STRING`   |
| `BOOL` / `BOOLEAN`   | `boolean`          | `BIT`         | `CHAR(1)`       | `SMALLINT`      | `BOOLEAN` | `boolean` | `BOOL`    | `BOOL`    | `TINYINT(1)`         | `BOOLEAN`  |
| `YEAR`               | `smallint`         | `SMALLINT`    | `NUMBER(38)`    | `SMALLINT`      | `INTEGER` | `int`     | `INT64`   | `INT64`   | `YEAR`               | `INT`      |

<Note>
  MySQL BIT columns larger than 64 bits are automatically mapped to VARCHAR since MySQL's BIT type has a 64-bit maximum.
</Note>

#### Date and Time Types

| MySQL       | PostgreSQL                    | SQL Server    | Oracle                           | DB2           | Firebolt    | Snowflake       | Spanner     | BigQuery   | SingleStore   | Databricks  |
| ----------- | ----------------------------- | ------------- | -------------------------------- | ------------- | ----------- | --------------- | ----------- | ---------- | ------------- | ----------- |
| `DATE`      | `date`                        | `DATE`        | `DATE`                           | `DATE`        | `DATE`      | `date`          | `DATE`      | `DATE`     | `DATE`        | `DATE`      |
| `TIME`      | `time without time zone`      | `TIME`        | `VARCHAR2(64)`                   | `VARCHAR(64)` | `TEXT`      | `time`          | `STRING`    | `TIME`     | `TIME(6)`     | `STRING`    |
| `DATETIME`  | `timestamp without time zone` | `DATETIME2`   | `TIMESTAMP`                      | `TIMESTAMP`   | `TIMESTAMP` | `timestamp_ntz` | `TIMESTAMP` | `DATETIME` | `DATETIME(6)` | `TIMESTAMP` |
| `TIMESTAMP` | `varchar(64)`                 | `VARCHAR(32)` | `TIMESTAMP WITH LOCAL TIME ZONE` | `TIMESTAMP`   | `TIMESTAMP` | `timestamp_ltz` | `STRING`    | `STRING`   | `DATETIME(6)` | `STRING`    |

#### Character Types

| MySQL        | PostgreSQL          | SQL Server     | Oracle          | DB2            | Firebolt | Snowflake | Spanner  | BigQuery | SingleStore  | Databricks |
| ------------ | ------------------- | -------------- | --------------- | -------------- | -------- | --------- | -------- | -------- | ------------ | ---------- |
| `CHAR`       | `character`         | `CHAR`         | `CHAR`          | `CHAR`         | `TEXT`   | `varchar` | `STRING` | `STRING` | `CHAR`       | `STRING`   |
| `VARCHAR`    | `character varying` | `VARCHAR`      | `VARCHAR2`      | `VARCHAR`      | `TEXT`   | `varchar` | `STRING` | `STRING` | `VARCHAR`    | `STRING`   |
| `TINYTEXT`   | `text`              | `VARCHAR(MAX)` | `VARCHAR2(255)` | `VARCHAR(255)` | `TEXT`   | `varchar` | `STRING` | `STRING` | `TINYTEXT`   | `STRING`   |
| `TEXT`       | `text`              | `VARCHAR(MAX)` | `CLOB`          | `CLOB`         | `TEXT`   | `varchar` | `STRING` | `STRING` | `LONGTEXT`   | `STRING`   |
| `MEDIUMTEXT` | `text`              | `VARCHAR(MAX)` | `CLOB`          | `CLOB`         | `TEXT`   | `varchar` | `STRING` | `STRING` | `MEDIUMTEXT` | `STRING`   |
| `LONGTEXT`   | `text`              | `VARCHAR(MAX)` | `CLOB`          | `CLOB`         | `TEXT`   | `varchar` | `STRING` | `STRING` | `LONGTEXT`   | `STRING`   |
| `JSON`       | `jsonb`             | `VARCHAR(MAX)` | `CLOB`          | `CLOB`         | `TEXT`   | `varchar` | `JSON`   | `JSON`   | `JSON`       | `STRING`   |

#### Binary Types

| MySQL        | PostgreSQL | SQL Server       | Oracle | DB2         | Firebolt | Snowflake | Spanner | BigQuery | SingleStore  | Databricks |
| ------------ | ---------- | ---------------- | ------ | ----------- | -------- | --------- | ------- | -------- | ------------ | ---------- |
| `BINARY`     | `bytea`    | `BINARY`         | `RAW`  | `BINARY`    | `BYTEA`  | `binary`  | `BYTES` | `BYTES`  | `BINARY`     | `BINARY`   |
| `VARBINARY`  | `bytea`    | `VARBINARY`      | `RAW`  | `VARBINARY` | `BYTEA`  | `binary`  | `BYTES` | `BYTES`  | `VARBINARY`  | `BINARY`   |
| `TINYBLOB`   | `bytea`    | `VARBINARY`      | `RAW`  | `VARBINARY` | `BYTEA`  | `binary`  | `BYTES` | `BYTES`  | `TINYBLOB`   | `BINARY`   |
| `BLOB`       | `bytea`    | `VARBINARY(MAX)` | `BLOB` | `BLOB`      | `BYTEA`  | `binary`  | `BYTES` | `BYTES`  | `BLOB`       | `BINARY`   |
| `MEDIUMBLOB` | `bytea`    | `VARBINARY(MAX)` | `BLOB` | `BLOB`      | `BYTEA`  | `binary`  | `BYTES` | `BYTES`  | `MEDIUMBLOB` | `BINARY`   |
| `LONGBLOB`   | `bytea`    | `VARBINARY(MAX)` | `BLOB` | `BLOB`      | `BYTEA`  | `binary`  | `BYTES` | `BYTES`  | `LONGBLOB`   | `BINARY`   |

#### Set Types

| MySQL  | PostgreSQL    | SQL Server    | Oracle     | DB2             | Firebolt | Snowflake     | Spanner  | BigQuery | SingleStore | Databricks |
| ------ | ------------- | ------------- | ---------- | --------------- | -------- | ------------- | -------- | -------- | ----------- | ---------- |
| `ENUM` | `varchar(64)` | `VARCHAR(64)` | `VARCHAR2` | `VARCHAR(4000)` | `TEXT`   | `varchar(64)` | `STRING` | `STRING` | `ENUM`      | `STRING`   |
| `SET`  | `varchar(64)` | `VARCHAR(64)` | `VARCHAR2` | `VARCHAR(4000)` | `TEXT`   | `varchar(64)` | `STRING` | `STRING` | `SET`       | `STRING`   |

<Note>
  When the target is also MySQL, MariaDB, or SingleStore, ENUM and SET types are preserved natively with their original value definitions rather than being converted to VARCHAR.
</Note>

#### Spatial Types

| MySQL        | PostgreSQL | SQL Server      | Oracle           | DB2             | Firebolt | Snowflake       | Spanner  | BigQuery | SingleStore     | Databricks |
| ------------ | ---------- | --------------- | ---------------- | --------------- | -------- | --------------- | -------- | -------- | --------------- | ---------- |
| `POINT`      | `point`    | `VARCHAR(256)`  | `VARCHAR2(256)`  | `VARCHAR(4000)` | `TEXT`   | `varchar(256)`  | `STRING` | `STRING` | `VARCHAR(256)`  | `STRING`   |
| `LINESTRING` | `text`     | `VARCHAR(256)`  | `VARCHAR2(256)`  | `VARCHAR(4000)` | `TEXT`   | `varchar(256)`  | `STRING` | `STRING` | `VARCHAR(256)`  | `STRING`   |
| `POLYGON`    | `polygon`  | `VARCHAR(1024)` | `VARCHAR2(1024)` | `VARCHAR(4000)` | `TEXT`   | `varchar(1024)` | `STRING` | `STRING` | `VARCHAR(1024)` | `STRING`   |
| `GEOMETRY`   | `text`     | `VARCHAR(1024)` | `VARCHAR2(1024)` | `VARCHAR(4000)` | `TEXT`   | `varchar`       | `STRING` | `STRING` | `VARCHAR(1024)` | `STRING`   |
| `MULTIPOINT` | `text`     | `VARCHAR(1024)` | `VARCHAR2(1024)` | `VARCHAR(4000)` | `TEXT`   | `varchar`       | `STRING` | `STRING` | `VARCHAR(1024)` | `STRING`   |
