Committed by Greg Sabino Mullane <[email protected]>

Update type info for new JSON items

---
 Pg.pm           |  71 ++++++++--------
 Pg.xs           |   4 +
 t/01constants.t |   4 +
 t/99_pod.t      |   4 +
 types.c         | 260 +++++++++++++++++++++++++++++---------------------------
 types.h         |   4 +
 6 files changed, 186 insertions(+), 161 deletions(-)

diff --git a/Pg.pm b/Pg.pm
index 5887bed..4076da5 100644
--- a/Pg.pm
+++ b/Pg.pm
@@ -41,25 +41,26 @@ use 5.008001;
                        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
+                       PG_JSONARRAY PG_JSONB PG_JSONBARRAY 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_LSN PG_PG_LSNARRAY 
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
                )]
        );
 
@@ -3406,22 +3407,22 @@ The current list of Postgres data types exported is:
  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
+ PG_JSONARRAY PG_JSONB PG_JSONBARRAY 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_LSN PG_PG_LSNARRAY 
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 7363530..edec91e 100644
--- a/Pg.xs
+++ b/Pg.xs
@@ -85,6 +85,8 @@ constant(name=Nullch)
        PG_INTERVALARRAY      = 1187
        PG_JSON               = 114
        PG_JSONARRAY          = 199
+       PG_JSONB              = 3802
+       PG_JSONBARRAY         = 3807
        PG_LANGUAGE_HANDLER   = 2280
        PG_LINE               = 628
        PG_LINEARRAY          = 629
@@ -109,6 +111,8 @@ constant(name=Nullch)
        PG_PATHARRAY          = 1019
        PG_PG_ATTRIBUTE       = 75
        PG_PG_CLASS           = 83
+       PG_PG_LSN             = 3220
+       PG_PG_LSNARRAY        = 3221
        PG_PG_NODE_TREE       = 194
        PG_PG_PROC            = 81
        PG_PG_TYPE            = 71
