Skip to content

Commit 004f9d3

Browse files
committed
Support JSON/JSONB
1 parent a513d83 commit 004f9d3

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

lib/postgresql.ml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ type ftype =
5656
| XID
5757
| CID
5858
| OIDVECTOR
59+
| JSON
5960
| POINT
6061
| LSEG
6162
| PATH
@@ -101,6 +102,7 @@ type ftype =
101102
| INTERNAL
102103
| OPAQUE
103104
| ANYELEMENT
105+
| JSONB
104106

105107
external ftype_of_oid : oid -> ftype = "ftype_of_oid_stub"
106108
external oid_of_ftype : ftype -> oid = "oid_of_ftype_stub"
@@ -121,6 +123,7 @@ let string_of_ftype = function
121123
| XID -> "XID"
122124
| CID -> "CID"
123125
| OIDVECTOR -> "OIDVECTOR"
126+
| JSON -> "JSON"
124127
| POINT -> "POINT"
125128
| LSEG -> "LSEG"
126129
| PATH -> "PATH"
@@ -166,6 +169,7 @@ let string_of_ftype = function
166169
| INTERNAL -> "INTERNAL"
167170
| OPAQUE -> "OPAQUE"
168171
| ANYELEMENT -> "ANYELEMENT"
172+
| JSONB -> "JSONB"
169173

170174
let ftype_of_string = function
171175
| "BOOL" -> BOOL
@@ -183,6 +187,7 @@ let ftype_of_string = function
183187
| "XID" -> XID
184188
| "CID" -> CID
185189
| "OIDVECTOR" -> OIDVECTOR
190+
| "JSON" -> JSON
186191
| "POINT" -> POINT
187192
| "LSEG" -> LSEG
188193
| "PATH" -> PATH
@@ -228,6 +233,7 @@ let ftype_of_string = function
228233
| "INTERNAL" -> INTERNAL
229234
| "OPAQUE" -> OPAQUE
230235
| "ANYELEMENT" -> ANYELEMENT
236+
| "JSONB" -> JSON
231237
| str -> failwith ("ftype_of_string: unknown ftype: " ^ str)
232238

233239
external init : unit -> unit = "PQocaml_init"

lib/postgresql.mli

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ type ftype =
6060
| XID
6161
| CID
6262
| OIDVECTOR
63+
| JSON
6364
| POINT
6465
| LSEG
6566
| PATH
@@ -105,6 +106,7 @@ type ftype =
105106
| INTERNAL
106107
| OPAQUE
107108
| ANYELEMENT
109+
| JSONB
108110

109111

110112
(** Status of command/query results *)

lib/postgresql_stubs.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
#define XIDOID 28
7171
#define CIDOID 29
7272
#define OIDVECTOROID 30
73+
#define JSONOID 114
7374
#define POINTOID 600
7475
#define LSEGOID 601
7576
#define PATHOID 602
@@ -115,6 +116,7 @@
115116
#define INTERNALOID 2281
116117
#define OPAQUEOID 2282
117118
#define ANYELEMENTOID 2283
119+
#define JSONBOID 3802
118120

119121
static value v_None = Val_int(0);
120122

@@ -149,14 +151,14 @@ static inline value unescape_bytea(const char *s);
149151
static int oid_tbl[] = {
150152
BOOLOID, BYTEAOID, CHAROID, NAMEOID, INT8OID, INT2OID, INT2VECTOROID,
151153
INT4OID, REGPROCOID, TEXTOID, OIDOID, TIDOID, XIDOID, CIDOID,
152-
OIDVECTOROID, POINTOID, LSEGOID, PATHOID, BOXOID, POLYGONOID, LINEOID,
153-
FLOAT4OID, FLOAT8OID, ABSTIMEOID, RELTIMEOID, TINTERVALOID, UNKNOWNOID,
154-
CIRCLEOID, CASHOID, MACADDROID, INETOID, CIDROID, ACLITEMOID,
154+
OIDVECTOROID, JSONOID, POINTOID, LSEGOID, PATHOID, BOXOID, POLYGONOID,
155+
LINEOID, FLOAT4OID, FLOAT8OID, ABSTIMEOID, RELTIMEOID, TINTERVALOID,
156+
UNKNOWNOID, CIRCLEOID, CASHOID, MACADDROID, INETOID, CIDROID, ACLITEMOID,
155157
BPCHAROID, VARCHAROID, DATEOID, TIMEOID, TIMESTAMPOID, TIMESTAMPTZOID,
156158
INTERVALOID, TIMETZOID, BITOID, VARBITOID, NUMERICOID, REFCURSOROID,
157159
REGPROCEDUREOID, REGOPEROID, REGOPERATOROID, REGCLASSOID, REGTYPEOID,
158160
RECORDOID, CSTRINGOID, ANYOID, ANYARRAYOID, VOIDOID, TRIGGEROID,
159-
LANGUAGE_HANDLEROID, INTERNALOID, OPAQUEOID, ANYELEMENTOID
161+
LANGUAGE_HANDLEROID, INTERNALOID, OPAQUEOID, ANYELEMENTOID, JSONBOID
160162
};
161163

162164
CAMLprim value ftype_of_oid_stub(value v_oid)

0 commit comments

Comments
 (0)