Committed by Greg Sabino Mullane <[email protected]>

Update types via 9.2 source tree

---
 Pg.pm           |   96 ++++++++++---------
 Pg.xs           |   15 +++
 t/01constants.t |   15 +++
 t/99_pod.t      |   15 +++
 types.c         |  276 ++++++++++++++++++++++++++++++------------------------
 types.h         |   15 +++
 6 files changed, 264 insertions(+), 168 deletions(-)

diff --git a/Pg.pm b/Pg.pm
index c525c7a..c80a613 100644
--- a/Pg.pm
+++ b/Pg.pm
@@ -30,29 +30,32 @@ use 5.006001;
                 async => [qw(PG_ASYNC PG_OLDQUERY_CANCEL PG_OLDQUERY_WAIT)],
                 pg_types => [qw(
                        PG_ABSTIME PG_ABSTIMEARRAY PG_ACLITEM PG_ACLITEMARRAY 
PG_ANY
-                       PG_ANYARRAY PG_ANYELEMENT PG_ANYENUM PG_ANYNONARRAY 
PG_BIT
-                       PG_BITARRAY PG_BOOL PG_BOOLARRAY PG_BOX PG_BOXARRAY
-                       PG_BPCHAR PG_BPCHARARRAY PG_BYTEA PG_BYTEAARRAY PG_CHAR
-                       PG_CHARARRAY PG_CID PG_CIDARRAY PG_CIDR PG_CIDRARRAY
-                       PG_CIRCLE PG_CIRCLEARRAY PG_CSTRING PG_CSTRINGARRAY 
PG_DATE
-                       PG_DATEARRAY PG_FDW_HANDLER PG_FLOAT4 PG_FLOAT4ARRAY 
PG_FLOAT8
-                       PG_FLOAT8ARRAY PG_GTSVECTOR PG_GTSVECTORARRAY PG_INET 
PG_INETARRAY
-                       PG_INT2 PG_INT2ARRAY PG_INT2VECTOR PG_INT2VECTORARRAY 
PG_INT4
-                       PG_INT4ARRAY PG_INT8 PG_INT8ARRAY PG_INTERNAL 
PG_INTERVAL
-                       PG_INTERVALARRAY PG_LANGUAGE_HANDLER PG_LINE 
PG_LINEARRAY PG_LSEG
-                       PG_LSEGARRAY PG_MACADDR PG_MACADDRARRAY PG_MONEY 
PG_MONEYARRAY
-                       PG_NAME PG_NAMEARRAY PG_NUMERIC PG_NUMERICARRAY PG_OID
-                       PG_OIDARRAY PG_OIDVECTOR PG_OIDVECTORARRAY PG_OPAQUE 
PG_PATH
-                       PG_PATHARRAY PG_PG_ATTRIBUTE PG_PG_CLASS 
PG_PG_NODE_TREE PG_PG_PROC
-                       PG_PG_TYPE PG_POINT PG_POINTARRAY PG_POLYGON 
PG_POLYGONARRAY
-                       PG_RECORD PG_RECORDARRAY PG_REFCURSOR PG_REFCURSORARRAY 
PG_REGCLASS
-                       PG_REGCLASSARRAY PG_REGCONFIG PG_REGCONFIGARRAY 
PG_REGDICTIONARY PG_REGDICTIONARYARRAY
-                       PG_REGOPER PG_REGOPERARRAY PG_REGOPERATOR 
PG_REGOPERATORARRAY PG_REGPROC
-                       PG_REGPROCARRAY PG_REGPROCEDURE PG_REGPROCEDUREARRAY 
PG_REGTYPE PG_REGTYPEARRAY
-                       PG_RELTIME PG_RELTIMEARRAY PG_SMGR PG_TEXT PG_TEXTARRAY
-                       PG_TID PG_TIDARRAY PG_TIME PG_TIMEARRAY PG_TIMESTAMP
-                       PG_TIMESTAMPARRAY PG_TIMESTAMPTZ PG_TIMESTAMPTZARRAY 
PG_TIMETZ PG_TIMETZARRAY
-                       PG_TINTERVAL PG_TINTERVALARRAY PG_TRIGGER PG_TSQUERY 
PG_TSQUERYARRAY
+                       PG_ANYARRAY PG_ANYELEMENT PG_ANYENUM PG_ANYNONARRAY 
PG_ANYRANGE
+                       PG_BIT PG_BITARRAY PG_BOOL PG_BOOLARRAY PG_BOX
+                       PG_BOXARRAY PG_BPCHAR PG_BPCHARARRAY PG_BYTEA 
PG_BYTEAARRAY
+                       PG_CHAR PG_CHARARRAY PG_CID PG_CIDARRAY PG_CIDR
+                       PG_CIDRARRAY PG_CIRCLE PG_CIRCLEARRAY PG_CSTRING 
PG_CSTRINGARRAY
+                       PG_DATE PG_DATEARRAY PG_DATERANGE PG_DATERANGEARRAY 
PG_FDW_HANDLER
+                       PG_FLOAT4 PG_FLOAT4ARRAY PG_FLOAT8 PG_FLOAT8ARRAY 
PG_GTSVECTOR
+                       PG_GTSVECTORARRAY PG_INET PG_INETARRAY PG_INT2 
PG_INT2ARRAY
+                       PG_INT2VECTOR PG_INT2VECTORARRAY PG_INT4 PG_INT4ARRAY 
PG_INT4RANGE
+                       PG_INT4RANGEARRAY PG_INT8 PG_INT8ARRAY PG_INT8RANGE 
PG_INT8RANGEARRAY
+                       PG_INTERNAL PG_INTERVAL PG_INTERVALARRAY PG_JSON 
PG_JSONARRAY
+                       PG_LANGUAGE_HANDLER PG_LINE PG_LINEARRAY PG_LSEG 
PG_LSEGARRAY
+                       PG_MACADDR PG_MACADDRARRAY PG_MONEY PG_MONEYARRAY 
PG_NAME
+                       PG_NAMEARRAY PG_NUMERIC PG_NUMERICARRAY PG_NUMRANGE 
PG_NUMRANGEARRAY
+                       PG_OID PG_OIDARRAY PG_OIDVECTOR PG_OIDVECTORARRAY 
PG_OPAQUE
+                       PG_PATH PG_PATHARRAY PG_PG_ATTRIBUTE PG_PG_CLASS 
PG_PG_NODE_TREE
+                       PG_PG_PROC PG_PG_TYPE PG_POINT PG_POINTARRAY PG_POLYGON
+                       PG_POLYGONARRAY PG_RECORD PG_RECORDARRAY PG_REFCURSOR 
PG_REFCURSORARRAY
+                       PG_REGCLASS PG_REGCLASSARRAY PG_REGCONFIG 
PG_REGCONFIGARRAY PG_REGDICTIONARY
+                       PG_REGDICTIONARYARRAY PG_REGOPER PG_REGOPERARRAY 
PG_REGOPERATOR PG_REGOPERATORARRAY
+                       PG_REGPROC PG_REGPROCARRAY PG_REGPROCEDURE 
PG_REGPROCEDUREARRAY PG_REGTYPE
+                       PG_REGTYPEARRAY PG_RELTIME PG_RELTIMEARRAY PG_SMGR 
PG_TEXT
+                       PG_TEXTARRAY PG_TID PG_TIDARRAY PG_TIME PG_TIMEARRAY
+                       PG_TIMESTAMP PG_TIMESTAMPARRAY PG_TIMESTAMPTZ 
PG_TIMESTAMPTZARRAY PG_TIMETZ
+                       PG_TIMETZARRAY PG_TINTERVAL PG_TINTERVALARRAY 
PG_TRIGGER PG_TSQUERY
+                       PG_TSQUERYARRAY PG_TSRANGE PG_TSRANGEARRAY PG_TSTZRANGE 
PG_TSTZRANGEARRAY
                        PG_TSVECTOR PG_TSVECTORARRAY PG_TXID_SNAPSHOT 
PG_TXID_SNAPSHOTARRAY PG_UNKNOWN
                        PG_UUID PG_UUIDARRAY PG_VARBIT PG_VARBITARRAY PG_VARCHAR
                        PG_VARCHARARRAY PG_VOID PG_XID PG_XIDARRAY PG_XML
@@ -3324,28 +3327,31 @@ key in the hash passed to L</bind_param>.
 The current list of Postgres data types exported is:
 
  PG_ABSTIME PG_ABSTIMEARRAY PG_ACLITEM PG_ACLITEMARRAY PG_ANY PG_ANYARRAY
- PG_ANYELEMENT PG_ANYENUM PG_ANYNONARRAY PG_BIT PG_BITARRAY PG_BOOL
- PG_BOOLARRAY PG_BOX PG_BOXARRAY PG_BPCHAR PG_BPCHARARRAY PG_BYTEA
- PG_BYTEAARRAY PG_CHAR PG_CHARARRAY PG_CID PG_CIDARRAY PG_CIDR
- PG_CIDRARRAY PG_CIRCLE PG_CIRCLEARRAY PG_CSTRING PG_CSTRINGARRAY PG_DATE
- PG_DATEARRAY PG_FDW_HANDLER PG_FLOAT4 PG_FLOAT4ARRAY PG_FLOAT8 PG_FLOAT8ARRAY
- PG_GTSVECTOR PG_GTSVECTORARRAY PG_INET PG_INETARRAY PG_INT2 PG_INT2ARRAY
- PG_INT2VECTOR PG_INT2VECTORARRAY PG_INT4 PG_INT4ARRAY PG_INT8 PG_INT8ARRAY
- PG_INTERNAL PG_INTERVAL PG_INTERVALARRAY PG_LANGUAGE_HANDLER PG_LINE 
PG_LINEARRAY
- PG_LSEG PG_LSEGARRAY PG_MACADDR PG_MACADDRARRAY PG_MONEY PG_MONEYARRAY
- PG_NAME PG_NAMEARRAY PG_NUMERIC PG_NUMERICARRAY PG_OID PG_OIDARRAY
- PG_OIDVECTOR PG_OIDVECTORARRAY PG_OPAQUE PG_PATH PG_PATHARRAY PG_PG_ATTRIBUTE
- PG_PG_CLASS PG_PG_NODE_TREE PG_PG_PROC PG_PG_TYPE PG_POINT PG_POINTARRAY
- PG_POLYGON PG_POLYGONARRAY PG_RECORD PG_RECORDARRAY PG_REFCURSOR 
PG_REFCURSORARRAY
- PG_REGCLASS PG_REGCLASSARRAY PG_REGCONFIG PG_REGCONFIGARRAY PG_REGDICTIONARY 
PG_REGDICTIONARYARRAY
- PG_REGOPER PG_REGOPERARRAY PG_REGOPERATOR PG_REGOPERATORARRAY PG_REGPROC 
PG_REGPROCARRAY
- PG_REGPROCEDURE PG_REGPROCEDUREARRAY PG_REGTYPE PG_REGTYPEARRAY PG_RELTIME 
PG_RELTIMEARRAY
- PG_SMGR PG_TEXT PG_TEXTARRAY PG_TID PG_TIDARRAY PG_TIME
- PG_TIMEARRAY PG_TIMESTAMP PG_TIMESTAMPARRAY PG_TIMESTAMPTZ 
PG_TIMESTAMPTZARRAY PG_TIMETZ
- PG_TIMETZARRAY PG_TINTERVAL PG_TINTERVALARRAY PG_TRIGGER PG_TSQUERY 
PG_TSQUERYARRAY
- PG_TSVECTOR PG_TSVECTORARRAY PG_TXID_SNAPSHOT PG_TXID_SNAPSHOTARRAY 
PG_UNKNOWN PG_UUID
- PG_UUIDARRAY PG_VARBIT PG_VARBITARRAY PG_VARCHAR PG_VARCHARARRAY PG_VOID
- PG_XID PG_XIDARRAY PG_XML PG_XMLARRAY
+ PG_ANYELEMENT PG_ANYENUM PG_ANYNONARRAY PG_ANYRANGE PG_BIT PG_BITARRAY
+ PG_BOOL PG_BOOLARRAY PG_BOX PG_BOXARRAY PG_BPCHAR PG_BPCHARARRAY
+ PG_BYTEA PG_BYTEAARRAY PG_CHAR PG_CHARARRAY PG_CID PG_CIDARRAY
+ PG_CIDR PG_CIDRARRAY PG_CIRCLE PG_CIRCLEARRAY PG_CSTRING PG_CSTRINGARRAY
+ PG_DATE PG_DATEARRAY PG_DATERANGE PG_DATERANGEARRAY PG_FDW_HANDLER PG_FLOAT4
+ PG_FLOAT4ARRAY PG_FLOAT8 PG_FLOAT8ARRAY PG_GTSVECTOR PG_GTSVECTORARRAY PG_INET
+ PG_INETARRAY PG_INT2 PG_INT2ARRAY PG_INT2VECTOR PG_INT2VECTORARRAY PG_INT4
+ PG_INT4ARRAY PG_INT4RANGE PG_INT4RANGEARRAY PG_INT8 PG_INT8ARRAY PG_INT8RANGE
+ PG_INT8RANGEARRAY PG_INTERNAL PG_INTERVAL PG_INTERVALARRAY PG_JSON 
PG_JSONARRAY
+ PG_LANGUAGE_HANDLER PG_LINE PG_LINEARRAY PG_LSEG PG_LSEGARRAY PG_MACADDR
+ PG_MACADDRARRAY PG_MONEY PG_MONEYARRAY PG_NAME PG_NAMEARRAY PG_NUMERIC
+ PG_NUMERICARRAY PG_NUMRANGE PG_NUMRANGEARRAY PG_OID PG_OIDARRAY PG_OIDVECTOR
+ PG_OIDVECTORARRAY PG_OPAQUE PG_PATH PG_PATHARRAY PG_PG_ATTRIBUTE PG_PG_CLASS
+ PG_PG_NODE_TREE PG_PG_PROC PG_PG_TYPE PG_POINT PG_POINTARRAY PG_POLYGON
+ PG_POLYGONARRAY PG_RECORD PG_RECORDARRAY PG_REFCURSOR PG_REFCURSORARRAY 
PG_REGCLASS
+ PG_REGCLASSARRAY PG_REGCONFIG PG_REGCONFIGARRAY PG_REGDICTIONARY 
PG_REGDICTIONARYARRAY PG_REGOPER
+ PG_REGOPERARRAY PG_REGOPERATOR PG_REGOPERATORARRAY PG_REGPROC PG_REGPROCARRAY 
PG_REGPROCEDURE
+ PG_REGPROCEDUREARRAY PG_REGTYPE PG_REGTYPEARRAY PG_RELTIME PG_RELTIMEARRAY 
PG_SMGR
+ PG_TEXT PG_TEXTARRAY PG_TID PG_TIDARRAY PG_TIME PG_TIMEARRAY
+ PG_TIMESTAMP PG_TIMESTAMPARRAY PG_TIMESTAMPTZ PG_TIMESTAMPTZARRAY PG_TIMETZ 
PG_TIMETZARRAY
+ PG_TINTERVAL PG_TINTERVALARRAY PG_TRIGGER PG_TSQUERY PG_TSQUERYARRAY 
PG_TSRANGE
+ PG_TSRANGEARRAY PG_TSTZRANGE PG_TSTZRANGEARRAY PG_TSVECTOR PG_TSVECTORARRAY 
PG_TXID_SNAPSHOT
+ PG_TXID_SNAPSHOTARRAY PG_UNKNOWN PG_UUID PG_UUIDARRAY PG_VARBIT PG_VARBITARRAY
+ PG_VARCHAR PG_VARCHARARRAY PG_VOID PG_XID PG_XIDARRAY PG_XML
+ PG_XMLARRAY
 
 Data types are "sticky," in that once a data type is set to a certain 
placeholder,
 it will remain for that placeholder, unless it is explicitly set to something
diff --git a/Pg.xs b/Pg.xs
index 15452ca..8e7fc9b 100644
--- a/Pg.xs
+++ b/Pg.xs
@@ -33,6 +33,7 @@ constant(name=Nullch)
        PG_ANYELEMENT         = 2283
        PG_ANYENUM            = 3500
        PG_ANYNONARRAY        = 2776
+       PG_ANYRANGE           = 3831
        PG_BIT                = 1560
        PG_BITARRAY           = 1561
        PG_BOOL               = 16
@@ -55,6 +56,8 @@ constant(name=Nullch)
        PG_CSTRINGARRAY       = 1263
        PG_DATE               = 1082
        PG_DATEARRAY          = 1182
+       PG_DATERANGE          = 3912
+       PG_DATERANGEARRAY     = 3913
        PG_FDW_HANDLER        = 3115
        PG_FLOAT4             = 700
        PG_FLOAT4ARRAY        = 1021
@@ -70,11 +73,17 @@ constant(name=Nullch)
        PG_INT2VECTORARRAY    = 1006
        PG_INT4               = 23
        PG_INT4ARRAY          = 1007
+       PG_INT4RANGE          = 3904
+       PG_INT4RANGEARRAY     = 3905
        PG_INT8               = 20
        PG_INT8ARRAY          = 1016
+       PG_INT8RANGE          = 3926
+       PG_INT8RANGEARRAY     = 3927
        PG_INTERNAL           = 2281
        PG_INTERVAL           = 1186
        PG_INTERVALARRAY      = 1187
+       PG_JSON               = 114
+       PG_JSONARRAY          = 199
        PG_LANGUAGE_HANDLER   = 2280
        PG_LINE               = 628
        PG_LINEARRAY          = 629
@@ -88,6 +97,8 @@ constant(name=Nullch)
        PG_NAMEARRAY          = 1003
        PG_NUMERIC            = 1700
        PG_NUMERICARRAY       = 1231
+       PG_NUMRANGE           = 3906
+       PG_NUMRANGEARRAY      = 3907
        PG_OID                = 26
        PG_OIDARRAY           = 1028
        PG_OIDVECTOR          = 30
@@ -144,6 +155,10 @@ constant(name=Nullch)
        PG_TRIGGER            = 2279
        PG_TSQUERY            = 3615
        PG_TSQUERYARRAY       = 3645
+       PG_TSRANGE            = 3908
+       PG_TSRANGEARRAY       = 3909
+       PG_TSTZRANGE          = 3910
+       PG_TSTZRANGEARRAY     = 3911
        PG_TSVECTOR           = 3614
        PG_TSVECTORARRAY      = 3643
        PG_TXID_SNAPSHOT      = 2970
diff --git a/t/01constants.t b/t/01constants.t
index 844c266..0d6bfae 100644
--- a/t/01constants.t
+++ b/t/01constants.t
@@ -21,6 +21,7 @@ is (PG_ANYARRAY             ,  2277, 'PG_ANYARRAY returns 
correct value');
 is (PG_ANYELEMENT           ,  2283, 'PG_ANYELEMENT returns correct value');
 is (PG_ANYENUM              ,  3500, 'PG_ANYENUM returns correct value');
 is (PG_ANYNONARRAY          ,  2776, 'PG_ANYNONARRAY returns correct value');
+is (PG_ANYRANGE             ,  3831, 'PG_ANYRANGE returns correct value');
 is (PG_BIT                  ,  1560, 'PG_BIT returns correct value');
 is (PG_BITARRAY             ,  1561, 'PG_BITARRAY returns correct value');
 is (PG_BOOL                 ,    16, 'PG_BOOL returns correct value');
@@ -43,6 +44,8 @@ is (PG_CSTRING              ,  2275, 'PG_CSTRING returns 
correct value');
 is (PG_CSTRINGARRAY         ,  1263, 'PG_CSTRINGARRAY returns correct value');
 is (PG_DATE                 ,  1082, 'PG_DATE returns correct value');
 is (PG_DATEARRAY            ,  1182, 'PG_DATEARRAY returns correct value');
+is (PG_DATERANGE            ,  3912, 'PG_DATERANGE returns correct value');
+is (PG_DATERANGEARRAY       ,  3913, 'PG_DATERANGEARRAY returns correct 
value');
 is (PG_FDW_HANDLER          ,  3115, 'PG_FDW_HANDLER returns correct value');
 is (PG_FLOAT4               ,   700, 'PG_FLOAT4 returns correct value');
 is (PG_FLOAT4ARRAY          ,  1021, 'PG_FLOAT4ARRAY returns correct value');
@@ -58,11 +61,17 @@ is (PG_INT2VECTOR           ,    22, 'PG_INT2VECTOR returns 
correct value');
 is (PG_INT2VECTORARRAY      ,  1006, 'PG_INT2VECTORARRAY returns correct 
value');
 is (PG_INT4                 ,    23, 'PG_INT4 returns correct value');
 is (PG_INT4ARRAY            ,  1007, 'PG_INT4ARRAY returns correct value');
+is (PG_INT4RANGE            ,  3904, 'PG_INT4RANGE returns correct value');
+is (PG_INT4RANGEARRAY       ,  3905, 'PG_INT4RANGEARRAY returns correct 
value');
 is (PG_INT8                 ,    20, 'PG_INT8 returns correct value');
 is (PG_INT8ARRAY            ,  1016, 'PG_INT8ARRAY returns correct value');
+is (PG_INT8RANGE            ,  3926, 'PG_INT8RANGE returns correct value');
+is (PG_INT8RANGEARRAY       ,  3927, 'PG_INT8RANGEARRAY returns correct 
value');
 is (PG_INTERNAL             ,  2281, 'PG_INTERNAL returns correct value');
 is (PG_INTERVAL             ,  1186, 'PG_INTERVAL returns correct value');
 is (PG_INTERVALARRAY        ,  1187, 'PG_INTERVALARRAY returns correct value');
+is (PG_JSON                 ,   114, 'PG_JSON returns correct value');
+is (PG_JSONARRAY            ,   199, 'PG_JSONARRAY returns correct value');
 is (PG_LANGUAGE_HANDLER     ,  2280, 'PG_LANGUAGE_HANDLER returns correct 
value');
 is (PG_LINE                 ,   628, 'PG_LINE returns correct value');
 is (PG_LINEARRAY            ,   629, 'PG_LINEARRAY returns correct value');
@@ -76,6 +85,8 @@ is (PG_NAME                 ,    19, 'PG_NAME returns correct 
value');
 is (PG_NAMEARRAY            ,  1003, 'PG_NAMEARRAY returns correct value');
 is (PG_NUMERIC              ,  1700, 'PG_NUMERIC returns correct value');
 is (PG_NUMERICARRAY         ,  1231, 'PG_NUMERICARRAY returns correct value');
+is (PG_NUMRANGE             ,  3906, 'PG_NUMRANGE returns correct value');
+is (PG_NUMRANGEARRAY        ,  3907, 'PG_NUMRANGEARRAY returns correct value');
 is (PG_OID                  ,    26, 'PG_OID returns correct value');
 is (PG_OIDARRAY             ,  1028, 'PG_OIDARRAY returns correct value');
 is (PG_OIDVECTOR            ,    30, 'PG_OIDVECTOR returns correct value');
@@ -132,6 +143,10 @@ is (PG_TINTERVALARRAY       ,  1025, 'PG_TINTERVALARRAY 
returns correct value');
 is (PG_TRIGGER              ,  2279, 'PG_TRIGGER returns correct value');
 is (PG_TSQUERY              ,  3615, 'PG_TSQUERY returns correct value');
 is (PG_TSQUERYARRAY         ,  3645, 'PG_TSQUERYARRAY returns correct value');
+is (PG_TSRANGE              ,  3908, 'PG_TSRANGE returns correct value');
+is (PG_TSRANGEARRAY         ,  3909, 'PG_TSRANGEARRAY returns correct value');
+is (PG_TSTZRANGE            ,  3910, 'PG_TSTZRANGE returns correct value');
+is (PG_TSTZRANGEARRAY       ,  3911, 'PG_TSTZRANGEARRAY returns correct 
value');
 is (PG_TSVECTOR             ,  3614, 'PG_TSVECTOR returns correct value');
 is (PG_TSVECTORARRAY        ,  3643, 'PG_TSVECTORARRAY returns correct value');
 is (PG_TXID_SNAPSHOT        ,  2970, 'PG_TXID_SNAPSHOT returns correct value');
diff --git a/t/99_pod.t b/t/99_pod.t
index 500d1a6..aee11f3 100644
--- a/t/99_pod.t
+++ b/t/99_pod.t
@@ -69,6 +69,7 @@ SKIP: {
                 qr{PG_ANYELEMENT},
                 qr{PG_ANYENUM},
                 qr{PG_ANYNONARRAY},
+                qr{PG_ANYRANGE},
                 qr{PG_BIT},
                 qr{PG_BITARRAY},
                 qr{PG_BOOL},
@@ -91,6 +92,8 @@ SKIP: {
                 qr{PG_CSTRINGARRAY},
                 qr{PG_DATE},
                 qr{PG_DATEARRAY},
+                qr{PG_DATERANGE},
+                qr{PG_DATERANGEARRAY},
                 qr{PG_FDW_HANDLER},
                 qr{PG_FLOAT4},
                 qr{PG_FLOAT4ARRAY},
@@ -106,11 +109,17 @@ SKIP: {
                 qr{PG_INT2VECTORARRAY},
                 qr{PG_INT4},
                 qr{PG_INT4ARRAY},
+                qr{PG_INT4RANGE},
+                qr{PG_INT4RANGEARRAY},
                 qr{PG_INT8},
                 qr{PG_INT8ARRAY},
+                qr{PG_INT8RANGE},
+                qr{PG_INT8RANGEARRAY},
                 qr{PG_INTERNAL},
                 qr{PG_INTERVAL},
                 qr{PG_INTERVALARRAY},
+                qr{PG_JSON},
+                qr{PG_JSONARRAY},
                 qr{PG_LANGUAGE_HANDLER},
                 qr{PG_LINE},
                 qr{PG_LINEARRAY},
@@ -124,6 +133,8 @@ SKIP: {
                 qr{PG_NAMEARRAY},
                 qr{PG_NUMERIC},
                 qr{PG_NUMERICARRAY},
+                qr{PG_NUMRANGE},
+                qr{PG_NUMRANGEARRAY},
                 qr{PG_OID},
                 qr{PG_OIDARRAY},
                 qr{PG_OIDVECTOR},
@@ -180,6 +191,10 @@ SKIP: {
                 qr{PG_TRIGGER},
                 qr{PG_TSQUERY},
                 qr{PG_TSQUERYARRAY},
+                qr{PG_TSRANGE},
+                qr{PG_TSRANGEARRAY},
+                qr{PG_TSTZRANGE},
+                qr{PG_TSTZRANGEARRAY},
                 qr{PG_TSVECTOR},
                 qr{PG_TSVECTORARRAY},
                 qr{PG_TXID_SNAPSHOT},
diff --git a/types.c b/types.c
index f59df4c..00e5894 100644
--- a/types.c
+++ b/types.c
@@ -28,6 +28,7 @@ static sql_type_info_t pg_types[] = {
  {PG_CIRCLEARRAY       ,"_circle"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_CSTRINGARRAY      ,"_cstring"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_DATEARRAY         ,"_date"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_DATERANGEARRAY    ,"_daterange"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_FLOAT4ARRAY       ,"_float4"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},2},
  {PG_FLOAT8ARRAY       ,"_float8"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},2},
  {PG_GTSVECTORARRAY    ,"_gtsvector"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
@@ -35,14 +36,18 @@ static sql_type_info_t pg_types[] = {
  {PG_INT2ARRAY         ,"_int2"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},1},
  {PG_INT2VECTORARRAY   ,"_int2vector"      ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_INT4ARRAY         ,"_int4"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},1},
+ {PG_INT4RANGEARRAY    ,"_int4range"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_INT8ARRAY         ,"_int8"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_INT8RANGEARRAY    ,"_int8range"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_INTERVALARRAY     ,"_interval"        ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_JSONARRAY         ,"_json"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_LINEARRAY         ,"_line"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_LSEGARRAY         ,"_lseg"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_MACADDRARRAY      ,"_macaddr"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_MONEYARRAY        ,"_money"           ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_NAMEARRAY         ,"_name"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_NUMERICARRAY      ,"_numeric"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},2},
+ {PG_NUMRANGEARRAY     ,"_numrange"        ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_OIDARRAY          ,"_oid"             ,1,',',"array_out"       
,quote_string,dequote_string,{0},1},
  {PG_OIDVECTORARRAY    ,"_oidvector"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_PATHARRAY         ,"_path"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
@@ -67,6 +72,8 @@ static sql_type_info_t pg_types[] = {
  {PG_TIMETZARRAY       ,"_timetz"          ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_TINTERVALARRAY    ,"_tinterval"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_TSQUERYARRAY      ,"_tsquery"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TSRANGEARRAY      ,"_tsrange"         ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TSTZRANGEARRAY    ,"_tstzrange"       ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_TSVECTORARRAY     ,"_tsvector"        ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_TXID_SNAPSHOTARRAY,"_txid_snapshot"   ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
  {PG_UUIDARRAY         ,"_uuid"            ,1,',',"array_out"       
,quote_string,dequote_string,{0},0},
@@ -81,6 +88,7 @@ static sql_type_info_t pg_types[] = {
  {PG_ANYELEMENT        ,"anyelement"       ,1,',',"anyelement_out"  
,quote_string,dequote_string,{0},0},
  {PG_ANYENUM           ,"anyenum"          ,1,',',"anyenum_out"     
,quote_string,dequote_string,{0},0},
  {PG_ANYNONARRAY       ,"anynonarray"      ,1,',',"anynonarray_out" 
,quote_string,dequote_string,{0},0},
+ {PG_ANYRANGE          ,"anyrange"         ,1,',',"anyrange_out"    
,quote_string,dequote_string,{0},0},
  {PG_BIT               ,"bit"              ,1,',',"bit_out"         
,quote_string,dequote_string,{0},0},
  {PG_BOOL              ,"bool"             ,1,',',"boolout"         
,quote_bool  ,dequote_bool  ,{SQL_BOOLEAN},3},
  {PG_BOX               ,"box"              ,1,';',"box_out"         
,quote_geom  ,dequote_string,{0},0},
@@ -92,6 +100,7 @@ static sql_type_info_t pg_types[] = {
  {PG_CIRCLE            ,"circle"           ,1,',',"circle_out"      
,quote_circle,dequote_string,{0},0},
  {PG_CSTRING           ,"cstring"          ,1,',',"cstring_out"     
,quote_string,dequote_string,{0},0},
  {PG_DATE              ,"date"             ,1,',',"date_out"        
,quote_string,dequote_string,{SQL_TYPE_DATE},0},
+ {PG_DATERANGE         ,"daterange"        ,1,',',"range_out"       
,quote_string,dequote_string,{0},0},
  {PG_FDW_HANDLER       ,"fdw_handler"      ,1,',',"fdw_handler_out" 
,quote_string,dequote_string,{0},0},
  {PG_FLOAT4            ,"float4"           ,1,',',"float4out"       
,quote_float ,null_dequote  ,{0},2},
  {PG_FLOAT8            ,"float8"           ,1,',',"float8out"       
,quote_float ,null_dequote  ,{SQL_FLOAT},2},
@@ -100,9 +109,12 @@ static sql_type_info_t pg_types[] = {
  {PG_INT2              ,"int2"             ,1,',',"int2out"         ,quote_int 
  ,null_dequote  ,{SQL_SMALLINT},1},
  {PG_INT2VECTOR        ,"int2vector"       ,1,',',"int2vectorout"   
,quote_string,dequote_string,{0},0},
  {PG_INT4              ,"int4"             ,1,',',"int4out"         ,quote_int 
  ,null_dequote  ,{SQL_INTEGER},1},
+ {PG_INT4RANGE         ,"int4range"        ,1,',',"range_out"       
,quote_string,dequote_string,{0},0},
  {PG_INT8              ,"int8"             ,1,',',"int8out"         ,quote_int 
  ,null_dequote  ,{SQL_BIGINT},0},
+ {PG_INT8RANGE         ,"int8range"        ,1,',',"range_out"       
,quote_string,dequote_string,{0},0},
  {PG_INTERNAL          ,"internal"         ,1,',',"internal_out"    
,quote_string,dequote_string,{0},0},
  {PG_INTERVAL          ,"interval"         ,1,',',"interval_out"    
,quote_string,dequote_string,{0},0},
+ {PG_JSON              ,"json"             ,1,',',"json_out"        
,quote_string,dequote_string,{0},0},
  {PG_LANGUAGE_HANDLER  ,"language_handler" 
,1,',',"language_handler_out",quote_string,dequote_string,{0},0},
  {PG_LINE              ,"line"             ,1,',',"line_out"        
,quote_geom  ,dequote_string,{0},0},
  {PG_LSEG              ,"lseg"             ,1,',',"lseg_out"        
,quote_geom  ,dequote_string,{0},0},
@@ -110,6 +122,7 @@ static sql_type_info_t pg_types[] = {
  {PG_MONEY             ,"money"            ,1,',',"cash_out"        
,quote_string,dequote_string,{0},0},
  {PG_NAME              ,"name"             ,1,',',"nameout"         
,quote_name  ,null_dequote  ,{SQL_VARCHAR},0},
  {PG_NUMERIC           ,"numeric"          ,1,',',"numeric_out"     
,quote_float ,null_dequote  ,{SQL_DECIMAL},2},
+ {PG_NUMRANGE          ,"numrange"         ,1,',',"range_out"       
,quote_string,dequote_string,{0},0},
  {PG_OID               ,"oid"              ,1,',',"oidout"          ,quote_int 
  ,null_dequote  ,{0},1},
  {PG_OIDVECTOR         ,"oidvector"        ,1,',',"oidvectorout"    
,quote_string,dequote_string,{0},0},
  {PG_OPAQUE            ,"opaque"           ,1,',',"opaque_out"      
,quote_string,dequote_string,{0},0},
@@ -142,6 +155,8 @@ static sql_type_info_t pg_types[] = {
  {PG_TINTERVAL         ,"tinterval"        ,1,',',"tintervalout"    
,quote_string,dequote_string,{0},0},
  {PG_TRIGGER           ,"trigger"          ,1,',',"trigger_out"     
,quote_string,dequote_string,{0},0},
  {PG_TSQUERY           ,"tsquery"          ,1,',',"tsqueryout"      
,quote_string,dequote_string,{0},0},
+ {PG_TSRANGE           ,"tsrange"          ,1,',',"range_out"       
,quote_string,dequote_string,{0},0},
+ {PG_TSTZRANGE         ,"tstzrange"        ,1,',',"range_out"       
,quote_string,dequote_string,{0},0},
  {PG_TSVECTOR          ,"tsvector"         ,1,',',"tsvectorout"     
,quote_string,dequote_string,{0},0},
  {PG_TXID_SNAPSHOT     ,"txid_snapshot"    
,1,',',"txid_snapshot_out",quote_string,dequote_string,{0},0},
  {PG_UNKNOWN           ,"unknown"          ,1,',',"unknownout"      
,quote_string,dequote_string,{0},0},
@@ -172,129 +187,144 @@ sql_type_info_t* pg_type_data(int sql_type)
                case PG_CIRCLEARRAY:        return &pg_types[10];
                case PG_CSTRINGARRAY:       return &pg_types[11];
                case PG_DATEARRAY:          return &pg_types[12];
-               case PG_FLOAT4ARRAY:        return &pg_types[13];
-               case PG_FLOAT8ARRAY:        return &pg_types[14];
-               case PG_GTSVECTORARRAY:     return &pg_types[15];
-               case PG_INETARRAY:          return &pg_types[16];
-               case PG_INT2ARRAY:          return &pg_types[17];
-               case PG_INT2VECTORARRAY:    return &pg_types[18];
-               case PG_INT4ARRAY:          return &pg_types[19];
-               case PG_INT8ARRAY:          return &pg_types[20];
-               case PG_INTERVALARRAY:      return &pg_types[21];
-               case PG_LINEARRAY:          return &pg_types[22];
-               case PG_LSEGARRAY:          return &pg_types[23];
-               case PG_MACADDRARRAY:       return &pg_types[24];
-               case PG_MONEYARRAY:         return &pg_types[25];
-               case PG_NAMEARRAY:          return &pg_types[26];
-               case PG_NUMERICARRAY:       return &pg_types[27];
-               case PG_OIDARRAY:           return &pg_types[28];
-               case PG_OIDVECTORARRAY:     return &pg_types[29];
-               case PG_PATHARRAY:          return &pg_types[30];
-               case PG_POINTARRAY:         return &pg_types[31];
-               case PG_POLYGONARRAY:       return &pg_types[32];
-               case PG_RECORDARRAY:        return &pg_types[33];
-               case PG_REFCURSORARRAY:     return &pg_types[34];
-               case PG_REGCLASSARRAY:      return &pg_types[35];
-               case PG_REGCONFIGARRAY:     return &pg_types[36];
-               case PG_REGDICTIONARYARRAY: return &pg_types[37];
-               case PG_REGOPERARRAY:       return &pg_types[38];
-               case PG_REGOPERATORARRAY:   return &pg_types[39];
-               case PG_REGPROCARRAY:       return &pg_types[40];
-               case PG_REGPROCEDUREARRAY:  return &pg_types[41];
-               case PG_REGTYPEARRAY:       return &pg_types[42];
-               case PG_RELTIMEARRAY:       return &pg_types[43];
-               case PG_TEXTARRAY:          return &pg_types[44];
-               case PG_TIDARRAY:           return &pg_types[45];
-               case PG_TIMEARRAY:          return &pg_types[46];
-               case PG_TIMESTAMPARRAY:     return &pg_types[47];
-               case PG_TIMESTAMPTZARRAY:   return &pg_types[48];
-               case PG_TIMETZARRAY:        return &pg_types[49];
-               case PG_TINTERVALARRAY:     return &pg_types[50];
-               case PG_TSQUERYARRAY:       return &pg_types[51];
-               case PG_TSVECTORARRAY:      return &pg_types[52];
-               case PG_TXID_SNAPSHOTARRAY: return &pg_types[53];
-               case PG_UUIDARRAY:          return &pg_types[54];
-               case PG_VARBITARRAY:        return &pg_types[55];
-               case PG_VARCHARARRAY:       return &pg_types[56];
-               case PG_XIDARRAY:           return &pg_types[57];
-               case PG_XMLARRAY:           return &pg_types[58];
-               case PG_ABSTIME:            return &pg_types[59];
-               case PG_ACLITEM:            return &pg_types[60];
-               case PG_ANY:                return &pg_types[61];
-               case PG_ANYARRAY:           return &pg_types[62];
-               case PG_ANYELEMENT:         return &pg_types[63];
-               case PG_ANYENUM:            return &pg_types[64];
-               case PG_ANYNONARRAY:        return &pg_types[65];
-               case PG_BIT:                return &pg_types[66];
-               case PG_BOOL:               return &pg_types[67];
-               case PG_BOX:                return &pg_types[68];
-               case PG_BPCHAR:             return &pg_types[69];
-               case PG_BYTEA:              return &pg_types[70];
-               case PG_CHAR:               return &pg_types[71];
-               case PG_CID:                return &pg_types[72];
-               case PG_CIDR:               return &pg_types[73];
-               case PG_CIRCLE:             return &pg_types[74];
-               case PG_CSTRING:            return &pg_types[75];
-               case PG_DATE:               return &pg_types[76];
-               case PG_FDW_HANDLER:        return &pg_types[77];
-               case PG_FLOAT4:             return &pg_types[78];
-               case PG_FLOAT8:             return &pg_types[79];
-               case PG_GTSVECTOR:          return &pg_types[80];
-               case PG_INET:               return &pg_types[81];
-               case PG_INT2:               return &pg_types[82];
-               case PG_INT2VECTOR:         return &pg_types[83];
-               case PG_INT4:               return &pg_types[84];
-               case PG_INT8:               return &pg_types[85];
-               case PG_INTERNAL:           return &pg_types[86];
-               case PG_INTERVAL:           return &pg_types[87];
-               case PG_LANGUAGE_HANDLER:   return &pg_types[88];
-               case PG_LINE:               return &pg_types[89];
-               case PG_LSEG:               return &pg_types[90];
-               case PG_MACADDR:            return &pg_types[91];
-               case PG_MONEY:              return &pg_types[92];
-               case PG_NAME:               return &pg_types[93];
-               case PG_NUMERIC:            return &pg_types[94];
-               case PG_OID:                return &pg_types[95];
-               case PG_OIDVECTOR:          return &pg_types[96];
-               case PG_OPAQUE:             return &pg_types[97];
-               case PG_PATH:               return &pg_types[98];
-               case PG_PG_ATTRIBUTE:       return &pg_types[99];
-               case PG_PG_CLASS:           return &pg_types[100];
-               case PG_PG_NODE_TREE:       return &pg_types[101];
-               case PG_PG_PROC:            return &pg_types[102];
-               case PG_PG_TYPE:            return &pg_types[103];
-               case PG_POINT:              return &pg_types[104];
-               case PG_POLYGON:            return &pg_types[105];
-               case PG_RECORD:             return &pg_types[106];
-               case PG_REFCURSOR:          return &pg_types[107];
-               case PG_REGCLASS:           return &pg_types[108];
-               case PG_REGCONFIG:          return &pg_types[109];
-               case PG_REGDICTIONARY:      return &pg_types[110];
-               case PG_REGOPER:            return &pg_types[111];
-               case PG_REGOPERATOR:        return &pg_types[112];
-               case PG_REGPROC:            return &pg_types[113];
-               case PG_REGPROCEDURE:       return &pg_types[114];
-               case PG_REGTYPE:            return &pg_types[115];
-               case PG_RELTIME:            return &pg_types[116];
-               case PG_SMGR:               return &pg_types[117];
-               case PG_TEXT:               return &pg_types[118];
-               case PG_TID:                return &pg_types[119];
-               case PG_TIME:               return &pg_types[120];
-               case PG_TIMESTAMP:          return &pg_types[121];
-               case PG_TIMESTAMPTZ:        return &pg_types[122];
-               case PG_TIMETZ:             return &pg_types[123];
-               case PG_TINTERVAL:          return &pg_types[124];
-               case PG_TRIGGER:            return &pg_types[125];
-               case PG_TSQUERY:            return &pg_types[126];
-               case PG_TSVECTOR:           return &pg_types[127];
-               case PG_TXID_SNAPSHOT:      return &pg_types[128];
-               case PG_UNKNOWN:            return &pg_types[129];
-               case PG_UUID:               return &pg_types[130];
-               case PG_VARBIT:             return &pg_types[131];
-               case PG_VARCHAR:            return &pg_types[132];
-               case PG_VOID:               return &pg_types[133];
-               case PG_XID:                return &pg_types[134];
-               case PG_XML:                return &pg_types[135];
+               case PG_DATERANGEARRAY:     return &pg_types[13];
+               case PG_FLOAT4ARRAY:        return &pg_types[14];
+               case PG_FLOAT8ARRAY:        return &pg_types[15];
+               case PG_GTSVECTORARRAY:     return &pg_types[16];
+               case PG_INETARRAY:          return &pg_types[17];
+               case PG_INT2ARRAY:          return &pg_types[18];
+               case PG_INT2VECTORARRAY:    return &pg_types[19];
+               case PG_INT4ARRAY:          return &pg_types[20];
+               case PG_INT4RANGEARRAY:     return &pg_types[21];
+               case PG_INT8ARRAY:          return &pg_types[22];
+               case PG_INT8RANGEARRAY:     return &pg_types[23];
+               case PG_INTERVALARRAY:      return &pg_types[24];
+               case PG_JSONARRAY:          return &pg_types[25];
+               case PG_LINEARRAY:          return &pg_types[26];
+               case PG_LSEGARRAY:          return &pg_types[27];
+               case PG_MACADDRARRAY:       return &pg_types[28];
+               case PG_MONEYARRAY:         return &pg_types[29];
+               case PG_NAMEARRAY:          return &pg_types[30];
+               case PG_NUMERICARRAY:       return &pg_types[31];
+               case PG_NUMRANGEARRAY:      return &pg_types[32];
+               case PG_OIDARRAY:           return &pg_types[33];
+               case PG_OIDVECTORARRAY:     return &pg_types[34];
+               case PG_PATHARRAY:          return &pg_types[35];
+               case PG_POINTARRAY:         return &pg_types[36];
+               case PG_POLYGONARRAY:       return &pg_types[37];
+               case PG_RECORDARRAY:        return &pg_types[38];
+               case PG_REFCURSORARRAY:     return &pg_types[39];
+               case PG_REGCLASSARRAY:      return &pg_types[40];
+               case PG_REGCONFIGARRAY:     return &pg_types[41];
+               case PG_REGDICTIONARYARRAY: return &pg_types[42];
+               case PG_REGOPERARRAY:       return &pg_types[43];
+               case PG_REGOPERATORARRAY:   return &pg_types[44];
+               case PG_REGPROCARRAY:       return &pg_types[45];
+               case PG_REGPROCEDUREARRAY:  return &pg_types[46];
+               case PG_REGTYPEARRAY:       return &pg_types[47];
+               case PG_RELTIMEARRAY:       return &pg_types[48];
+               case PG_TEXTARRAY:          return &pg_types[49];
+               case PG_TIDARRAY:           return &pg_types[50];
+               case PG_TIMEARRAY:          return &pg_types[51];
+               case PG_TIMESTAMPARRAY:     return &pg_types[52];
+               case PG_TIMESTAMPTZARRAY:   return &pg_types[53];
+               case PG_TIMETZARRAY:        return &pg_types[54];
+               case PG_TINTERVALARRAY:     return &pg_types[55];
+               case PG_TSQUERYARRAY:       return &pg_types[56];
+               case PG_TSRANGEARRAY:       return &pg_types[57];
+               case PG_TSTZRANGEARRAY:     return &pg_types[58];
+               case PG_TSVECTORARRAY:      return &pg_types[59];
+               case PG_TXID_SNAPSHOTARRAY: return &pg_types[60];
+               case PG_UUIDARRAY:          return &pg_types[61];
+               case PG_VARBITARRAY:        return &pg_types[62];
+               case PG_VARCHARARRAY:       return &pg_types[63];
+               case PG_XIDARRAY:           return &pg_types[64];
+               case PG_XMLARRAY:           return &pg_types[65];
+               case PG_ABSTIME:            return &pg_types[66];
+               case PG_ACLITEM:            return &pg_types[67];
+               case PG_ANY:                return &pg_types[68];
+               case PG_ANYARRAY:           return &pg_types[69];
+               case PG_ANYELEMENT:         return &pg_types[70];
+               case PG_ANYENUM:            return &pg_types[71];
+               case PG_ANYNONARRAY:        return &pg_types[72];
+               case PG_ANYRANGE:           return &pg_types[73];
+               case PG_BIT:                return &pg_types[74];
+               case PG_BOOL:               return &pg_types[75];
+               case PG_BOX:                return &pg_types[76];
+               case PG_BPCHAR:             return &pg_types[77];
+               case PG_BYTEA:              return &pg_types[78];
+               case PG_CHAR:               return &pg_types[79];
+               case PG_CID:                return &pg_types[80];
+               case PG_CIDR:               return &pg_types[81];
+               case PG_CIRCLE:             return &pg_types[82];
+               case PG_CSTRING:            return &pg_types[83];
+               case PG_DATE:               return &pg_types[84];
+               case PG_DATERANGE:          return &pg_types[85];
+               case PG_FDW_HANDLER:        return &pg_types[86];
+               case PG_FLOAT4:             return &pg_types[87];
+               case PG_FLOAT8:             return &pg_types[88];
+               case PG_GTSVECTOR:          return &pg_types[89];
+               case PG_INET:               return &pg_types[90];
+               case PG_INT2:               return &pg_types[91];
+               case PG_INT2VECTOR:         return &pg_types[92];
+               case PG_INT4:               return &pg_types[93];
+               case PG_INT4RANGE:          return &pg_types[94];
+               case PG_INT8:               return &pg_types[95];
+               case PG_INT8RANGE:          return &pg_types[96];
+               case PG_INTERNAL:           return &pg_types[97];
+               case PG_INTERVAL:           return &pg_types[98];
+               case PG_JSON:               return &pg_types[99];
+               case PG_LANGUAGE_HANDLER:   return &pg_types[100];
+               case PG_LINE:               return &pg_types[101];
+               case PG_LSEG:               return &pg_types[102];
+               case PG_MACADDR:            return &pg_types[103];
+               case PG_MONEY:              return &pg_types[104];
+               case PG_NAME:               return &pg_types[105];
+               case PG_NUMERIC:            return &pg_types[106];
+               case PG_NUMRANGE:           return &pg_types[107];
+               case PG_OID:                return &pg_types[108];
+               case PG_OIDVECTOR:          return &pg_types[109];
+               case PG_OPAQUE:             return &pg_types[110];
+               case PG_PATH:               return &pg_types[111];
+               case PG_PG_ATTRIBUTE:       return &pg_types[112];
+               case PG_PG_CLASS:           return &pg_types[113];
+               case PG_PG_NODE_TREE:       return &pg_types[114];
+               case PG_PG_PROC:            return &pg_types[115];
+               case PG_PG_TYPE:            return &pg_types[116];
+               case PG_POINT:              return &pg_types[117];
+               case PG_POLYGON:            return &pg_types[118];
+               case PG_RECORD:             return &pg_types[119];
+               case PG_REFCURSOR:          return &pg_types[120];
+               case PG_REGCLASS:           return &pg_types[121];
+               case PG_REGCONFIG:          return &pg_types[122];
+               case PG_REGDICTIONARY:      return &pg_types[123];
+               case PG_REGOPER:            return &pg_types[124];
+               case PG_REGOPERATOR:        return &pg_types[125];
+               case PG_REGPROC:            return &pg_types[126];
+               case PG_REGPROCEDURE:       return &pg_types[127];
+               case PG_REGTYPE:            return &pg_types[128];
+               case PG_RELTIME:            return &pg_types[129];
+               case PG_SMGR:               return &pg_types[130];
+               case PG_TEXT:               return &pg_types[131];
+               case PG_TID:                return &pg_types[132];
+               case PG_TIME:               return &pg_types[133];
+               case PG_TIMESTAMP:          return &pg_types[134];
+               case PG_TIMESTAMPTZ:        return &pg_types[135];
+               case PG_TIMETZ:             return &pg_types[136];
+               case PG_TINTERVAL:          return &pg_types[137];
+               case PG_TRIGGER:            return &pg_types[138];
+               case PG_TSQUERY:            return &pg_types[139];
+               case PG_TSRANGE:            return &pg_types[140];
+               case PG_TSTZRANGE:          return &pg_types[141];
+               case PG_TSVECTOR:           return &pg_types[142];
+               case PG_TXID_SNAPSHOT:      return &pg_types[143];
+               case PG_UNKNOWN:            return &pg_types[144];
+               case PG_UUID:               return &pg_types[145];
+               case PG_VARBIT:             return &pg_types[146];
+               case PG_VARCHAR:            return &pg_types[147];
+               case PG_VOID:               return &pg_types[148];
+               case PG_XID:                return &pg_types[149];
+               case PG_XML:                return &pg_types[150];
                default: return NULL;
        }
 }
diff --git a/types.h b/types.h
index 159ff39..ded4c07 100644
--- a/types.h
+++ b/types.h
@@ -25,6 +25,7 @@ sql_type_info_t* sql_type_data(int);
 #define                PG_ANY  2276
 #define         PG_ANYELEMENT  2283
 #define            PG_ANYENUM  3500
+#define           PG_ANYRANGE  3831
 #define                PG_BIT  1560
 #define               PG_BOOL  16
 #define                PG_BOX  603
@@ -36,6 +37,7 @@ sql_type_info_t* sql_type_data(int);
 #define             PG_CIRCLE  718
 #define            PG_CSTRING  2275
 #define               PG_DATE  1082
+#define          PG_DATERANGE  3912
 #define        PG_FDW_HANDLER  3115
 #define             PG_FLOAT4  700
 #define             PG_FLOAT8  701
@@ -44,9 +46,12 @@ sql_type_info_t* sql_type_data(int);
 #define               PG_INT2  21
 #define         PG_INT2VECTOR  22
 #define               PG_INT4  23
+#define          PG_INT4RANGE  3904
 #define               PG_INT8  20
+#define          PG_INT8RANGE  3926
 #define           PG_INTERNAL  2281
 #define           PG_INTERVAL  1186
+#define               PG_JSON  114
 #define   PG_LANGUAGE_HANDLER  2280
 #define               PG_LINE  628
 #define               PG_LSEG  601
@@ -54,6 +59,7 @@ sql_type_info_t* sql_type_data(int);
 #define              PG_MONEY  790
 #define               PG_NAME  19
 #define            PG_NUMERIC  1700
+#define           PG_NUMRANGE  3906
 #define                PG_OID  26
 #define          PG_OIDVECTOR  30
 #define             PG_OPAQUE  2282
@@ -86,6 +92,8 @@ sql_type_info_t* sql_type_data(int);
 #define          PG_TINTERVAL  704
 #define            PG_TRIGGER  2279
 #define            PG_TSQUERY  3615
+#define            PG_TSRANGE  3908
+#define          PG_TSTZRANGE  3910
 #define           PG_TSVECTOR  3614
 #define      PG_TXID_SNAPSHOT  2970
 #define            PG_UNKNOWN  705
@@ -110,6 +118,7 @@ sql_type_info_t* sql_type_data(int);
 #define        PG_CIRCLEARRAY  719
 #define       PG_CSTRINGARRAY  1263
 #define          PG_DATEARRAY  1182
+#define     PG_DATERANGEARRAY  3913
 #define        PG_FLOAT4ARRAY  1021
 #define        PG_FLOAT8ARRAY  1022
 #define     PG_GTSVECTORARRAY  3644
@@ -117,14 +126,18 @@ sql_type_info_t* sql_type_data(int);
 #define          PG_INT2ARRAY  1005
 #define    PG_INT2VECTORARRAY  1006
 #define          PG_INT4ARRAY  1007
+#define     PG_INT4RANGEARRAY  3905
 #define          PG_INT8ARRAY  1016
+#define     PG_INT8RANGEARRAY  3927
 #define      PG_INTERVALARRAY  1187
+#define          PG_JSONARRAY  199
 #define          PG_LINEARRAY  629
 #define          PG_LSEGARRAY  1018
 #define       PG_MACADDRARRAY  1040
 #define         PG_MONEYARRAY  791
 #define          PG_NAMEARRAY  1003
 #define       PG_NUMERICARRAY  1231
+#define      PG_NUMRANGEARRAY  3907
 #define           PG_OIDARRAY  1028
 #define     PG_OIDVECTORARRAY  1013
 #define          PG_PATHARRAY  1019
@@ -149,6 +162,8 @@ sql_type_info_t* sql_type_data(int);
 #define        PG_TIMETZARRAY  1270
 #define     PG_TINTERVALARRAY  1025
 #define       PG_TSQUERYARRAY  3645
+#define       PG_TSRANGEARRAY  3909
+#define     PG_TSTZRANGEARRAY  3911
 #define      PG_TSVECTORARRAY  3643
 #define PG_TXID_SNAPSHOTARRAY  2949
 #define          PG_UUIDARRAY  2951
-- 
1.7.1

Reply via email to