Chapter Data Types

Table of Contents

Numeric Types

 Integer Types

 Arbitrary Precision Numbers

 Floating-Point Types

 Serial Types

Character Types

Binary Data Types

 bytea Hex Format

 bytea Escape Format

Date/Time Types

 Date/Time Input

 Date/Time Output

 Time Zones

 Interval Input

 Interval Output

Boolean Type

Enumerated Types

 Declaration of Enumerated Types

 Ordering

 Type Safety

 Implementation Details

Network Address Types

 inet

Bit String Types

Text Search Types

 tsvector

 tsquery

UUID Type

JSON Types

 JSON Input and Output Syntax

 Designing JSON Documents

 jsonb Containment and Existence

 jsonb Indexing

 jsonpath Type

Arrays

 Declaration of Array Types

 Array Value Input

 Accessing Arrays

 Modifying Arrays

 Searching in Arrays

 Array Input and Output Syntax

Object Identifier Types

Table 7.1 shows all the built-in general-purpose data types. Most of the alternative names listed in the “Aliases” column are the names used internally by ProtonBase for historical reasons. In addition, some internally used or deprecated types are available, but are not listed here.

Table Data Types

NameAliasesDescription
bigintint8signed eight-byte integer
bigserialserial8autoincrementing eight-byte integer
bit [ (`n`) ]fixed-length bit string
bit varying [ (`n`) ]varbit [ (`n`) ]variable-length bit string
booleanboollogical Boolean (true/false)
byteabinary data (“byte array”)
character [ (`n`) ]char [ (`n`) ]fixed-length character string
character varying [ (`n`) ]varchar [ (`n`) ]variable-length character string
datecalendar date (year, month, day)
double precisionfloat8double precision floating-point number (8 bytes)
inetIPv4 or IPv6 host address
integerint, int4signed four-byte integer
interval [ `fields` ] [ (`p`) ]time span
jsonbbinary JSON data, decomposed
moneycurrency amount
numeric [ (`p`, `s`) ]decimal [ (`p`, `s`) ]exact numeric of selectable precision
realfloat4single precision floating-point number (4 bytes)
smallintint2signed two-byte integer
smallserialserial2autoincrementing two-byte integer
serialserial4autoincrementing four-byte integer
textvariable-length character string
time [ (`p`) ] [ without time zone ]time of day (no time zone)
time [ (`p`) ] with time zonetimetztime of day, including time zone
timestamp [ (`p`) ] [ without time zone ]date and time (no time zone)
timestamp [ (`p`) ] with time zonetimestamptzdate and time, including time zone
tsquerytext search query
tsvectortext search document
uuiduniversally unique identifier

Compatibility

The following types (or spellings thereof) are specified by SQL: bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (with or without time zone), timestamp (with or without time zone), xml.

Each data type has an external representation determined by its input and output functions. Many of the built-in types have obvious external formats. However, several types are either unique to ProtonBase, such as geometric paths, or have several possible formats, such as the date and time types. Some of the input and output functions are not invertible, i.e., the result of an output function might lose accuracy when compared to the original input.