diff --git a/t/01constants.t b/t/01constants.t
index 3cac1e3..47191b4 100644
--- a/t/01constants.t
+++ b/t/01constants.t
@@ -73,6 +73,8 @@ 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_JSONB                ,  3802, 'PG_JSONB returns correct value');
+is (PG_JSONBARRAY           ,  3807, 'PG_JSONBARRAY 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');
@@ -97,6 +99,8 @@ is (PG_PATH                 ,   602, 'PG_PATH returns correct 
value');
 is (PG_PATHARRAY            ,  1019, 'PG_PATHARRAY returns correct value');
 is (PG_PG_ATTRIBUTE         ,    75, 'PG_PG_ATTRIBUTE returns correct value');
 is (PG_PG_CLASS             ,    83, 'PG_PG_CLASS returns correct value');
+is (PG_PG_LSN               ,  3220, 'PG_PG_LSN returns correct value');
+is (PG_PG_LSNARRAY          ,  3221, 'PG_PG_LSNARRAY returns correct value');
 is (PG_PG_NODE_TREE         ,   194, 'PG_PG_NODE_TREE returns correct value');
 is (PG_PG_PROC              ,    81, 'PG_PG_PROC returns correct value');
 is (PG_PG_TYPE              ,    71, 'PG_PG_TYPE returns correct value');
diff --git a/t/99_pod.t b/t/99_pod.t
index 65ae15b..1d5feae 100644
--- a/t/99_pod.t
+++ b/t/99_pod.t
@@ -121,6 +121,8 @@ SKIP: {
                 qr{PG_INTERVALARRAY},
                 qr{PG_JSON},
                 qr{PG_JSONARRAY},
+                qr{PG_JSONB},
+                qr{PG_JSONBARRAY},
                 qr{PG_LANGUAGE_HANDLER},
                 qr{PG_LINE},
                 qr{PG_LINEARRAY},
@@ -145,6 +147,8 @@ SKIP: {
                 qr{PG_PATHARRAY},
                 qr{PG_PG_ATTRIBUTE},
                 qr{PG_PG_CLASS},
+                qr{PG_PG_LSN},
+                qr{PG_PG_LSNARRAY},
                 qr{PG_PG_NODE_TREE},
                 qr{PG_PG_PROC},
                 qr{PG_PG_TYPE},
diff --git a/types.c b/types.c
index f218eee..f18ebf6 100644
--- a/types.c
+++ b/types.c
@@ -41,6 +41,7 @@ static sql_type_info_t pg_types[] = {
  {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_JSONBARRAY        ,"_jsonb"           ,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},
@@ -51,6 +52,7 @@ static sql_type_info_t pg_types[] = {
  {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},
+ {PG_PG_LSNARRAY       ,"_pg_lsn"          ,1,',',"array_out"           
,quote_string,dequote_string,{0},0},
  {PG_POINTARRAY        ,"_point"           ,1,',',"array_out"           
,quote_string,dequote_string,{0},0},
  {PG_POLYGONARRAY      ,"_polygon"         ,1,',',"array_out"           
,quote_string,dequote_string,{0},0},
  {PG_RECORDARRAY       ,"_record"          ,1,',',"array_out"           
,quote_string,dequote_string,{0},0},
@@ -116,6 +118,7 @@ static sql_type_info_t pg_types[] = {
  {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_JSONB             ,"jsonb"            ,1,',',"jsonb_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},
@@ -130,6 +133,7 @@ static sql_type_info_t pg_types[] = {
  {PG_PATH              ,"path"             ,1,',',"path_out"            
,quote_path  ,dequote_string,{0},0},
  {PG_PG_ATTRIBUTE      ,"pg_attribute"     ,1,',',"record_out"          
,quote_string,dequote_string,{0},0},
  {PG_PG_CLASS          ,"pg_class"         ,1,',',"record_out"          
,quote_string,dequote_string,{0},0},
+ {PG_PG_LSN            ,"pg_lsn"           ,1,',',"pg_lsn_out"          
,quote_string,dequote_string,{0},0},
  {PG_PG_NODE_TREE      ,"pg_node_tree"     ,1,',',"pg_node_tree_out"    
,quote_string,dequote_string,{0},0},
  {PG_PG_PROC           ,"pg_proc"          ,1,',',"record_out"          
,quote_string,dequote_string,{0},0},
  {PG_PG_TYPE           ,"pg_type"          ,1,',',"record_out"          
,quote_string,dequote_string,{0},0},
@@ -201,132 +205,136 @@ sql_type_info_t* pg_type_data(int sql_type)
                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_EVENT_TRIGGER:      return &pg_types[86];
-               case PG_FDW_HANDLER:        return &pg_types[87];
-               case PG_FLOAT4:             return &pg_types[88];
-               case PG_FLOAT8:             return &pg_types[89];
-               case PG_GTSVECTOR:          return &pg_types[90];
-               case PG_INET:               return &pg_types[91];
-               case PG_INT2:               return &pg_types[92];
-               case PG_INT2VECTOR:         return &pg_types[93];
-               case PG_INT4:               return &pg_types[94];
-               case PG_INT4RANGE:          return &pg_types[95];
-               case PG_INT8:               return &pg_types[96];
-               case PG_INT8RANGE:          return &pg_types[97];
-               case PG_INTERNAL:           return &pg_types[98];
-               case PG_INTERVAL:           return &pg_types[99];
-               case PG_JSON:               return &pg_types[100];
-               case PG_LANGUAGE_HANDLER:   return &pg_types[101];
-               case PG_LINE:               return &pg_types[102];
-               case PG_LSEG:               return &pg_types[103];
-               case PG_MACADDR:            return &pg_types[104];
-               case PG_MONEY:              return &pg_types[105];
-               case PG_NAME:               return &pg_types[106];
-               case PG_NUMERIC:            return &pg_types[107];
-               case PG_NUMRANGE:           return &pg_types[108];
-               case PG_OID:                return &pg_types[109];
-               case PG_OIDVECTOR:          return &pg_types[110];
-               case PG_OPAQUE:             return &pg_types[111];
-               case PG_PATH:               return &pg_types[112];
-               case PG_PG_ATTRIBUTE:       return &pg_types[113];
-               case PG_PG_CLASS:           return &pg_types[114];
-               case PG_PG_NODE_TREE:       return &pg_types[115];
-               case PG_PG_PROC:            return &pg_types[116];
-               case PG_PG_TYPE:            return &pg_types[117];
-               case PG_POINT:              return &pg_types[118];
-               case PG_POLYGON:            return &pg_types[119];
-               case PG_RECORD:             return &pg_types[120];
-               case PG_REFCURSOR:          return &pg_types[121];
-               case PG_REGCLASS:           return &pg_types[122];
-               case PG_REGCONFIG:          return &pg_types[123];
-               case PG_REGDICTIONARY:      return &pg_types[124];
-               case PG_REGOPER:            return &pg_types[125];
-               case PG_REGOPERATOR:        return &pg_types[126];
-               case PG_REGPROC:            return &pg_types[127];
-               case PG_REGPROCEDURE:       return &pg_types[128];
-               case PG_REGTYPE:            return &pg_types[129];
-               case PG_RELTIME:            return &pg_types[130];
-               case PG_SMGR:               return &pg_types[131];
-               case PG_TEXT:               return &pg_types[132];
-               case PG_TID:                return &pg_types[133];
-               case PG_TIME:               return &pg_types[134];
-               case PG_TIMESTAMP:          return &pg_types[135];
-               case PG_TIMESTAMPTZ:        return &pg_types[136];
-               case PG_TIMETZ:             return &pg_types[137];
-               case PG_TINTERVAL:          return &pg_types[138];
-               case PG_TRIGGER:            return &pg_types[139];
-               case PG_TSQUERY:            return &pg_types[140];
-               case PG_TSRANGE:            return &pg_types[141];
-               case PG_TSTZRANGE:          return &pg_types[142];
-               case PG_TSVECTOR:           return &pg_types[143];
-               case PG_TXID_SNAPSHOT:      return &pg_types[144];
-               case PG_UNKNOWN:            return &pg_types[145];
-               case PG_UUID:               return &pg_types[146];
-               case PG_VARBIT:             return &pg_types[147];
-               case PG_VARCHAR:            return &pg_types[148];
-               case PG_VOID:               return &pg_types[149];
-               case PG_XID:                return &pg_types[150];
-               case PG_XML:                return &pg_types[151];
+               case PG_JSONBARRAY:         return &pg_types[26];
+               case PG_LINEARRAY:          return &pg_types[27];
+               case PG_LSEGARRAY:          return &pg_types[28];
+               case PG_MACADDRARRAY:       return &pg_types[29];
+               case PG_MONEYARRAY:         return &pg_types[30];
+               case PG_NAMEARRAY:          return &pg_types[31];
+               case PG_NUMERICARRAY:       return &pg_types[32];
+               case PG_NUMRANGEARRAY:      return &pg_types[33];
+               case PG_OIDARRAY:           return &pg_types[34];
+               case PG_OIDVECTORARRAY:     return &pg_types[35];
+               case PG_PATHARRAY:          return &pg_types[36];
+               case PG_PG_LSNARRAY:        return &pg_types[37];
+               case PG_POINTARRAY:         return &pg_types[38];
+               case PG_POLYGONARRAY:       return &pg_types[39];
+               case PG_RECORDARRAY:        return &pg_types[40];
+               case PG_REFCURSORARRAY:     return &pg_types[41];
+               case PG_REGCLASSARRAY:      return &pg_types[42];
+               case PG_REGCONFIGARRAY:     return &pg_types[43];
+               case PG_REGDICTIONARYARRAY: return &pg_types[44];
+               case PG_REGOPERARRAY:       return &pg_types[45];
+               case PG_REGOPERATORARRAY:   return &pg_types[46];
+               case PG_REGPROCARRAY:       return &pg_types[47];
+               case PG_REGPROCEDUREARRAY:  return &pg_types[48];
+               case PG_REGTYPEARRAY:       return &pg_types[49];
+               case PG_RELTIMEARRAY:       return &pg_types[50];
+               case PG_TEXTARRAY:          return &pg_types[51];
+               case PG_TIDARRAY:           return &pg_types[52];
+               case PG_TIMEARRAY:          return &pg_types[53];
+               case PG_TIMESTAMPARRAY:     return &pg_types[54];
+               case PG_TIMESTAMPTZARRAY:   return &pg_types[55];
+               case PG_TIMETZARRAY:        return &pg_types[56];
+               case PG_TINTERVALARRAY:     return &pg_types[57];
+               case PG_TSQUERYARRAY:       return &pg_types[58];
+               case PG_TSRANGEARRAY:       return &pg_types[59];
+               case PG_TSTZRANGEARRAY:     return &pg_types[60];
+               case PG_TSVECTORARRAY:      return &pg_types[61];
+               case PG_TXID_SNAPSHOTARRAY: return &pg_types[62];
+               case PG_UUIDARRAY:          return &pg_types[63];
+               case PG_VARBITARRAY:        return &pg_types[64];
+               case PG_VARCHARARRAY:       return &pg_types[65];
+               case PG_XIDARRAY:           return &pg_types[66];
+               case PG_XMLARRAY:           return &pg_types[67];
+               case PG_ABSTIME:            return &pg_types[68];
+               case PG_ACLITEM:            return &pg_types[69];
+               case PG_ANY:                return &pg_types[70];
+               case PG_ANYARRAY:           return &pg_types[71];
+               case PG_ANYELEMENT:         return &pg_types[72];
+               case PG_ANYENUM:            return &pg_types[73];
+               case PG_ANYNONARRAY:        return &pg_types[74];
+               case PG_ANYRANGE:           return &pg_types[75];
+               case PG_BIT:                return &pg_types[76];
+               case PG_BOOL:               return &pg_types[77];
+               case PG_BOX:                return &pg_types[78];
+               case PG_BPCHAR:             return &pg_types[79];
+               case PG_BYTEA:              return &pg_types[80];
+               case PG_CHAR:               return &pg_types[81];
+               case PG_CID:                return &pg_types[82];
+               case PG_CIDR:               return &pg_types[83];
+               case PG_CIRCLE:             return &pg_types[84];
+               case PG_CSTRING:            return &pg_types[85];
+               case PG_DATE:               return &pg_types[86];
+               case PG_DATERANGE:          return &pg_types[87];
+               case PG_EVENT_TRIGGER:      return &pg_types[88];
+               case PG_FDW_HANDLER:        return &pg_types[89];
+               case PG_FLOAT4:             return &pg_types[90];
+               case PG_FLOAT8:             return &pg_types[91];
+               case PG_GTSVECTOR:          return &pg_types[92];
+               case PG_INET:               return &pg_types[93];
+               case PG_INT2:               return &pg_types[94];
+               case PG_INT2VECTOR:         return &pg_types[95];
+               case PG_INT4:               return &pg_types[96];
+               case PG_INT4RANGE:          return &pg_types[97];
+               case PG_INT8:               return &pg_types[98];
+               case PG_INT8RANGE:          return &pg_types[99];
+               case PG_INTERNAL:           return &pg_types[100];
+               case PG_INTERVAL:           return &pg_types[101];
+               case PG_JSON:               return &pg_types[102];
+               case PG_JSONB:              return &pg_types[103];
+               case PG_LANGUAGE_HANDLER:   return &pg_types[104];
+               case PG_LINE:               return &pg_types[105];
+               case PG_LSEG:               return &pg_types[106];
+               case PG_MACADDR:            return &pg_types[107];
+               case PG_MONEY:              return &pg_types[108];
+               case PG_NAME:               return &pg_types[109];
+               case PG_NUMERIC:            return &pg_types[110];
+               case PG_NUMRANGE:           return &pg_types[111];
+               case PG_OID:                return &pg_types[112];
+               case PG_OIDVECTOR:          return &pg_types[113];
+               case PG_OPAQUE:             return &pg_types[114];
+               case PG_PATH:               return &pg_types[115];
+               case PG_PG_ATTRIBUTE:       return &pg_types[116];
+               case PG_PG_CLASS:           return &pg_types[117];
+               case PG_PG_LSN:             return &pg_types[118];
+               case PG_PG_NODE_TREE:       return &pg_types[119];
+               case PG_PG_PROC:            return &pg_types[120];
+               case PG_PG_TYPE:            return &pg_types[121];
+               case PG_POINT:              return &pg_types[122];
+               case PG_POLYGON:            return &pg_types[123];
+               case PG_RECORD:             return &pg_types[124];
+               case PG_REFCURSOR:          return &pg_types[125];
+               case PG_REGCLASS:           return &pg_types[126];
+               case PG_REGCONFIG:          return &pg_types[127];
+               case PG_REGDICTIONARY:      return &pg_types[128];
+               case PG_REGOPER:            return &pg_types[129];
+               case PG_REGOPERATOR:        return &pg_types[130];
+               case PG_REGPROC:            return &pg_types[131];
+               case PG_REGPROCEDURE:       return &pg_types[132];
+               case PG_REGTYPE:            return &pg_types[133];
+               case PG_RELTIME:            return &pg_types[134];
+               case PG_SMGR:               return &pg_types[135];
+               case PG_TEXT:               return &pg_types[136];
+               case PG_TID:                return &pg_types[137];
+               case PG_TIME:               return &pg_types[138];
+               case PG_TIMESTAMP:          return &pg_types[139];
+               case PG_TIMESTAMPTZ:        return &pg_types[140];
+               case PG_TIMETZ:             return &pg_types[141];
+               case PG_TINTERVAL:          return &pg_types[142];
+               case PG_TRIGGER:            return &pg_types[143];
+               case PG_TSQUERY:            return &pg_types[144];
+               case PG_TSRANGE:            return &pg_types[145];
+               case PG_TSTZRANGE:          return &pg_types[146];
+               case PG_TSVECTOR:           return &pg_types[147];
+               case PG_TXID_SNAPSHOT:      return &pg_types[148];
+               case PG_UNKNOWN:            return &pg_types[149];
+               case PG_UUID:               return &pg_types[150];
+               case PG_VARBIT:             return &pg_types[151];
+               case PG_VARCHAR:            return &pg_types[152];
+               case PG_VOID:               return &pg_types[153];
+               case PG_XID:                return &pg_types[154];
+               case PG_XML:                return &pg_types[155];
                default: return NULL;
        }
 }
diff --git a/types.h b/types.h
index dd60f90..cc25b70 100644
--- a/types.h
+++ b/types.h
@@ -53,6 +53,7 @@ sql_type_info_t* sql_type_data(int);
 #define           PG_INTERNAL  2281
 #define           PG_INTERVAL  1186
 #define               PG_JSON  114
+#define              PG_JSONB  3802
 #define   PG_LANGUAGE_HANDLER  2280
 #define               PG_LINE  628
 #define               PG_LSEG  601
@@ -67,6 +68,7 @@ sql_type_info_t* sql_type_data(int);
 #define               PG_PATH  602
 #define       PG_PG_ATTRIBUTE  75
 #define           PG_PG_CLASS  83
+#define             PG_PG_LSN  3220
 #define       PG_PG_NODE_TREE  194
 #define            PG_PG_PROC  81
 #define            PG_PG_TYPE  71
@@ -132,6 +134,7 @@ sql_type_info_t* sql_type_data(int);
 #define     PG_INT8RANGEARRAY  3927
 #define      PG_INTERVALARRAY  1187
 #define          PG_JSONARRAY  199
+#define         PG_JSONBARRAY  3807
 #define          PG_LINEARRAY  629
 #define          PG_LSEGARRAY  1018
 #define       PG_MACADDRARRAY  1040
@@ -142,6 +145,7 @@ sql_type_info_t* sql_type_data(int);
 #define           PG_OIDARRAY  1028
 #define     PG_OIDVECTORARRAY  1013
 #define          PG_PATHARRAY  1019
+#define        PG_PG_LSNARRAY  3221
 #define         PG_POINTARRAY  1017
 #define       PG_POLYGONARRAY  1027
 #define        PG_RECORDARRAY  2287
-- 
1.8.4

Reply via email to