Types

PowerSync sync rules use the SQLite type system.

The supported types are:

  1. null

  2. integer: a 64-bit signed integer

  3. real: a 64-bit floating point number

  4. text: An UTF-8 text string

  5. blob: Binary data

Binary data in Postgres can be accessed in sync rules, but cannot be synced directly to clients (it needs to be converted to hex or base64 first — see below), and cannot be used as bucket parameters.

Postgres values are mapped according to this table:

Postgres Data TypePowerSync / SQLite Column TypeNotes

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

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

There is no dedicated JSON type — JSON functions operate directly on 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

There is no dedicated boolean data type. Boolean values are represented as 1 (true) or 0 (false).

json and jsonb values are treated as text values in their serialized representation. JSON functions and operators operate directly on these text values.

Last updated