nullinteger: a 64-bit signed integerreal: a 64-bit floating point numbertext: A UTF-8 text stringblob: Binary data
Postgres Type Mapping
Postgres types are mapped to SQLite types as follows:| Postgres Data Type | PowerSync / SQLite Column Type | Notes |
|---|---|---|
text, varchar | text | |
int2, int4, int8 | integer | |
numeric / decimal | text | These types have arbitrary precision in Postgres, so can only be represented accurately as text in SQLite |
bool | integer | 1 for true, 0 for false. There is no dedicated boolean data type in SQLite. |
float4, float8 | real | |
enum | text | |
uuid | text | |
timestamptz | text | Format: YYYY-MM-DD hh:mm:ss.sssZ. This is compatible with ISO8601 and SQLite’s functions. Precision matches the precision used in Postgres. -infinity becomes 0000-01-01 00:00:00Z and infinity becomes 9999-12-31 23:59:59Z. |
timestamp | text | Format: YYYY-MM-DD hh:mm:ss.sss. In most cases, timestamptz should be used instead. -infinity becomes 0000-01-01 00:00:00 and infinity becomes 9999-12-31 23:59:59. |
date, time | text | |
json, jsonb | text | json and jsonb values are treated as text values in their serialized representation. JSON functions and operators operate directly on these text values. |
interval | text | |
macaddr | text | |
inet | text | |
bytea | blob | Cannot sync directly to client — convert to hex or base64 first. See Operators & Functions. |
geometry (PostGIS) | text | Hex string of the binary data. Use the ST functions to convert to other formats |
| Arrays | text | JSON array. |
DOMAIN types | text / depends | Depending on compatibility options, inner type or raw wire representation (legacy). |
| Custom types | text | Depending on compatibility options, JSON object or raw wire representation (legacy). |
| (Multi-)ranges | text | Depending on compatibility options, JSON object (array for multi-ranges) or raw wire representation (legacy). |
Binary data can be accessed in the Sync Streams / Sync Rules, but cannot be used as parameters. To sync binary columns/fields to clients, those columns need to be converted to hex or base64 representation using the relevant functions.
MongoDB Type Mapping
MongoDB types are mapped to SQLite types as follows:| BSON Type | PowerSync / SQLite Column Type | Notes |
|---|---|---|
String | text | |
Int, Long | integer | |
Double | real | |
Decimal128 | text | |
Object | text | Converted to a JSON string |
Array | text | Converted to a JSON string |
ObjectId | text | Lower-case hex string |
UUID | text | Lower-case hex string |
Boolean | integer | 1 for true, 0 for false. There is no dedicated boolean data type in SQLite. |
Date | text | Format: YYYY-MM-DD hh:mm:ss.sssZ |
Null | null | |
Binary | blob | Cannot sync directly to client — convert to hex or base64 first. See Operators & Functions. |
| Regular Expression | text | JSON text in the format {"pattern":"...","options":"..."} |
Timestamp | integer | Converted to a 64-bit integer |
Undefined | null | |
DBPointer | text | JSON text in the format {"collection":"...","oid":"...","db":"...","fields":...} |
JavaScript | text | JSON text in the format {"code": "...", "scope": ...} |
Symbol | text | |
MinKey, MaxKey | null |
- Data is converted to a flat list of columns, one column per top-level field in the MongoDB document.
- Special BSON types are converted to plain SQLite alternatives. For example,
ObjectId,Date,UUIDare all converted to a plainTEXTcolumn. - Nested objects and arrays are converted to JSON, and JSON functions and operators can be used to query them (in the Sync Streams / Sync Rules and/or on the client-side SQLite statements).
- Binary data nested in objects or arrays is not supported.
Binary data can be accessed in the Sync Streams / Sync Rules, but cannot be used as parameters. To sync binary columns/fields to clients, those columns need to be converted to hex or base64 representation using the relevant functions.
MySQL Type Mapping
MySQL support is currently in a Beta release.
| MySQL Data Type | PowerSync / SQLite Column Type | Notes |
|---|---|---|
tinyint, smallint, mediumint, bigint, integer, int | integer | |
numeric, decimal | text | |
bool, boolean | integer | 1 for true, 0 for false. There is no dedicated boolean data type in SQLite. |
float, double, real | real | |
enum | text | |
set | text | Converted to JSON array |
char, varchar | text | |
tinytext, text, mediumtext, longtext | text | |
timestamp | text | ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ |
date | text | Format: YYYY-MM-DD |
time, datetime | text | ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ |
year | text | |
json | text | There is no dedicated JSON type in SQLite — JSON functions operate directly on text values. |
bit | blob | * See note below regarding syncing binary types |
binary, varbinary | blob | |
image | blob | |
geometry, geometrycollection | blob | |
point, multipoint | blob | |
linestring, multilinestring | blob | |
polygon, multipolygon | blob |
Binary data can be accessed in the Sync Streams / Sync Rules, but cannot be used as parameters. To sync binary columns/fields to clients, those columns need to be converted to hex or base64 representation using the relevant functions.
SQL Server Type Mapping
SQL Server support is currently in a Beta release.
| SQL Server Data Type | PowerSync / SQLite Column Type | Notes |
|---|---|---|
tinyint, smallint, int, bigint | integer | |
numeric, decimal | text | Numeric string |
float, real | real | |
bit | integer | |
money, smallmoney | text | Numeric string |
xml | text | |
char, nchar, ntext | text | |
varchar, nvarchar, text | text | |
uniqueidentifier | text | |
timestamp | text | ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ |
date | text | Format: YYYY-MM-DD |
time | text | Format: HH:mm:ss.sss |
datetime, datetime2, smalldatetime, datetimeoffset | text | ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ |
json | text | Only exists for Azure SQL Database and SQL Server 2025 |
geometry, geography | text | text of JSON object describing the spatial data type |
binary, varbinary, image | blob | * See note below regarding binary types |
rowversion, timestamp | blob | * See note below regarding binary types |
User Defined Types: hiearchyid | blob | * See note below regarding binary types |
Binary data can be accessed in the Sync Streams / Sync Rules, but cannot be used as parameters. To sync binary columns/fields to clients, those columns need to be converted to hex or base64 representation using the relevant functions.