From b29164d53a7bcc16fed7aceb7cb6cb9a3faf214a Mon Sep 17 00:00:00 2001 From: Joseph Koshakow Date: Mon, 21 Nov 2022 12:15:38 -0500 Subject: [PATCH 1/4] Add idle session timeout error This commit adds the idle session timeout error (57P05). See https://www.postgresql.org/docs/current/errcodes-appendix.html --- tokio-postgres/src/error/sqlstate.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tokio-postgres/src/error/sqlstate.rs b/tokio-postgres/src/error/sqlstate.rs index 71648a94..4eb1ae2d 100644 --- a/tokio-postgres/src/error/sqlstate.rs +++ b/tokio-postgres/src/error/sqlstate.rs @@ -232,6 +232,7 @@ impl SqlState { Inner::E57P02 => "57P02", Inner::E57P03 => "57P03", Inner::E57P04 => "57P04", + Inner::E57P05 => "57P05", Inner::E58000 => "58000", Inner::E58030 => "58030", Inner::E58P01 => "58P01", @@ -946,6 +947,9 @@ impl SqlState { /// 57P04 pub const DATABASE_DROPPED: SqlState = SqlState(Inner::E57P04); + /// 57P05 + pub const IDLE_SESSION_TIMEOUT: SqlState = SqlState(Inner::E57P05); + /// 58000 pub const SYSTEM_ERROR: SqlState = SqlState(Inner::E58000); @@ -1292,6 +1296,7 @@ enum Inner { E57P02, E57P03, E57P04, + E57P05, E58000, E58030, E58P01, @@ -1498,6 +1503,7 @@ static SQLSTATE_MAP: phf::Map<&'static str, SqlState> = ("55006", SqlState::OBJECT_IN_USE), ("42P01", SqlState::UNDEFINED_TABLE), ("25P03", SqlState::IDLE_IN_TRANSACTION_SESSION_TIMEOUT), + ("57P05", SqlState::IDLE_SESSION_TIMEOUT), ("22037", SqlState::NON_UNIQUE_KEYS_IN_A_JSON_OBJECT), ("2203A", SqlState::SQL_JSON_MEMBER_NOT_FOUND), ("P0004", SqlState::ASSERT_FAILURE), From 664345f9ec06920c3129be2f1b7e0dd6c031c8ef Mon Sep 17 00:00:00 2001 From: Joseph Koshakow Date: Mon, 21 Nov 2022 14:50:52 -0500 Subject: [PATCH 2/4] Update PostgreSQL files to most recent version --- codegen/src/errcodes.txt | 4 +- codegen/src/pg_range.dat | 23 +++--- codegen/src/pg_type.dat | 160 +++++++++++++++++++++++++++------------ 3 files changed, 127 insertions(+), 60 deletions(-) diff --git a/codegen/src/errcodes.txt b/codegen/src/errcodes.txt index c79312ed..62418a05 100644 --- a/codegen/src/errcodes.txt +++ b/codegen/src/errcodes.txt @@ -2,7 +2,7 @@ # errcodes.txt # PostgreSQL error codes # -# Copyright (c) 2003-2020, PostgreSQL Global Development Group +# Copyright (c) 2003-2022, PostgreSQL Global Development Group # # This list serves as the basis for generating source files containing error # codes. It is kept in a common format to make sure all these source files have @@ -222,6 +222,7 @@ Section: Class 22 - Data Exception 2203D E ERRCODE_TOO_MANY_JSON_ARRAY_ELEMENTS too_many_json_array_elements 2203E E ERRCODE_TOO_MANY_JSON_OBJECT_MEMBERS too_many_json_object_members 2203F E ERRCODE_SQL_JSON_SCALAR_REQUIRED sql_json_scalar_required +2203G E ERRCODE_SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE sql_json_item_cannot_be_cast_to_target_type Section: Class 23 - Integrity Constraint Violation @@ -428,6 +429,7 @@ Section: Class 57 - Operator Intervention 57P02 E ERRCODE_CRASH_SHUTDOWN crash_shutdown 57P03 E ERRCODE_CANNOT_CONNECT_NOW cannot_connect_now 57P04 E ERRCODE_DATABASE_DROPPED database_dropped +57P05 E ERRCODE_IDLE_SESSION_TIMEOUT idle_session_timeout Section: Class 58 - System Error (errors external to PostgreSQL itself) diff --git a/codegen/src/pg_range.dat b/codegen/src/pg_range.dat index 479754c2..74d6de0c 100644 --- a/codegen/src/pg_range.dat +++ b/codegen/src/pg_range.dat @@ -3,7 +3,7 @@ # pg_range.dat # Initial contents of the pg_range system catalog. # -# Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group +# Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California # # src/include/catalog/pg_range.dat @@ -12,20 +12,23 @@ [ -{ rngtypid => 'int4range', rngsubtype => 'int4', rngsubopc => 'btree/int4_ops', +{ rngtypid => 'int4range', rngsubtype => 'int4', + rngmultitypid => 'int4multirange', rngsubopc => 'btree/int4_ops', rngcanonical => 'int4range_canonical', rngsubdiff => 'int4range_subdiff' }, { rngtypid => 'numrange', rngsubtype => 'numeric', - rngsubopc => 'btree/numeric_ops', rngcanonical => '-', - rngsubdiff => 'numrange_subdiff' }, + rngmultitypid => 'nummultirange', rngsubopc => 'btree/numeric_ops', + rngcanonical => '-', rngsubdiff => 'numrange_subdiff' }, { rngtypid => 'tsrange', rngsubtype => 'timestamp', - rngsubopc => 'btree/timestamp_ops', rngcanonical => '-', - rngsubdiff => 'tsrange_subdiff' }, + rngmultitypid => 'tsmultirange', rngsubopc => 'btree/timestamp_ops', + rngcanonical => '-', rngsubdiff => 'tsrange_subdiff' }, { rngtypid => 'tstzrange', rngsubtype => 'timestamptz', - rngsubopc => 'btree/timestamptz_ops', rngcanonical => '-', - rngsubdiff => 'tstzrange_subdiff' }, -{ rngtypid => 'daterange', rngsubtype => 'date', rngsubopc => 'btree/date_ops', + rngmultitypid => 'tstzmultirange', rngsubopc => 'btree/timestamptz_ops', + rngcanonical => '-', rngsubdiff => 'tstzrange_subdiff' }, +{ rngtypid => 'daterange', rngsubtype => 'date', + rngmultitypid => 'datemultirange', rngsubopc => 'btree/date_ops', rngcanonical => 'daterange_canonical', rngsubdiff => 'daterange_subdiff' }, -{ rngtypid => 'int8range', rngsubtype => 'int8', rngsubopc => 'btree/int8_ops', +{ rngtypid => 'int8range', rngsubtype => 'int8', + rngmultitypid => 'int8multirange', rngsubopc => 'btree/int8_ops', rngcanonical => 'int8range_canonical', rngsubdiff => 'int8range_subdiff' }, ] diff --git a/codegen/src/pg_type.dat b/codegen/src/pg_type.dat index e8be0008..df458794 100644 --- a/codegen/src/pg_type.dat +++ b/codegen/src/pg_type.dat @@ -3,7 +3,7 @@ # pg_type.dat # Initial contents of the pg_type system catalog. # -# Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group +# Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California # # src/include/catalog/pg_type.dat @@ -15,14 +15,10 @@ # For types used in the system catalogs, make sure the values here match # TypInfo[] in bootstrap.c. -# OID symbol macro names for pg_type OIDs are generated by genbki.pl -# according to the following rule, so you don't need to specify them -# here: +# OID symbol macro names for pg_type OIDs are not specified here because +# they are generated by genbki.pl according to the following rule: # foo_bar -> FOO_BAROID # _foo_bar -> FOO_BARARRAYOID -# -# The only oid_symbol entries in this file are for names that don't match -# this rule, and are grandfathered in. # To autogenerate an array type, add 'array_type_oid => 'nnnn' to the element # type, which will instruct genbki.pl to generate a BKI entry for it. @@ -46,15 +42,16 @@ typinput => 'byteain', typoutput => 'byteaout', typreceive => 'bytearecv', typsend => 'byteasend', typalign => 'i', typstorage => 'x' }, { oid => '18', array_type_oid => '1002', descr => 'single character', - typname => 'char', typlen => '1', typbyval => 't', typcategory => 'S', + typname => 'char', typlen => '1', typbyval => 't', typcategory => 'Z', typinput => 'charin', typoutput => 'charout', typreceive => 'charrecv', typsend => 'charsend', typalign => 'c' }, { oid => '19', array_type_oid => '1003', descr => '63-byte type for storing system identifiers', typname => 'name', typlen => 'NAMEDATALEN', typbyval => 'f', - typcategory => 'S', typelem => 'char', typinput => 'namein', - typoutput => 'nameout', typreceive => 'namerecv', typsend => 'namesend', - typalign => 'c', typcollation => 'C' }, + typcategory => 'S', typsubscript => 'raw_array_subscript_handler', + typelem => 'char', typinput => 'namein', typoutput => 'nameout', + typreceive => 'namerecv', typsend => 'namesend', typalign => 'c', + typcollation => 'C' }, { oid => '20', array_type_oid => '1016', descr => '~18 digit integer, 8-byte storage', typname => 'int8', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', @@ -68,7 +65,8 @@ { oid => '22', array_type_oid => '1006', descr => 'array of int2, used in system tables', typname => 'int2vector', typlen => '-1', typbyval => 'f', typcategory => 'A', - typelem => 'int2', typinput => 'int2vectorin', typoutput => 'int2vectorout', + typsubscript => 'array_subscript_handler', typelem => 'int2', + typinput => 'int2vectorin', typoutput => 'int2vectorout', typreceive => 'int2vectorrecv', typsend => 'int2vectorsend', typalign => 'i' }, { oid => '23', array_type_oid => '1007', @@ -108,27 +106,28 @@ { oid => '30', array_type_oid => '1013', descr => 'array of oids, used in system tables', typname => 'oidvector', typlen => '-1', typbyval => 'f', typcategory => 'A', - typelem => 'oid', typinput => 'oidvectorin', typoutput => 'oidvectorout', + typsubscript => 'array_subscript_handler', typelem => 'oid', + typinput => 'oidvectorin', typoutput => 'oidvectorout', typreceive => 'oidvectorrecv', typsend => 'oidvectorsend', typalign => 'i' }, # hand-built rowtype entries for bootstrapped catalogs # NB: OIDs assigned here must match the BKI_ROWTYPE_OID declarations -{ oid => '71', +{ oid => '71', array_type_oid => '210', typname => 'pg_type', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => 'pg_type', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' }, -{ oid => '75', +{ oid => '75', array_type_oid => '270', typname => 'pg_attribute', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => 'pg_attribute', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' }, -{ oid => '81', +{ oid => '81', array_type_oid => '272', typname => 'pg_proc', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => 'pg_proc', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', typsend => 'record_send', typalign => 'd', typstorage => 'x' }, -{ oid => '83', +{ oid => '83', array_type_oid => '273', typname => 'pg_class', typlen => '-1', typbyval => 'f', typtype => 'c', typcategory => 'C', typrelid => 'pg_class', typinput => 'record_in', typoutput => 'record_out', typreceive => 'record_recv', @@ -144,35 +143,30 @@ typname => 'xml', typlen => '-1', typbyval => 'f', typcategory => 'U', typinput => 'xml_in', typoutput => 'xml_out', typreceive => 'xml_recv', typsend => 'xml_send', typalign => 'i', typstorage => 'x' }, -{ oid => '194', oid_symbol => 'PGNODETREEOID', - descr => 'string representing an internal node tree', +{ oid => '194', descr => 'string representing an internal node tree', typname => 'pg_node_tree', typlen => '-1', typbyval => 'f', - typcategory => 'S', typinput => 'pg_node_tree_in', + typcategory => 'Z', typinput => 'pg_node_tree_in', typoutput => 'pg_node_tree_out', typreceive => 'pg_node_tree_recv', typsend => 'pg_node_tree_send', typalign => 'i', typstorage => 'x', typcollation => 'default' }, -{ oid => '3361', oid_symbol => 'PGNDISTINCTOID', - descr => 'multivariate ndistinct coefficients', +{ oid => '3361', descr => 'multivariate ndistinct coefficients', typname => 'pg_ndistinct', typlen => '-1', typbyval => 'f', - typcategory => 'S', typinput => 'pg_ndistinct_in', + typcategory => 'Z', typinput => 'pg_ndistinct_in', typoutput => 'pg_ndistinct_out', typreceive => 'pg_ndistinct_recv', typsend => 'pg_ndistinct_send', typalign => 'i', typstorage => 'x', typcollation => 'default' }, -{ oid => '3402', oid_symbol => 'PGDEPENDENCIESOID', - descr => 'multivariate dependencies', +{ oid => '3402', descr => 'multivariate dependencies', typname => 'pg_dependencies', typlen => '-1', typbyval => 'f', - typcategory => 'S', typinput => 'pg_dependencies_in', + typcategory => 'Z', typinput => 'pg_dependencies_in', typoutput => 'pg_dependencies_out', typreceive => 'pg_dependencies_recv', typsend => 'pg_dependencies_send', typalign => 'i', typstorage => 'x', typcollation => 'default' }, -{ oid => '5017', oid_symbol => 'PGMCVLISTOID', - descr => 'multivariate MCV list', - typname => 'pg_mcv_list', typlen => '-1', typbyval => 'f', typcategory => 'S', +{ oid => '5017', descr => 'multivariate MCV list', + typname => 'pg_mcv_list', typlen => '-1', typbyval => 'f', typcategory => 'Z', typinput => 'pg_mcv_list_in', typoutput => 'pg_mcv_list_out', typreceive => 'pg_mcv_list_recv', typsend => 'pg_mcv_list_send', typalign => 'i', typstorage => 'x', typcollation => 'default' }, -{ oid => '32', oid_symbol => 'PGDDLCOMMANDOID', - descr => 'internal type for passing CollectedCommand', +{ oid => '32', descr => 'internal type for passing CollectedCommand', typname => 'pg_ddl_command', typlen => 'SIZEOF_POINTER', typbyval => 't', typtype => 'p', typcategory => 'P', typinput => 'pg_ddl_command_in', typoutput => 'pg_ddl_command_out', typreceive => 'pg_ddl_command_recv', @@ -187,13 +181,15 @@ { oid => '600', array_type_oid => '1017', descr => 'geometric point \'(x, y)\'', typname => 'point', typlen => '16', typbyval => 'f', typcategory => 'G', - typelem => 'float8', typinput => 'point_in', typoutput => 'point_out', - typreceive => 'point_recv', typsend => 'point_send', typalign => 'd' }, + typsubscript => 'raw_array_subscript_handler', typelem => 'float8', + typinput => 'point_in', typoutput => 'point_out', typreceive => 'point_recv', + typsend => 'point_send', typalign => 'd' }, { oid => '601', array_type_oid => '1018', descr => 'geometric line segment \'(pt1,pt2)\'', typname => 'lseg', typlen => '32', typbyval => 'f', typcategory => 'G', - typelem => 'point', typinput => 'lseg_in', typoutput => 'lseg_out', - typreceive => 'lseg_recv', typsend => 'lseg_send', typalign => 'd' }, + typsubscript => 'raw_array_subscript_handler', typelem => 'point', + typinput => 'lseg_in', typoutput => 'lseg_out', typreceive => 'lseg_recv', + typsend => 'lseg_send', typalign => 'd' }, { oid => '602', array_type_oid => '1019', descr => 'geometric path \'(pt1,...)\'', typname => 'path', typlen => '-1', typbyval => 'f', typcategory => 'G', @@ -202,9 +198,9 @@ { oid => '603', array_type_oid => '1020', descr => 'geometric box \'(lower left,upper right)\'', typname => 'box', typlen => '32', typbyval => 'f', typcategory => 'G', - typdelim => ';', typelem => 'point', typinput => 'box_in', - typoutput => 'box_out', typreceive => 'box_recv', typsend => 'box_send', - typalign => 'd' }, + typdelim => ';', typsubscript => 'raw_array_subscript_handler', + typelem => 'point', typinput => 'box_in', typoutput => 'box_out', + typreceive => 'box_recv', typsend => 'box_send', typalign => 'd' }, { oid => '604', array_type_oid => '1027', descr => 'geometric polygon \'(pt1,...)\'', typname => 'polygon', typlen => '-1', typbyval => 'f', typcategory => 'G', @@ -212,8 +208,9 @@ typsend => 'poly_send', typalign => 'd', typstorage => 'x' }, { oid => '628', array_type_oid => '629', descr => 'geometric line', typname => 'line', typlen => '24', typbyval => 'f', typcategory => 'G', - typelem => 'float8', typinput => 'line_in', typoutput => 'line_out', - typreceive => 'line_recv', typsend => 'line_send', typalign => 'd' }, + typsubscript => 'raw_array_subscript_handler', typelem => 'float8', + typinput => 'line_in', typoutput => 'line_out', typreceive => 'line_recv', + typsend => 'line_send', typalign => 'd' }, # OIDS 700 - 799 @@ -237,7 +234,7 @@ typname => 'circle', typlen => '24', typbyval => 'f', typcategory => 'G', typinput => 'circle_in', typoutput => 'circle_out', typreceive => 'circle_recv', typsend => 'circle_send', typalign => 'd' }, -{ oid => '790', oid_symbol => 'CASHOID', array_type_oid => '791', +{ oid => '790', array_type_oid => '791', descr => 'monetary amounts, $d,ddd.cc', typname => 'money', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'N', typinput => 'cash_in', typoutput => 'cash_out', @@ -409,8 +406,7 @@ typsend => 'uuid_send', typalign => 'c' }, # pg_lsn -{ oid => '3220', oid_symbol => 'LSNOID', array_type_oid => '3221', - descr => 'PostgreSQL LSN datatype', +{ oid => '3220', array_type_oid => '3221', descr => 'PostgreSQL LSN datatype', typname => 'pg_lsn', typlen => '8', typbyval => 'FLOAT8PASSBYVAL', typcategory => 'U', typinput => 'pg_lsn_in', typoutput => 'pg_lsn_out', typreceive => 'pg_lsn_recv', typsend => 'pg_lsn_send', typalign => 'd' }, @@ -447,8 +443,9 @@ # jsonb { oid => '3802', array_type_oid => '3807', descr => 'Binary JSON', typname => 'jsonb', typlen => '-1', typbyval => 'f', typcategory => 'U', - typinput => 'jsonb_in', typoutput => 'jsonb_out', typreceive => 'jsonb_recv', - typsend => 'jsonb_send', typalign => 'i', typstorage => 'x' }, + typsubscript => 'jsonb_subscript_handler', typinput => 'jsonb_in', + typoutput => 'jsonb_out', typreceive => 'jsonb_recv', typsend => 'jsonb_send', + typalign => 'i', typstorage => 'x' }, { oid => '4072', array_type_oid => '4073', descr => 'JSON path', typname => 'jsonpath', typlen => '-1', typbyval => 'f', typcategory => 'U', typinput => 'jsonpath_in', typoutput => 'jsonpath_out', @@ -500,6 +497,46 @@ typreceive => 'range_recv', typsend => 'range_send', typanalyze => 'range_typanalyze', typalign => 'd', typstorage => 'x' }, +# multirange types +{ oid => '4451', array_type_oid => '6150', descr => 'multirange of integers', + typname => 'int4multirange', typlen => '-1', typbyval => 'f', typtype => 'm', + typcategory => 'R', typinput => 'multirange_in', + typoutput => 'multirange_out', typreceive => 'multirange_recv', + typsend => 'multirange_send', typanalyze => 'multirange_typanalyze', + typalign => 'i', typstorage => 'x' }, +{ oid => '4532', array_type_oid => '6151', descr => 'multirange of numerics', + typname => 'nummultirange', typlen => '-1', typbyval => 'f', typtype => 'm', + typcategory => 'R', typinput => 'multirange_in', + typoutput => 'multirange_out', typreceive => 'multirange_recv', + typsend => 'multirange_send', typanalyze => 'multirange_typanalyze', + typalign => 'i', typstorage => 'x' }, +{ oid => '4533', array_type_oid => '6152', + descr => 'multirange of timestamps without time zone', + typname => 'tsmultirange', typlen => '-1', typbyval => 'f', typtype => 'm', + typcategory => 'R', typinput => 'multirange_in', + typoutput => 'multirange_out', typreceive => 'multirange_recv', + typsend => 'multirange_send', typanalyze => 'multirange_typanalyze', + typalign => 'd', typstorage => 'x' }, +{ oid => '4534', array_type_oid => '6153', + descr => 'multirange of timestamps with time zone', + typname => 'tstzmultirange', typlen => '-1', typbyval => 'f', typtype => 'm', + typcategory => 'R', typinput => 'multirange_in', + typoutput => 'multirange_out', typreceive => 'multirange_recv', + typsend => 'multirange_send', typanalyze => 'multirange_typanalyze', + typalign => 'd', typstorage => 'x' }, +{ oid => '4535', array_type_oid => '6155', descr => 'multirange of dates', + typname => 'datemultirange', typlen => '-1', typbyval => 'f', typtype => 'm', + typcategory => 'R', typinput => 'multirange_in', + typoutput => 'multirange_out', typreceive => 'multirange_recv', + typsend => 'multirange_send', typanalyze => 'multirange_typanalyze', + typalign => 'i', typstorage => 'x' }, +{ oid => '4536', array_type_oid => '6157', descr => 'multirange of bigints', + typname => 'int8multirange', typlen => '-1', typbyval => 'f', typtype => 'm', + typcategory => 'R', typinput => 'multirange_in', + typoutput => 'multirange_out', typreceive => 'multirange_recv', + typsend => 'multirange_send', typanalyze => 'multirange_typanalyze', + typalign => 'd', typstorage => 'x' }, + # pseudo-types # types with typtype='p' represent various special cases in the type system. # These cannot be used to define table columns, but are valid as function @@ -517,8 +554,9 @@ # Arrays of records have typcategory P, so they can't be autogenerated. { oid => '2287', typname => '_record', typlen => '-1', typbyval => 'f', typtype => 'p', - typcategory => 'P', typelem => 'record', typinput => 'array_in', - typoutput => 'array_out', typreceive => 'array_recv', typsend => 'array_send', + typcategory => 'P', typsubscript => 'array_subscript_handler', + typelem => 'record', typinput => 'array_in', typoutput => 'array_out', + typreceive => 'array_recv', typsend => 'array_send', typanalyze => 'array_typanalyze', typalign => 'd', typstorage => 'x' }, { oid => '2275', array_type_oid => '1263', descr => 'C-style string', typname => 'cstring', typlen => '-2', typbyval => 'f', typtype => 'p', @@ -542,7 +580,7 @@ typname => 'trigger', typlen => '4', typbyval => 't', typtype => 'p', typcategory => 'P', typinput => 'trigger_in', typoutput => 'trigger_out', typreceive => '-', typsend => '-', typalign => 'i' }, -{ oid => '3838', oid_symbol => 'EVTTRIGGEROID', +{ oid => '3838', descr => 'pseudo-type for the result of an event trigger function', typname => 'event_trigger', typlen => '4', typbyval => 't', typtype => 'p', typcategory => 'P', typinput => 'event_trigger_in', @@ -629,5 +667,29 @@ typtype => 'p', typcategory => 'P', typinput => 'anycompatiblerange_in', typoutput => 'anycompatiblerange_out', typreceive => '-', typsend => '-', typalign => 'd', typstorage => 'x' }, - +{ oid => '4537', + descr => 'pseudo-type representing a polymorphic base type that is a multirange', + typname => 'anymultirange', typlen => '-1', typbyval => 'f', typtype => 'p', + typcategory => 'P', typinput => 'anymultirange_in', + typoutput => 'anymultirange_out', typreceive => '-', typsend => '-', + typalign => 'd', typstorage => 'x' }, +{ oid => '4538', + descr => 'pseudo-type representing a multirange over a polymorphic common type', + typname => 'anycompatiblemultirange', typlen => '-1', typbyval => 'f', + typtype => 'p', typcategory => 'P', typinput => 'anycompatiblemultirange_in', + typoutput => 'anycompatiblemultirange_out', typreceive => '-', typsend => '-', + typalign => 'd', typstorage => 'x' }, +{ oid => '4600', descr => 'BRIN bloom summary', + typname => 'pg_brin_bloom_summary', typlen => '-1', typbyval => 'f', + typcategory => 'Z', typinput => 'brin_bloom_summary_in', + typoutput => 'brin_bloom_summary_out', + typreceive => 'brin_bloom_summary_recv', typsend => 'brin_bloom_summary_send', + typalign => 'i', typstorage => 'x', typcollation => 'default' }, +{ oid => '4601', descr => 'BRIN minmax-multi summary', + typname => 'pg_brin_minmax_multi_summary', typlen => '-1', typbyval => 'f', + typcategory => 'Z', typinput => 'brin_minmax_multi_summary_in', + typoutput => 'brin_minmax_multi_summary_out', + typreceive => 'brin_minmax_multi_summary_recv', + typsend => 'brin_minmax_multi_summary_send', typalign => 'i', + typstorage => 'x', typcollation => 'default' }, ] From f413e66b14f9b4574b69005a4671441ea10b2e6e Mon Sep 17 00:00:00 2001 From: Joseph Koshakow Date: Mon, 21 Nov 2022 15:24:21 -0500 Subject: [PATCH 3/4] Add support for multiranges --- codegen/src/type_gen.rs | 15 +- postgres-types/src/type_gen.rs | 840 +++++++++++++++++++++------ tokio-postgres/src/error/sqlstate.rs | 610 +++++++++---------- 3 files changed, 990 insertions(+), 475 deletions(-) diff --git a/codegen/src/type_gen.rs b/codegen/src/type_gen.rs index 7e92e062..249c5530 100644 --- a/codegen/src/type_gen.rs +++ b/codegen/src/type_gen.rs @@ -185,6 +185,15 @@ fn parse_types() -> BTreeMap { ) }) .collect::>(); + let multi_range_elements = raw_ranges + .iter() + .map(|m| { + ( + oids_by_name[&*m["rngmultitypid"]], + oids_by_name[&*m["rngsubtype"]], + ) + }) + .collect::>(); let range_vector_re = Regex::new("(range|vector)$").unwrap(); let array_re = Regex::new("^_(.*)").unwrap(); @@ -209,7 +218,11 @@ fn parse_types() -> BTreeMap { } let element = match &*kind { - "R" => range_elements[&oid], + "R" => match &*raw_type["typtype"] { + "r" => range_elements[&oid], + "m" => multi_range_elements[&oid], + typtype => panic!("invalid range typtype {}", typtype), + } "A" => oids_by_name[&raw_type["typelem"]], _ => 0, }; diff --git a/postgres-types/src/type_gen.rs b/postgres-types/src/type_gen.rs index 85978096..901fb46e 100644 --- a/postgres-types/src/type_gen.rs +++ b/postgres-types/src/type_gen.rs @@ -1,7 +1,7 @@ // Autogenerated file - DO NOT EDIT use std::sync::Arc; -use crate::{Kind, Oid, Type}; +use crate::{Type, Oid, Kind}; #[derive(PartialEq, Eq, Debug, Hash)] pub struct Other { @@ -174,6 +174,16 @@ pub enum Inner { RegroleArray, Regcollation, RegcollationArray, + Int4multiRange, + NummultiRange, + TsmultiRange, + TstzmultiRange, + DatemultiRange, + Int8multiRange, + AnymultiRange, + AnycompatiblemultiRange, + PgBrinBloomSummary, + PgBrinMinmaxMultiSummary, PgMcvList, PgSnapshot, PgSnapshotArray, @@ -182,6 +192,12 @@ pub enum Inner { Anycompatiblearray, Anycompatiblenonarray, AnycompatibleRange, + Int4multiRangeArray, + NummultiRangeArray, + TsmultiRangeArray, + TstzmultiRangeArray, + DatemultiRangeArray, + Int8multiRangeArray, Other(Arc), } @@ -349,6 +365,16 @@ impl Inner { 4097 => Some(Inner::RegroleArray), 4191 => Some(Inner::Regcollation), 4192 => Some(Inner::RegcollationArray), + 4451 => Some(Inner::Int4multiRange), + 4532 => Some(Inner::NummultiRange), + 4533 => Some(Inner::TsmultiRange), + 4534 => Some(Inner::TstzmultiRange), + 4535 => Some(Inner::DatemultiRange), + 4536 => Some(Inner::Int8multiRange), + 4537 => Some(Inner::AnymultiRange), + 4538 => Some(Inner::AnycompatiblemultiRange), + 4600 => Some(Inner::PgBrinBloomSummary), + 4601 => Some(Inner::PgBrinMinmaxMultiSummary), 5017 => Some(Inner::PgMcvList), 5038 => Some(Inner::PgSnapshot), 5039 => Some(Inner::PgSnapshotArray), @@ -357,6 +383,12 @@ impl Inner { 5078 => Some(Inner::Anycompatiblearray), 5079 => Some(Inner::Anycompatiblenonarray), 5080 => Some(Inner::AnycompatibleRange), + 6150 => Some(Inner::Int4multiRangeArray), + 6151 => Some(Inner::NummultiRangeArray), + 6152 => Some(Inner::TsmultiRangeArray), + 6153 => Some(Inner::TstzmultiRangeArray), + 6155 => Some(Inner::DatemultiRangeArray), + 6157 => Some(Inner::Int8multiRangeArray), _ => None, } } @@ -524,6 +556,16 @@ impl Inner { Inner::RegroleArray => 4097, Inner::Regcollation => 4191, Inner::RegcollationArray => 4192, + Inner::Int4multiRange => 4451, + Inner::NummultiRange => 4532, + Inner::TsmultiRange => 4533, + Inner::TstzmultiRange => 4534, + Inner::DatemultiRange => 4535, + Inner::Int8multiRange => 4536, + Inner::AnymultiRange => 4537, + Inner::AnycompatiblemultiRange => 4538, + Inner::PgBrinBloomSummary => 4600, + Inner::PgBrinMinmaxMultiSummary => 4601, Inner::PgMcvList => 5017, Inner::PgSnapshot => 5038, Inner::PgSnapshotArray => 5039, @@ -532,181 +574,573 @@ impl Inner { Inner::Anycompatiblearray => 5078, Inner::Anycompatiblenonarray => 5079, Inner::AnycompatibleRange => 5080, + Inner::Int4multiRangeArray => 6150, + Inner::NummultiRangeArray => 6151, + Inner::TsmultiRangeArray => 6152, + Inner::TstzmultiRangeArray => 6153, + Inner::DatemultiRangeArray => 6155, + Inner::Int8multiRangeArray => 6157, Inner::Other(ref u) => u.oid, } } pub fn kind(&self) -> &Kind { match *self { - Inner::Bool => &Kind::Simple, - Inner::Bytea => &Kind::Simple, - Inner::Char => &Kind::Simple, - Inner::Name => &Kind::Simple, - Inner::Int8 => &Kind::Simple, - Inner::Int2 => &Kind::Simple, - Inner::Int2Vector => &Kind::Array(Type(Inner::Int2)), - Inner::Int4 => &Kind::Simple, - Inner::Regproc => &Kind::Simple, - Inner::Text => &Kind::Simple, - Inner::Oid => &Kind::Simple, - Inner::Tid => &Kind::Simple, - Inner::Xid => &Kind::Simple, - Inner::Cid => &Kind::Simple, - Inner::OidVector => &Kind::Array(Type(Inner::Oid)), - Inner::PgDdlCommand => &Kind::Pseudo, - Inner::Json => &Kind::Simple, - Inner::Xml => &Kind::Simple, - Inner::XmlArray => &Kind::Array(Type(Inner::Xml)), - Inner::PgNodeTree => &Kind::Simple, - Inner::JsonArray => &Kind::Array(Type(Inner::Json)), - Inner::TableAmHandler => &Kind::Pseudo, - Inner::Xid8Array => &Kind::Array(Type(Inner::Xid8)), - Inner::IndexAmHandler => &Kind::Pseudo, - Inner::Point => &Kind::Simple, - Inner::Lseg => &Kind::Simple, - Inner::Path => &Kind::Simple, - Inner::Box => &Kind::Simple, - Inner::Polygon => &Kind::Simple, - Inner::Line => &Kind::Simple, - Inner::LineArray => &Kind::Array(Type(Inner::Line)), - Inner::Cidr => &Kind::Simple, - Inner::CidrArray => &Kind::Array(Type(Inner::Cidr)), - Inner::Float4 => &Kind::Simple, - Inner::Float8 => &Kind::Simple, - Inner::Unknown => &Kind::Simple, - Inner::Circle => &Kind::Simple, - Inner::CircleArray => &Kind::Array(Type(Inner::Circle)), - Inner::Macaddr8 => &Kind::Simple, - Inner::Macaddr8Array => &Kind::Array(Type(Inner::Macaddr8)), - Inner::Money => &Kind::Simple, - Inner::MoneyArray => &Kind::Array(Type(Inner::Money)), - Inner::Macaddr => &Kind::Simple, - Inner::Inet => &Kind::Simple, - Inner::BoolArray => &Kind::Array(Type(Inner::Bool)), - Inner::ByteaArray => &Kind::Array(Type(Inner::Bytea)), - Inner::CharArray => &Kind::Array(Type(Inner::Char)), - Inner::NameArray => &Kind::Array(Type(Inner::Name)), - Inner::Int2Array => &Kind::Array(Type(Inner::Int2)), - Inner::Int2VectorArray => &Kind::Array(Type(Inner::Int2Vector)), - Inner::Int4Array => &Kind::Array(Type(Inner::Int4)), - Inner::RegprocArray => &Kind::Array(Type(Inner::Regproc)), - Inner::TextArray => &Kind::Array(Type(Inner::Text)), - Inner::TidArray => &Kind::Array(Type(Inner::Tid)), - Inner::XidArray => &Kind::Array(Type(Inner::Xid)), - Inner::CidArray => &Kind::Array(Type(Inner::Cid)), - Inner::OidVectorArray => &Kind::Array(Type(Inner::OidVector)), - Inner::BpcharArray => &Kind::Array(Type(Inner::Bpchar)), - Inner::VarcharArray => &Kind::Array(Type(Inner::Varchar)), - Inner::Int8Array => &Kind::Array(Type(Inner::Int8)), - Inner::PointArray => &Kind::Array(Type(Inner::Point)), - Inner::LsegArray => &Kind::Array(Type(Inner::Lseg)), - Inner::PathArray => &Kind::Array(Type(Inner::Path)), - Inner::BoxArray => &Kind::Array(Type(Inner::Box)), - Inner::Float4Array => &Kind::Array(Type(Inner::Float4)), - Inner::Float8Array => &Kind::Array(Type(Inner::Float8)), - Inner::PolygonArray => &Kind::Array(Type(Inner::Polygon)), - Inner::OidArray => &Kind::Array(Type(Inner::Oid)), - Inner::Aclitem => &Kind::Simple, - Inner::AclitemArray => &Kind::Array(Type(Inner::Aclitem)), - Inner::MacaddrArray => &Kind::Array(Type(Inner::Macaddr)), - Inner::InetArray => &Kind::Array(Type(Inner::Inet)), - Inner::Bpchar => &Kind::Simple, - Inner::Varchar => &Kind::Simple, - Inner::Date => &Kind::Simple, - Inner::Time => &Kind::Simple, - Inner::Timestamp => &Kind::Simple, - Inner::TimestampArray => &Kind::Array(Type(Inner::Timestamp)), - Inner::DateArray => &Kind::Array(Type(Inner::Date)), - Inner::TimeArray => &Kind::Array(Type(Inner::Time)), - Inner::Timestamptz => &Kind::Simple, - Inner::TimestamptzArray => &Kind::Array(Type(Inner::Timestamptz)), - Inner::Interval => &Kind::Simple, - Inner::IntervalArray => &Kind::Array(Type(Inner::Interval)), - Inner::NumericArray => &Kind::Array(Type(Inner::Numeric)), - Inner::CstringArray => &Kind::Array(Type(Inner::Cstring)), - Inner::Timetz => &Kind::Simple, - Inner::TimetzArray => &Kind::Array(Type(Inner::Timetz)), - Inner::Bit => &Kind::Simple, - Inner::BitArray => &Kind::Array(Type(Inner::Bit)), - Inner::Varbit => &Kind::Simple, - Inner::VarbitArray => &Kind::Array(Type(Inner::Varbit)), - Inner::Numeric => &Kind::Simple, - Inner::Refcursor => &Kind::Simple, - Inner::RefcursorArray => &Kind::Array(Type(Inner::Refcursor)), - Inner::Regprocedure => &Kind::Simple, - Inner::Regoper => &Kind::Simple, - Inner::Regoperator => &Kind::Simple, - Inner::Regclass => &Kind::Simple, - Inner::Regtype => &Kind::Simple, - Inner::RegprocedureArray => &Kind::Array(Type(Inner::Regprocedure)), - Inner::RegoperArray => &Kind::Array(Type(Inner::Regoper)), - Inner::RegoperatorArray => &Kind::Array(Type(Inner::Regoperator)), - Inner::RegclassArray => &Kind::Array(Type(Inner::Regclass)), - Inner::RegtypeArray => &Kind::Array(Type(Inner::Regtype)), - Inner::Record => &Kind::Pseudo, - Inner::Cstring => &Kind::Pseudo, - Inner::Any => &Kind::Pseudo, - Inner::Anyarray => &Kind::Pseudo, - Inner::Void => &Kind::Pseudo, - Inner::Trigger => &Kind::Pseudo, - Inner::LanguageHandler => &Kind::Pseudo, - Inner::Internal => &Kind::Pseudo, - Inner::Anyelement => &Kind::Pseudo, - Inner::RecordArray => &Kind::Pseudo, - Inner::Anynonarray => &Kind::Pseudo, - Inner::TxidSnapshotArray => &Kind::Array(Type(Inner::TxidSnapshot)), - Inner::Uuid => &Kind::Simple, - Inner::UuidArray => &Kind::Array(Type(Inner::Uuid)), - Inner::TxidSnapshot => &Kind::Simple, - Inner::FdwHandler => &Kind::Pseudo, - Inner::PgLsn => &Kind::Simple, - Inner::PgLsnArray => &Kind::Array(Type(Inner::PgLsn)), - Inner::TsmHandler => &Kind::Pseudo, - Inner::PgNdistinct => &Kind::Simple, - Inner::PgDependencies => &Kind::Simple, - Inner::Anyenum => &Kind::Pseudo, - Inner::TsVector => &Kind::Simple, - Inner::Tsquery => &Kind::Simple, - Inner::GtsVector => &Kind::Simple, - Inner::TsVectorArray => &Kind::Array(Type(Inner::TsVector)), - Inner::GtsVectorArray => &Kind::Array(Type(Inner::GtsVector)), - Inner::TsqueryArray => &Kind::Array(Type(Inner::Tsquery)), - Inner::Regconfig => &Kind::Simple, - Inner::RegconfigArray => &Kind::Array(Type(Inner::Regconfig)), - Inner::Regdictionary => &Kind::Simple, - Inner::RegdictionaryArray => &Kind::Array(Type(Inner::Regdictionary)), - Inner::Jsonb => &Kind::Simple, - Inner::JsonbArray => &Kind::Array(Type(Inner::Jsonb)), - Inner::AnyRange => &Kind::Pseudo, - Inner::EventTrigger => &Kind::Pseudo, - Inner::Int4Range => &Kind::Range(Type(Inner::Int4)), - Inner::Int4RangeArray => &Kind::Array(Type(Inner::Int4Range)), - Inner::NumRange => &Kind::Range(Type(Inner::Numeric)), - Inner::NumRangeArray => &Kind::Array(Type(Inner::NumRange)), - Inner::TsRange => &Kind::Range(Type(Inner::Timestamp)), - Inner::TsRangeArray => &Kind::Array(Type(Inner::TsRange)), - Inner::TstzRange => &Kind::Range(Type(Inner::Timestamptz)), - Inner::TstzRangeArray => &Kind::Array(Type(Inner::TstzRange)), - Inner::DateRange => &Kind::Range(Type(Inner::Date)), - Inner::DateRangeArray => &Kind::Array(Type(Inner::DateRange)), - Inner::Int8Range => &Kind::Range(Type(Inner::Int8)), - Inner::Int8RangeArray => &Kind::Array(Type(Inner::Int8Range)), - Inner::Jsonpath => &Kind::Simple, - Inner::JsonpathArray => &Kind::Array(Type(Inner::Jsonpath)), - Inner::Regnamespace => &Kind::Simple, - Inner::RegnamespaceArray => &Kind::Array(Type(Inner::Regnamespace)), - Inner::Regrole => &Kind::Simple, - Inner::RegroleArray => &Kind::Array(Type(Inner::Regrole)), - Inner::Regcollation => &Kind::Simple, - Inner::RegcollationArray => &Kind::Array(Type(Inner::Regcollation)), - Inner::PgMcvList => &Kind::Simple, - Inner::PgSnapshot => &Kind::Simple, - Inner::PgSnapshotArray => &Kind::Array(Type(Inner::PgSnapshot)), - Inner::Xid8 => &Kind::Simple, - Inner::Anycompatible => &Kind::Pseudo, - Inner::Anycompatiblearray => &Kind::Pseudo, - Inner::Anycompatiblenonarray => &Kind::Pseudo, - Inner::AnycompatibleRange => &Kind::Pseudo, + Inner::Bool => { + &Kind::Simple + } + Inner::Bytea => { + &Kind::Simple + } + Inner::Char => { + &Kind::Simple + } + Inner::Name => { + &Kind::Simple + } + Inner::Int8 => { + &Kind::Simple + } + Inner::Int2 => { + &Kind::Simple + } + Inner::Int2Vector => { + &Kind::Array(Type(Inner::Int2)) + } + Inner::Int4 => { + &Kind::Simple + } + Inner::Regproc => { + &Kind::Simple + } + Inner::Text => { + &Kind::Simple + } + Inner::Oid => { + &Kind::Simple + } + Inner::Tid => { + &Kind::Simple + } + Inner::Xid => { + &Kind::Simple + } + Inner::Cid => { + &Kind::Simple + } + Inner::OidVector => { + &Kind::Array(Type(Inner::Oid)) + } + Inner::PgDdlCommand => { + &Kind::Pseudo + } + Inner::Json => { + &Kind::Simple + } + Inner::Xml => { + &Kind::Simple + } + Inner::XmlArray => { + &Kind::Array(Type(Inner::Xml)) + } + Inner::PgNodeTree => { + &Kind::Simple + } + Inner::JsonArray => { + &Kind::Array(Type(Inner::Json)) + } + Inner::TableAmHandler => { + &Kind::Pseudo + } + Inner::Xid8Array => { + &Kind::Array(Type(Inner::Xid8)) + } + Inner::IndexAmHandler => { + &Kind::Pseudo + } + Inner::Point => { + &Kind::Simple + } + Inner::Lseg => { + &Kind::Simple + } + Inner::Path => { + &Kind::Simple + } + Inner::Box => { + &Kind::Simple + } + Inner::Polygon => { + &Kind::Simple + } + Inner::Line => { + &Kind::Simple + } + Inner::LineArray => { + &Kind::Array(Type(Inner::Line)) + } + Inner::Cidr => { + &Kind::Simple + } + Inner::CidrArray => { + &Kind::Array(Type(Inner::Cidr)) + } + Inner::Float4 => { + &Kind::Simple + } + Inner::Float8 => { + &Kind::Simple + } + Inner::Unknown => { + &Kind::Simple + } + Inner::Circle => { + &Kind::Simple + } + Inner::CircleArray => { + &Kind::Array(Type(Inner::Circle)) + } + Inner::Macaddr8 => { + &Kind::Simple + } + Inner::Macaddr8Array => { + &Kind::Array(Type(Inner::Macaddr8)) + } + Inner::Money => { + &Kind::Simple + } + Inner::MoneyArray => { + &Kind::Array(Type(Inner::Money)) + } + Inner::Macaddr => { + &Kind::Simple + } + Inner::Inet => { + &Kind::Simple + } + Inner::BoolArray => { + &Kind::Array(Type(Inner::Bool)) + } + Inner::ByteaArray => { + &Kind::Array(Type(Inner::Bytea)) + } + Inner::CharArray => { + &Kind::Array(Type(Inner::Char)) + } + Inner::NameArray => { + &Kind::Array(Type(Inner::Name)) + } + Inner::Int2Array => { + &Kind::Array(Type(Inner::Int2)) + } + Inner::Int2VectorArray => { + &Kind::Array(Type(Inner::Int2Vector)) + } + Inner::Int4Array => { + &Kind::Array(Type(Inner::Int4)) + } + Inner::RegprocArray => { + &Kind::Array(Type(Inner::Regproc)) + } + Inner::TextArray => { + &Kind::Array(Type(Inner::Text)) + } + Inner::TidArray => { + &Kind::Array(Type(Inner::Tid)) + } + Inner::XidArray => { + &Kind::Array(Type(Inner::Xid)) + } + Inner::CidArray => { + &Kind::Array(Type(Inner::Cid)) + } + Inner::OidVectorArray => { + &Kind::Array(Type(Inner::OidVector)) + } + Inner::BpcharArray => { + &Kind::Array(Type(Inner::Bpchar)) + } + Inner::VarcharArray => { + &Kind::Array(Type(Inner::Varchar)) + } + Inner::Int8Array => { + &Kind::Array(Type(Inner::Int8)) + } + Inner::PointArray => { + &Kind::Array(Type(Inner::Point)) + } + Inner::LsegArray => { + &Kind::Array(Type(Inner::Lseg)) + } + Inner::PathArray => { + &Kind::Array(Type(Inner::Path)) + } + Inner::BoxArray => { + &Kind::Array(Type(Inner::Box)) + } + Inner::Float4Array => { + &Kind::Array(Type(Inner::Float4)) + } + Inner::Float8Array => { + &Kind::Array(Type(Inner::Float8)) + } + Inner::PolygonArray => { + &Kind::Array(Type(Inner::Polygon)) + } + Inner::OidArray => { + &Kind::Array(Type(Inner::Oid)) + } + Inner::Aclitem => { + &Kind::Simple + } + Inner::AclitemArray => { + &Kind::Array(Type(Inner::Aclitem)) + } + Inner::MacaddrArray => { + &Kind::Array(Type(Inner::Macaddr)) + } + Inner::InetArray => { + &Kind::Array(Type(Inner::Inet)) + } + Inner::Bpchar => { + &Kind::Simple + } + Inner::Varchar => { + &Kind::Simple + } + Inner::Date => { + &Kind::Simple + } + Inner::Time => { + &Kind::Simple + } + Inner::Timestamp => { + &Kind::Simple + } + Inner::TimestampArray => { + &Kind::Array(Type(Inner::Timestamp)) + } + Inner::DateArray => { + &Kind::Array(Type(Inner::Date)) + } + Inner::TimeArray => { + &Kind::Array(Type(Inner::Time)) + } + Inner::Timestamptz => { + &Kind::Simple + } + Inner::TimestamptzArray => { + &Kind::Array(Type(Inner::Timestamptz)) + } + Inner::Interval => { + &Kind::Simple + } + Inner::IntervalArray => { + &Kind::Array(Type(Inner::Interval)) + } + Inner::NumericArray => { + &Kind::Array(Type(Inner::Numeric)) + } + Inner::CstringArray => { + &Kind::Array(Type(Inner::Cstring)) + } + Inner::Timetz => { + &Kind::Simple + } + Inner::TimetzArray => { + &Kind::Array(Type(Inner::Timetz)) + } + Inner::Bit => { + &Kind::Simple + } + Inner::BitArray => { + &Kind::Array(Type(Inner::Bit)) + } + Inner::Varbit => { + &Kind::Simple + } + Inner::VarbitArray => { + &Kind::Array(Type(Inner::Varbit)) + } + Inner::Numeric => { + &Kind::Simple + } + Inner::Refcursor => { + &Kind::Simple + } + Inner::RefcursorArray => { + &Kind::Array(Type(Inner::Refcursor)) + } + Inner::Regprocedure => { + &Kind::Simple + } + Inner::Regoper => { + &Kind::Simple + } + Inner::Regoperator => { + &Kind::Simple + } + Inner::Regclass => { + &Kind::Simple + } + Inner::Regtype => { + &Kind::Simple + } + Inner::RegprocedureArray => { + &Kind::Array(Type(Inner::Regprocedure)) + } + Inner::RegoperArray => { + &Kind::Array(Type(Inner::Regoper)) + } + Inner::RegoperatorArray => { + &Kind::Array(Type(Inner::Regoperator)) + } + Inner::RegclassArray => { + &Kind::Array(Type(Inner::Regclass)) + } + Inner::RegtypeArray => { + &Kind::Array(Type(Inner::Regtype)) + } + Inner::Record => { + &Kind::Pseudo + } + Inner::Cstring => { + &Kind::Pseudo + } + Inner::Any => { + &Kind::Pseudo + } + Inner::Anyarray => { + &Kind::Pseudo + } + Inner::Void => { + &Kind::Pseudo + } + Inner::Trigger => { + &Kind::Pseudo + } + Inner::LanguageHandler => { + &Kind::Pseudo + } + Inner::Internal => { + &Kind::Pseudo + } + Inner::Anyelement => { + &Kind::Pseudo + } + Inner::RecordArray => { + &Kind::Pseudo + } + Inner::Anynonarray => { + &Kind::Pseudo + } + Inner::TxidSnapshotArray => { + &Kind::Array(Type(Inner::TxidSnapshot)) + } + Inner::Uuid => { + &Kind::Simple + } + Inner::UuidArray => { + &Kind::Array(Type(Inner::Uuid)) + } + Inner::TxidSnapshot => { + &Kind::Simple + } + Inner::FdwHandler => { + &Kind::Pseudo + } + Inner::PgLsn => { + &Kind::Simple + } + Inner::PgLsnArray => { + &Kind::Array(Type(Inner::PgLsn)) + } + Inner::TsmHandler => { + &Kind::Pseudo + } + Inner::PgNdistinct => { + &Kind::Simple + } + Inner::PgDependencies => { + &Kind::Simple + } + Inner::Anyenum => { + &Kind::Pseudo + } + Inner::TsVector => { + &Kind::Simple + } + Inner::Tsquery => { + &Kind::Simple + } + Inner::GtsVector => { + &Kind::Simple + } + Inner::TsVectorArray => { + &Kind::Array(Type(Inner::TsVector)) + } + Inner::GtsVectorArray => { + &Kind::Array(Type(Inner::GtsVector)) + } + Inner::TsqueryArray => { + &Kind::Array(Type(Inner::Tsquery)) + } + Inner::Regconfig => { + &Kind::Simple + } + Inner::RegconfigArray => { + &Kind::Array(Type(Inner::Regconfig)) + } + Inner::Regdictionary => { + &Kind::Simple + } + Inner::RegdictionaryArray => { + &Kind::Array(Type(Inner::Regdictionary)) + } + Inner::Jsonb => { + &Kind::Simple + } + Inner::JsonbArray => { + &Kind::Array(Type(Inner::Jsonb)) + } + Inner::AnyRange => { + &Kind::Pseudo + } + Inner::EventTrigger => { + &Kind::Pseudo + } + Inner::Int4Range => { + &Kind::Range(Type(Inner::Int4)) + } + Inner::Int4RangeArray => { + &Kind::Array(Type(Inner::Int4Range)) + } + Inner::NumRange => { + &Kind::Range(Type(Inner::Numeric)) + } + Inner::NumRangeArray => { + &Kind::Array(Type(Inner::NumRange)) + } + Inner::TsRange => { + &Kind::Range(Type(Inner::Timestamp)) + } + Inner::TsRangeArray => { + &Kind::Array(Type(Inner::TsRange)) + } + Inner::TstzRange => { + &Kind::Range(Type(Inner::Timestamptz)) + } + Inner::TstzRangeArray => { + &Kind::Array(Type(Inner::TstzRange)) + } + Inner::DateRange => { + &Kind::Range(Type(Inner::Date)) + } + Inner::DateRangeArray => { + &Kind::Array(Type(Inner::DateRange)) + } + Inner::Int8Range => { + &Kind::Range(Type(Inner::Int8)) + } + Inner::Int8RangeArray => { + &Kind::Array(Type(Inner::Int8Range)) + } + Inner::Jsonpath => { + &Kind::Simple + } + Inner::JsonpathArray => { + &Kind::Array(Type(Inner::Jsonpath)) + } + Inner::Regnamespace => { + &Kind::Simple + } + Inner::RegnamespaceArray => { + &Kind::Array(Type(Inner::Regnamespace)) + } + Inner::Regrole => { + &Kind::Simple + } + Inner::RegroleArray => { + &Kind::Array(Type(Inner::Regrole)) + } + Inner::Regcollation => { + &Kind::Simple + } + Inner::RegcollationArray => { + &Kind::Array(Type(Inner::Regcollation)) + } + Inner::Int4multiRange => { + &Kind::Range(Type(Inner::Int4)) + } + Inner::NummultiRange => { + &Kind::Range(Type(Inner::Numeric)) + } + Inner::TsmultiRange => { + &Kind::Range(Type(Inner::Timestamp)) + } + Inner::TstzmultiRange => { + &Kind::Range(Type(Inner::Timestamptz)) + } + Inner::DatemultiRange => { + &Kind::Range(Type(Inner::Date)) + } + Inner::Int8multiRange => { + &Kind::Range(Type(Inner::Int8)) + } + Inner::AnymultiRange => { + &Kind::Pseudo + } + Inner::AnycompatiblemultiRange => { + &Kind::Pseudo + } + Inner::PgBrinBloomSummary => { + &Kind::Simple + } + Inner::PgBrinMinmaxMultiSummary => { + &Kind::Simple + } + Inner::PgMcvList => { + &Kind::Simple + } + Inner::PgSnapshot => { + &Kind::Simple + } + Inner::PgSnapshotArray => { + &Kind::Array(Type(Inner::PgSnapshot)) + } + Inner::Xid8 => { + &Kind::Simple + } + Inner::Anycompatible => { + &Kind::Pseudo + } + Inner::Anycompatiblearray => { + &Kind::Pseudo + } + Inner::Anycompatiblenonarray => { + &Kind::Pseudo + } + Inner::AnycompatibleRange => { + &Kind::Pseudo + } + Inner::Int4multiRangeArray => { + &Kind::Array(Type(Inner::Int4multiRange)) + } + Inner::NummultiRangeArray => { + &Kind::Array(Type(Inner::NummultiRange)) + } + Inner::TsmultiRangeArray => { + &Kind::Array(Type(Inner::TsmultiRange)) + } + Inner::TstzmultiRangeArray => { + &Kind::Array(Type(Inner::TstzmultiRange)) + } + Inner::DatemultiRangeArray => { + &Kind::Array(Type(Inner::DatemultiRange)) + } + Inner::Int8multiRangeArray => { + &Kind::Array(Type(Inner::Int8multiRange)) + } Inner::Other(ref u) => &u.kind, } } @@ -874,6 +1308,16 @@ impl Inner { Inner::RegroleArray => "_regrole", Inner::Regcollation => "regcollation", Inner::RegcollationArray => "_regcollation", + Inner::Int4multiRange => "int4multirange", + Inner::NummultiRange => "nummultirange", + Inner::TsmultiRange => "tsmultirange", + Inner::TstzmultiRange => "tstzmultirange", + Inner::DatemultiRange => "datemultirange", + Inner::Int8multiRange => "int8multirange", + Inner::AnymultiRange => "anymultirange", + Inner::AnycompatiblemultiRange => "anycompatiblemultirange", + Inner::PgBrinBloomSummary => "pg_brin_bloom_summary", + Inner::PgBrinMinmaxMultiSummary => "pg_brin_minmax_multi_summary", Inner::PgMcvList => "pg_mcv_list", Inner::PgSnapshot => "pg_snapshot", Inner::PgSnapshotArray => "_pg_snapshot", @@ -882,6 +1326,12 @@ impl Inner { Inner::Anycompatiblearray => "anycompatiblearray", Inner::Anycompatiblenonarray => "anycompatiblenonarray", Inner::AnycompatibleRange => "anycompatiblerange", + Inner::Int4multiRangeArray => "_int4multirange", + Inner::NummultiRangeArray => "_nummultirange", + Inner::TsmultiRangeArray => "_tsmultirange", + Inner::TstzmultiRangeArray => "_tstzmultirange", + Inner::DatemultiRangeArray => "_datemultirange", + Inner::Int8multiRangeArray => "_int8multirange", Inner::Other(ref u) => &u.name, } } @@ -1370,6 +1820,36 @@ impl Type { /// REGCOLLATION[] pub const REGCOLLATION_ARRAY: Type = Type(Inner::RegcollationArray); + /// INT4MULTIRANGE - multirange of integers + pub const INT4MULTI_RANGE: Type = Type(Inner::Int4multiRange); + + /// NUMMULTIRANGE - multirange of numerics + pub const NUMMULTI_RANGE: Type = Type(Inner::NummultiRange); + + /// TSMULTIRANGE - multirange of timestamps without time zone + pub const TSMULTI_RANGE: Type = Type(Inner::TsmultiRange); + + /// TSTZMULTIRANGE - multirange of timestamps with time zone + pub const TSTZMULTI_RANGE: Type = Type(Inner::TstzmultiRange); + + /// DATEMULTIRANGE - multirange of dates + pub const DATEMULTI_RANGE: Type = Type(Inner::DatemultiRange); + + /// INT8MULTIRANGE - multirange of bigints + pub const INT8MULTI_RANGE: Type = Type(Inner::Int8multiRange); + + /// ANYMULTIRANGE - pseudo-type representing a polymorphic base type that is a multirange + pub const ANYMULTI_RANGE: Type = Type(Inner::AnymultiRange); + + /// ANYCOMPATIBLEMULTIRANGE - pseudo-type representing a multirange over a polymorphic common type + pub const ANYCOMPATIBLEMULTI_RANGE: Type = Type(Inner::AnycompatiblemultiRange); + + /// PG_BRIN_BLOOM_SUMMARY - BRIN bloom summary + pub const PG_BRIN_BLOOM_SUMMARY: Type = Type(Inner::PgBrinBloomSummary); + + /// PG_BRIN_MINMAX_MULTI_SUMMARY - BRIN minmax-multi summary + pub const PG_BRIN_MINMAX_MULTI_SUMMARY: Type = Type(Inner::PgBrinMinmaxMultiSummary); + /// PG_MCV_LIST - multivariate MCV list pub const PG_MCV_LIST: Type = Type(Inner::PgMcvList); @@ -1393,4 +1873,22 @@ impl Type { /// ANYCOMPATIBLERANGE - pseudo-type representing a range over a polymorphic common type pub const ANYCOMPATIBLE_RANGE: Type = Type(Inner::AnycompatibleRange); -} + + /// INT4MULTIRANGE[] + pub const INT4MULTI_RANGE_ARRAY: Type = Type(Inner::Int4multiRangeArray); + + /// NUMMULTIRANGE[] + pub const NUMMULTI_RANGE_ARRAY: Type = Type(Inner::NummultiRangeArray); + + /// TSMULTIRANGE[] + pub const TSMULTI_RANGE_ARRAY: Type = Type(Inner::TsmultiRangeArray); + + /// TSTZMULTIRANGE[] + pub const TSTZMULTI_RANGE_ARRAY: Type = Type(Inner::TstzmultiRangeArray); + + /// DATEMULTIRANGE[] + pub const DATEMULTI_RANGE_ARRAY: Type = Type(Inner::DatemultiRangeArray); + + /// INT8MULTIRANGE[] + pub const INT8MULTI_RANGE_ARRAY: Type = Type(Inner::Int8multiRangeArray); +} \ No newline at end of file diff --git a/tokio-postgres/src/error/sqlstate.rs b/tokio-postgres/src/error/sqlstate.rs index 4eb1ae2d..6f191fc1 100644 --- a/tokio-postgres/src/error/sqlstate.rs +++ b/tokio-postgres/src/error/sqlstate.rs @@ -114,6 +114,7 @@ impl SqlState { Inner::E2203D => "2203D", Inner::E2203E => "2203E", Inner::E2203F => "2203F", + Inner::E2203G => "2203G", Inner::E23000 => "23000", Inner::E23001 => "23001", Inner::E23502 => "23502", @@ -278,7 +279,7 @@ impl SqlState { Inner::Other(code) => code, } } - + /// 00000 pub const SUCCESSFUL_COMPLETION: SqlState = SqlState(Inner::E00000); @@ -364,8 +365,7 @@ impl SqlState { pub const DIAGNOSTICS_EXCEPTION: SqlState = SqlState(Inner::E0Z000); /// 0Z002 - pub const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER: SqlState = - SqlState(Inner::E0Z002); + pub const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER: SqlState = SqlState(Inner::E0Z002); /// 20000 pub const CASE_NOT_FOUND: SqlState = SqlState(Inner::E20000); @@ -580,6 +580,9 @@ impl SqlState { /// 2203F pub const SQL_JSON_SCALAR_REQUIRED: SqlState = SqlState(Inner::E2203F); + /// 2203G + pub const SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE: SqlState = SqlState(Inner::E2203G); + /// 23000 pub const INTEGRITY_CONSTRAINT_VIOLATION: SqlState = SqlState(Inner::E23000); @@ -620,8 +623,7 @@ impl SqlState { pub const INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION: SqlState = SqlState(Inner::E25003); /// 25004 - pub const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION: SqlState = - SqlState(Inner::E25004); + pub const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION: SqlState = SqlState(Inner::E25004); /// 25005 pub const NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION: SqlState = SqlState(Inner::E25005); @@ -1178,6 +1180,7 @@ enum Inner { E2203D, E2203E, E2203F, + E2203G, E23000, E23001, E23502, @@ -1341,324 +1344,325 @@ enum Inner { EXX002, Other(Box), } - + #[rustfmt::skip] static SQLSTATE_MAP: phf::Map<&'static str, SqlState> = ::phf::Map { key: 12913932095322966823, disps: &[ + (0, 24), (0, 12), - (0, 18), - (0, 25), - (0, 109), - (0, 147), (0, 74), - (0, 0), - (7, 117), - (5, 221), - (0, 26), - (1, 45), - (0, 93), - (0, 25), - (0, 61), - (1, 221), - (10, 17), - (0, 77), - (2, 3), - (0, 216), - (0, 0), - (0, 1), - (1, 168), - (0, 64), - (0, 2), - (0, 7), - (1, 37), - (0, 83), - (3, 24), - (0, 0), (0, 109), - (18, 9), - (1, 230), + (0, 11), + (0, 9), (0, 0), - (0, 4), + (4, 38), + (3, 155), + (0, 6), + (1, 242), + (0, 66), + (0, 53), + (5, 180), + (3, 221), + (7, 230), + (0, 125), + (1, 46), + (0, 11), + (1, 2), + (0, 5), + (0, 13), (0, 171), - (0, 0), - (34, 97), - (2, 126), - (44, 49), - (5, 182), - (0, 1), - (0, 1), - (0, 71), + (0, 15), (0, 4), - (5, 164), + (0, 22), + (1, 85), + (0, 75), + (2, 0), + (1, 25), + (7, 47), + (0, 45), + (0, 35), + (0, 7), + (7, 124), (0, 0), - (0, 96), - (13, 58), - (0, 58), - (0, 242), - (0, 72), - (16, 53), + (14, 104), + (1, 183), + (61, 50), + (3, 76), + (0, 12), + (0, 7), + (4, 189), + (0, 1), + (64, 102), + (0, 0), + (16, 192), + (24, 19), + (0, 5), + (0, 87), + (0, 89), + (0, 14), ], entries: &[ - ("22034", SqlState::MORE_THAN_ONE_SQL_JSON_ITEM), - ("40P01", SqlState::T_R_DEADLOCK_DETECTED), - ("42703", SqlState::UNDEFINED_COLUMN), - ("42P07", SqlState::DUPLICATE_TABLE), - ("55P04", SqlState::UNSAFE_NEW_ENUM_VALUE_USAGE), - ("25006", SqlState::READ_ONLY_SQL_TRANSACTION), - ("2201X", SqlState::INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE), - ("HV021", SqlState::FDW_INCONSISTENT_DESCRIPTOR_INFORMATION), - ("42P02", SqlState::UNDEFINED_PARAMETER), - ("HV00C", SqlState::FDW_INVALID_OPTION_INDEX), - ("08003", SqlState::CONNECTION_DOES_NOT_EXIST), - ("02000", SqlState::NO_DATA), - ("24000", SqlState::INVALID_CURSOR_STATE), - ("2203C", SqlState::SQL_JSON_OBJECT_NOT_FOUND), - ("42601", SqlState::SYNTAX_ERROR), - ("22012", SqlState::DIVISION_BY_ZERO), - ("2203B", SqlState::SQL_JSON_NUMBER_NOT_FOUND), - ("P0003", SqlState::TOO_MANY_ROWS), - ("57P04", SqlState::DATABASE_DROPPED), - ("27000", SqlState::TRIGGERED_DATA_CHANGE_VIOLATION), - ("42P08", SqlState::AMBIGUOUS_PARAMETER), - ("3F000", SqlState::INVALID_SCHEMA_NAME), - ("42883", SqlState::UNDEFINED_FUNCTION), - ("20000", SqlState::CASE_NOT_FOUND), - ("2200G", SqlState::MOST_SPECIFIC_TYPE_MISMATCH), - ("42939", SqlState::RESERVED_NAME), - ("42602", SqlState::INVALID_NAME), - ("HV004", SqlState::FDW_INVALID_DATA_TYPE), - ("HV007", SqlState::FDW_INVALID_COLUMN_NAME), - ("2F005", SqlState::S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT), - ("22030", SqlState::DUPLICATE_JSON_OBJECT_KEY_VALUE), - ("53100", SqlState::DISK_FULL), - ("HV005", SqlState::FDW_COLUMN_NAME_NOT_FOUND), - ("2200H", SqlState::SEQUENCE_GENERATOR_LIMIT_EXCEEDED), - ("2201W", SqlState::INVALID_ROW_COUNT_IN_LIMIT_CLAUSE), - ("42712", SqlState::DUPLICATE_ALIAS), - ("42622", SqlState::NAME_TOO_LONG), - ("22035", SqlState::NO_SQL_JSON_ITEM), - ("42P18", SqlState::INDETERMINATE_DATATYPE), - ("39P01", SqlState::E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), - ("01000", SqlState::WARNING), - ("2F004", SqlState::S_R_E_READING_SQL_DATA_NOT_PERMITTED), - ("22023", SqlState::INVALID_PARAMETER_VALUE), - ("2200T", SqlState::INVALID_XML_PROCESSING_INSTRUCTION), - ("22013", SqlState::INVALID_PRECEDING_OR_FOLLOWING_SIZE), - ("57P01", SqlState::ADMIN_SHUTDOWN), - ("2202E", SqlState::ARRAY_ELEMENT_ERROR), - ("22018", SqlState::INVALID_CHARACTER_VALUE_FOR_CAST), - ("0F000", SqlState::LOCATOR_EXCEPTION), - ("2D000", SqlState::INVALID_TRANSACTION_TERMINATION), - ("HV009", SqlState::FDW_INVALID_USE_OF_NULL_POINTER), - ("57000", SqlState::OPERATOR_INTERVENTION), - ("25002", SqlState::BRANCH_TRANSACTION_ALREADY_ACTIVE), - ("25004", SqlState::INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION), - ("22009", SqlState::INVALID_TIME_ZONE_DISPLACEMENT_VALUE), - ("HV090", SqlState::FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH), - ("42725", SqlState::AMBIGUOUS_FUNCTION), - ("2F003", SqlState::S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), - ("44000", SqlState::WITH_CHECK_OPTION_VIOLATION), - ("22032", SqlState::INVALID_JSON_TEXT), - ("22036", SqlState::NON_NUMERIC_SQL_JSON_ITEM), - ("2201E", SqlState::INVALID_ARGUMENT_FOR_LOG), - ("25P02", SqlState::IN_FAILED_SQL_TRANSACTION), - ("22001", SqlState::STRING_DATA_RIGHT_TRUNCATION), - ("2201F", SqlState::INVALID_ARGUMENT_FOR_POWER_FUNCTION), - ("01006", SqlState::WARNING_PRIVILEGE_NOT_REVOKED), - ("428C9", SqlState::GENERATED_ALWAYS), - ("22003", SqlState::NUMERIC_VALUE_OUT_OF_RANGE), - ("22P01", SqlState::FLOATING_POINT_EXCEPTION), - ("HV00M", SqlState::FDW_UNABLE_TO_CREATE_REPLY), - ("2201G", SqlState::INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION), - ("34000", SqlState::INVALID_CURSOR_NAME), - ("42846", SqlState::CANNOT_COERCE), - ("2201B", SqlState::INVALID_REGULAR_EXPRESSION), - ("2202G", SqlState::INVALID_TABLESAMPLE_REPEAT), - ("42704", SqlState::UNDEFINED_OBJECT), - ("72000", SqlState::SNAPSHOT_TOO_OLD), - ("53400", SqlState::CONFIGURATION_LIMIT_EXCEEDED), - ("HV00L", SqlState::FDW_UNABLE_TO_CREATE_EXECUTION), - ("2B000", SqlState::DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST), - ("22010", SqlState::INVALID_INDICATOR_PARAMETER_VALUE), - ("54001", SqlState::STATEMENT_TOO_COMPLEX), - ("53200", SqlState::OUT_OF_MEMORY), - ("38001", SqlState::E_R_E_CONTAINING_SQL_NOT_PERMITTED), - ("22022", SqlState::INDICATOR_OVERFLOW), - ("2203E", SqlState::TOO_MANY_JSON_OBJECT_MEMBERS), - ("XX000", SqlState::INTERNAL_ERROR), - ("22025", SqlState::INVALID_ESCAPE_SEQUENCE), - ("09000", SqlState::TRIGGERED_ACTION_EXCEPTION), - ("HV008", SqlState::FDW_INVALID_COLUMN_NUMBER), - ("25P01", SqlState::NO_ACTIVE_SQL_TRANSACTION), - ("23505", SqlState::UNIQUE_VIOLATION), - ("3B000", SqlState::SAVEPOINT_EXCEPTION), - ("F0000", SqlState::CONFIG_FILE_ERROR), - ("54011", SqlState::TOO_MANY_COLUMNS), - ("XX002", SqlState::INDEX_CORRUPTED), - ("2203F", SqlState::SQL_JSON_SCALAR_REQUIRED), - ("42P12", SqlState::INVALID_DATABASE_DEFINITION), - ("HV00B", SqlState::FDW_INVALID_HANDLE), - ("55006", SqlState::OBJECT_IN_USE), - ("42P01", SqlState::UNDEFINED_TABLE), - ("25P03", SqlState::IDLE_IN_TRANSACTION_SESSION_TIMEOUT), - ("57P05", SqlState::IDLE_SESSION_TIMEOUT), - ("22037", SqlState::NON_UNIQUE_KEYS_IN_A_JSON_OBJECT), - ("2203A", SqlState::SQL_JSON_MEMBER_NOT_FOUND), - ("P0004", SqlState::ASSERT_FAILURE), - ("58000", SqlState::SYSTEM_ERROR), - ("42P21", SqlState::COLLATION_MISMATCH), - ("57P02", SqlState::CRASH_SHUTDOWN), - ("42830", SqlState::INVALID_FOREIGN_KEY), - ("0LP01", SqlState::INVALID_GRANT_OPERATION), - ("22P02", SqlState::INVALID_TEXT_REPRESENTATION), - ("22039", SqlState::SQL_JSON_ARRAY_NOT_FOUND), - ("28P01", SqlState::INVALID_PASSWORD), - ("22011", SqlState::SUBSTRING_ERROR), - ("HV00J", SqlState::FDW_OPTION_NAME_NOT_FOUND), - ("2200C", SqlState::INVALID_USE_OF_ESCAPE_CHARACTER), - ("08006", SqlState::CONNECTION_FAILURE), - ("22021", SqlState::CHARACTER_NOT_IN_REPERTOIRE), - ("21000", SqlState::CARDINALITY_VIOLATION), - ("42803", SqlState::GROUPING_ERROR), - ("00000", SqlState::SUCCESSFUL_COMPLETION), - ("42P16", SqlState::INVALID_TABLE_DEFINITION), - ("38002", SqlState::E_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED), - ("57P03", SqlState::CANNOT_CONNECT_NOW), - ("01004", SqlState::WARNING_STRING_DATA_RIGHT_TRUNCATION), - ("HV00K", SqlState::FDW_REPLY_HANDLE), - ("42P06", SqlState::DUPLICATE_SCHEMA), - ("54000", SqlState::PROGRAM_LIMIT_EXCEEDED), - ("2200S", SqlState::INVALID_XML_COMMENT), - ("42000", SqlState::SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION), - ("42P03", SqlState::DUPLICATE_CURSOR), - ("HV002", SqlState::FDW_DYNAMIC_PARAMETER_VALUE_NEEDED), - ("2202H", SqlState::INVALID_TABLESAMPLE_ARGUMENT), - ("08001", SqlState::SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION), - ("0L000", SqlState::INVALID_GRANTOR), - ("2200L", SqlState::NOT_AN_XML_DOCUMENT), - ("HV006", SqlState::FDW_INVALID_DATA_TYPE_DESCRIPTORS), - ("55000", SqlState::OBJECT_NOT_IN_PREREQUISITE_STATE), - ("58P01", SqlState::UNDEFINED_FILE), - ("0B000", SqlState::INVALID_TRANSACTION_INITIATION), - ("22000", SqlState::DATA_EXCEPTION), - ("HV00R", SqlState::FDW_TABLE_NOT_FOUND), - ("2F002", SqlState::S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED), - ("01007", SqlState::WARNING_PRIVILEGE_NOT_GRANTED), - ("42P19", SqlState::INVALID_RECURSION), - ("22016", SqlState::INVALID_ARGUMENT_FOR_NTH_VALUE), - ("42702", SqlState::AMBIGUOUS_COLUMN), - ("25005", SqlState::NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION), - ("22004", SqlState::NULL_VALUE_NOT_ALLOWED), - ("42P05", SqlState::DUPLICATE_PSTATEMENT), - ("39001", SqlState::E_R_I_E_INVALID_SQLSTATE_RETURNED), - ("22038", SqlState::SINGLETON_SQL_JSON_ITEM_REQUIRED), - ("22008", SqlState::DATETIME_FIELD_OVERFLOW), - ("38003", SqlState::E_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), - ("53000", SqlState::INSUFFICIENT_RESOURCES), - ("3B001", SqlState::S_E_INVALID_SPECIFICATION), - ("28000", SqlState::INVALID_AUTHORIZATION_SPECIFICATION), - ("P0000", SqlState::PLPGSQL_ERROR), - ("38000", SqlState::EXTERNAL_ROUTINE_EXCEPTION), - ("22019", SqlState::INVALID_ESCAPE_CHARACTER), - ("22015", SqlState::INTERVAL_FIELD_OVERFLOW), - ("42710", SqlState::DUPLICATE_OBJECT), - ("2200M", SqlState::INVALID_XML_DOCUMENT), - ("HV000", SqlState::FDW_ERROR), - ("22P05", SqlState::UNTRANSLATABLE_CHARACTER), - ("0100C", SqlState::WARNING_DYNAMIC_RESULT_SETS_RETURNED), - ("55P02", SqlState::CANT_CHANGE_RUNTIME_PARAM), - ("01003", SqlState::WARNING_NULL_VALUE_ELIMINATED_IN_SET_FUNCTION), - ("2200N", SqlState::INVALID_XML_CONTENT), ("2F000", SqlState::SQL_ROUTINE_EXCEPTION), - ("08007", SqlState::TRANSACTION_RESOLUTION_UNKNOWN), - ("2200B", SqlState::ESCAPE_CHARACTER_CONFLICT), - ("22P03", SqlState::INVALID_BINARY_REPRESENTATION), - ("42P09", SqlState::AMBIGUOUS_ALIAS), - ("39004", SqlState::E_R_I_E_NULL_VALUE_NOT_ALLOWED), - ("23502", SqlState::NOT_NULL_VIOLATION), - ("2203D", SqlState::TOO_MANY_JSON_ARRAY_ELEMENTS), - ("42P15", SqlState::INVALID_SCHEMA_DEFINITION), - ("08004", SqlState::SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION), - ("HV00N", SqlState::FDW_UNABLE_TO_ESTABLISH_CONNECTION), - ("0A000", SqlState::FEATURE_NOT_SUPPORTED), - ("57014", SqlState::QUERY_CANCELED), - ("22033", SqlState::INVALID_SQL_JSON_SUBSCRIPT), - ("0F001", SqlState::L_E_INVALID_SPECIFICATION), - ("HV00A", SqlState::FDW_INVALID_STRING_FORMAT), - ("39P02", SqlState::E_R_I_E_SRF_PROTOCOL_VIOLATED), - ("42701", SqlState::DUPLICATE_COLUMN), - ("42611", SqlState::INVALID_COLUMN_DEFINITION), - ("HV001", SqlState::FDW_OUT_OF_MEMORY), - ("HV091", SqlState::FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER), - ("23P01", SqlState::EXCLUSION_VIOLATION), - ("F0001", SqlState::LOCK_FILE_EXISTS), - ("42501", SqlState::INSUFFICIENT_PRIVILEGE), - ("22026", SqlState::STRING_DATA_LENGTH_MISMATCH), - ("54023", SqlState::TOO_MANY_ARGUMENTS), ("01008", SqlState::WARNING_IMPLICIT_ZERO_BIT_PADDING), - ("42P04", SqlState::DUPLICATE_DATABASE), - ("22027", SqlState::TRIM_ERROR), - ("53300", SqlState::TOO_MANY_CONNECTIONS), - ("0Z002", SqlState::STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER), - ("42P14", SqlState::INVALID_PSTATEMENT_DEFINITION), - ("P0001", SqlState::RAISE_EXCEPTION), - ("HV014", SqlState::FDW_TOO_MANY_HANDLES), - ("40002", SqlState::T_R_INTEGRITY_CONSTRAINT_VIOLATION), - ("3D000", SqlState::INVALID_CATALOG_NAME), - ("03000", SqlState::SQL_STATEMENT_NOT_YET_COMPLETE), - ("22024", SqlState::UNTERMINATED_C_STRING), - ("42P13", SqlState::INVALID_FUNCTION_DEFINITION), - ("08000", SqlState::CONNECTION_EXCEPTION), - ("25007", SqlState::SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED), + ("42501", SqlState::INSUFFICIENT_PRIVILEGE), + ("22000", SqlState::DATA_EXCEPTION), + ("0100C", SqlState::WARNING_DYNAMIC_RESULT_SETS_RETURNED), + ("2200N", SqlState::INVALID_XML_CONTENT), ("40001", SqlState::T_R_SERIALIZATION_FAILURE), + ("28P01", SqlState::INVALID_PASSWORD), + ("38000", SqlState::EXTERNAL_ROUTINE_EXCEPTION), + ("25006", SqlState::READ_ONLY_SQL_TRANSACTION), + ("2203D", SqlState::TOO_MANY_JSON_ARRAY_ELEMENTS), + ("42P09", SqlState::AMBIGUOUS_ALIAS), + ("F0000", SqlState::CONFIG_FILE_ERROR), + ("42P18", SqlState::INDETERMINATE_DATATYPE), + ("40002", SqlState::T_R_INTEGRITY_CONSTRAINT_VIOLATION), + ("22009", SqlState::INVALID_TIME_ZONE_DISPLACEMENT_VALUE), + ("42P08", SqlState::AMBIGUOUS_PARAMETER), + ("08000", SqlState::CONNECTION_EXCEPTION), + ("25P01", SqlState::NO_ACTIVE_SQL_TRANSACTION), + ("22024", SqlState::UNTERMINATED_C_STRING), + ("55000", SqlState::OBJECT_NOT_IN_PREREQUISITE_STATE), ("25001", SqlState::ACTIVE_SQL_TRANSACTION), - ("HV00Q", SqlState::FDW_SCHEMA_NOT_FOUND), - ("22P04", SqlState::BAD_COPY_FILE_FORMAT), - ("XX001", SqlState::DATA_CORRUPTED), - ("23503", SqlState::FOREIGN_KEY_VIOLATION), - ("23514", SqlState::CHECK_VIOLATION), - ("42809", SqlState::WRONG_OBJECT_TYPE), - ("2200F", SqlState::ZERO_LENGTH_CHARACTER_STRING), - ("2BP01", SqlState::DEPENDENT_OBJECTS_STILL_EXIST), - ("25008", SqlState::HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL), - ("55P03", SqlState::LOCK_NOT_AVAILABLE), - ("42P22", SqlState::INDETERMINATE_COLLATION), - ("HV00D", SqlState::FDW_INVALID_OPTION_NAME), - ("42P17", SqlState::INVALID_OBJECT_DEFINITION), - ("23001", SqlState::RESTRICT_VIOLATION), - ("22P06", SqlState::NONSTANDARD_USE_OF_ESCAPE_CHARACTER), - ("22031", SqlState::INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION), - ("2200D", SqlState::INVALID_ESCAPE_OCTET), - ("0Z000", SqlState::DIAGNOSTICS_EXCEPTION), - ("HV024", SqlState::FDW_INVALID_ATTRIBUTE_VALUE), - ("22005", SqlState::ERROR_IN_ASSIGNMENT), - ("58P02", SqlState::DUPLICATE_FILE), - ("HV00P", SqlState::FDW_NO_SCHEMAS), - ("42P10", SqlState::INVALID_COLUMN_REFERENCE), - ("42P20", SqlState::WINDOWING_ERROR), - ("25000", SqlState::INVALID_TRANSACTION_STATE), - ("38004", SqlState::E_R_E_READING_SQL_DATA_NOT_PERMITTED), - ("01P01", SqlState::WARNING_DEPRECATED_FEATURE), - ("40000", SqlState::TRANSACTION_ROLLBACK), - ("58030", SqlState::IO_ERROR), - ("26000", SqlState::INVALID_SQL_STATEMENT_NAME), - ("22007", SqlState::INVALID_DATETIME_FORMAT), - ("23000", SqlState::INTEGRITY_CONSTRAINT_VIOLATION), - ("0P000", SqlState::INVALID_ROLE_SPECIFICATION), - ("22014", SqlState::INVALID_ARGUMENT_FOR_NTILE), + ("03000", SqlState::SQL_STATEMENT_NOT_YET_COMPLETE), + ("42710", SqlState::DUPLICATE_OBJECT), + ("2D000", SqlState::INVALID_TRANSACTION_TERMINATION), + ("2200G", SqlState::MOST_SPECIFIC_TYPE_MISMATCH), + ("22022", SqlState::INDICATOR_OVERFLOW), + ("55006", SqlState::OBJECT_IN_USE), + ("53200", SqlState::OUT_OF_MEMORY), + ("22012", SqlState::DIVISION_BY_ZERO), ("P0002", SqlState::NO_DATA_FOUND), - ("39P03", SqlState::E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED), - ("39000", SqlState::EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), - ("42P11", SqlState::INVALID_CURSOR_DEFINITION), - ("HV010", SqlState::FDW_FUNCTION_SEQUENCE_ERROR), - ("22002", SqlState::NULL_VALUE_NO_INDICATOR_PARAMETER), - ("08P01", SqlState::PROTOCOL_VIOLATION), - ("42723", SqlState::DUPLICATE_FUNCTION), + ("XX001", SqlState::DATA_CORRUPTED), + ("22P05", SqlState::UNTRANSLATABLE_CHARACTER), ("40003", SqlState::T_R_STATEMENT_COMPLETION_UNKNOWN), - ("25003", SqlState::INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION), - ("02001", SqlState::NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED), + ("22021", SqlState::CHARACTER_NOT_IN_REPERTOIRE), + ("25000", SqlState::INVALID_TRANSACTION_STATE), + ("42P15", SqlState::INVALID_SCHEMA_DEFINITION), + ("0B000", SqlState::INVALID_TRANSACTION_INITIATION), + ("22004", SqlState::NULL_VALUE_NOT_ALLOWED), ("42804", SqlState::DATATYPE_MISMATCH), + ("42803", SqlState::GROUPING_ERROR), + ("02001", SqlState::NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED), + ("25002", SqlState::BRANCH_TRANSACTION_ALREADY_ACTIVE), + ("28000", SqlState::INVALID_AUTHORIZATION_SPECIFICATION), + ("HV009", SqlState::FDW_INVALID_USE_OF_NULL_POINTER), + ("22P01", SqlState::FLOATING_POINT_EXCEPTION), + ("2B000", SqlState::DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST), + ("42723", SqlState::DUPLICATE_FUNCTION), + ("21000", SqlState::CARDINALITY_VIOLATION), + ("0Z002", SqlState::STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER), + ("23505", SqlState::UNIQUE_VIOLATION), + ("HV00J", SqlState::FDW_OPTION_NAME_NOT_FOUND), + ("23P01", SqlState::EXCLUSION_VIOLATION), + ("39P03", SqlState::E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED), + ("42P10", SqlState::INVALID_COLUMN_REFERENCE), + ("2202H", SqlState::INVALID_TABLESAMPLE_ARGUMENT), + ("55P04", SqlState::UNSAFE_NEW_ENUM_VALUE_USAGE), + ("P0000", SqlState::PLPGSQL_ERROR), + ("2F005", SqlState::S_R_E_FUNCTION_EXECUTED_NO_RETURN_STATEMENT), + ("HV00M", SqlState::FDW_UNABLE_TO_CREATE_REPLY), + ("0A000", SqlState::FEATURE_NOT_SUPPORTED), + ("24000", SqlState::INVALID_CURSOR_STATE), + ("25008", SqlState::HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL), + ("01003", SqlState::WARNING_NULL_VALUE_ELIMINATED_IN_SET_FUNCTION), + ("42712", SqlState::DUPLICATE_ALIAS), + ("HV014", SqlState::FDW_TOO_MANY_HANDLES), + ("58030", SqlState::IO_ERROR), + ("2201W", SqlState::INVALID_ROW_COUNT_IN_LIMIT_CLAUSE), + ("22033", SqlState::INVALID_SQL_JSON_SUBSCRIPT), + ("2BP01", SqlState::DEPENDENT_OBJECTS_STILL_EXIST), + ("HV005", SqlState::FDW_COLUMN_NAME_NOT_FOUND), + ("25004", SqlState::INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION), + ("54000", SqlState::PROGRAM_LIMIT_EXCEEDED), + ("20000", SqlState::CASE_NOT_FOUND), + ("2203G", SqlState::SQL_JSON_ITEM_CANNOT_BE_CAST_TO_TARGET_TYPE), + ("22038", SqlState::SINGLETON_SQL_JSON_ITEM_REQUIRED), + ("22007", SqlState::INVALID_DATETIME_FORMAT), + ("08004", SqlState::SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION), + ("2200H", SqlState::SEQUENCE_GENERATOR_LIMIT_EXCEEDED), + ("HV00D", SqlState::FDW_INVALID_OPTION_NAME), + ("P0004", SqlState::ASSERT_FAILURE), + ("22018", SqlState::INVALID_CHARACTER_VALUE_FOR_CAST), + ("0L000", SqlState::INVALID_GRANTOR), + ("22P04", SqlState::BAD_COPY_FILE_FORMAT), + ("22031", SqlState::INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION), + ("01P01", SqlState::WARNING_DEPRECATED_FEATURE), + ("0LP01", SqlState::INVALID_GRANT_OPERATION), + ("58P02", SqlState::DUPLICATE_FILE), + ("26000", SqlState::INVALID_SQL_STATEMENT_NAME), + ("54001", SqlState::STATEMENT_TOO_COMPLEX), + ("22010", SqlState::INVALID_INDICATOR_PARAMETER_VALUE), + ("HV00C", SqlState::FDW_INVALID_OPTION_INDEX), + ("22008", SqlState::DATETIME_FIELD_OVERFLOW), + ("42P06", SqlState::DUPLICATE_SCHEMA), + ("25007", SqlState::SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED), + ("42P20", SqlState::WINDOWING_ERROR), + ("HV091", SqlState::FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER), + ("HV021", SqlState::FDW_INCONSISTENT_DESCRIPTOR_INFORMATION), + ("42702", SqlState::AMBIGUOUS_COLUMN), + ("02000", SqlState::NO_DATA), + ("54011", SqlState::TOO_MANY_COLUMNS), + ("HV004", SqlState::FDW_INVALID_DATA_TYPE), + ("01006", SqlState::WARNING_PRIVILEGE_NOT_REVOKED), + ("42701", SqlState::DUPLICATE_COLUMN), + ("08P01", SqlState::PROTOCOL_VIOLATION), + ("42622", SqlState::NAME_TOO_LONG), + ("P0003", SqlState::TOO_MANY_ROWS), + ("22003", SqlState::NUMERIC_VALUE_OUT_OF_RANGE), + ("42P03", SqlState::DUPLICATE_CURSOR), + ("23001", SqlState::RESTRICT_VIOLATION), + ("57000", SqlState::OPERATOR_INTERVENTION), + ("22027", SqlState::TRIM_ERROR), + ("42P12", SqlState::INVALID_DATABASE_DEFINITION), + ("3B000", SqlState::SAVEPOINT_EXCEPTION), + ("2201B", SqlState::INVALID_REGULAR_EXPRESSION), + ("22030", SqlState::DUPLICATE_JSON_OBJECT_KEY_VALUE), + ("2F004", SqlState::S_R_E_READING_SQL_DATA_NOT_PERMITTED), + ("428C9", SqlState::GENERATED_ALWAYS), + ("2200S", SqlState::INVALID_XML_COMMENT), + ("22039", SqlState::SQL_JSON_ARRAY_NOT_FOUND), + ("42809", SqlState::WRONG_OBJECT_TYPE), + ("2201X", SqlState::INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE), + ("39001", SqlState::E_R_I_E_INVALID_SQLSTATE_RETURNED), + ("25P02", SqlState::IN_FAILED_SQL_TRANSACTION), + ("0P000", SqlState::INVALID_ROLE_SPECIFICATION), + ("HV00N", SqlState::FDW_UNABLE_TO_ESTABLISH_CONNECTION), + ("53100", SqlState::DISK_FULL), + ("42601", SqlState::SYNTAX_ERROR), + ("23000", SqlState::INTEGRITY_CONSTRAINT_VIOLATION), + ("HV006", SqlState::FDW_INVALID_DATA_TYPE_DESCRIPTORS), + ("HV00B", SqlState::FDW_INVALID_HANDLE), + ("HV00Q", SqlState::FDW_SCHEMA_NOT_FOUND), + ("01000", SqlState::WARNING), + ("42883", SqlState::UNDEFINED_FUNCTION), + ("57P01", SqlState::ADMIN_SHUTDOWN), + ("22037", SqlState::NON_UNIQUE_KEYS_IN_A_JSON_OBJECT), + ("00000", SqlState::SUCCESSFUL_COMPLETION), + ("55P03", SqlState::LOCK_NOT_AVAILABLE), + ("42P01", SqlState::UNDEFINED_TABLE), + ("42830", SqlState::INVALID_FOREIGN_KEY), + ("22005", SqlState::ERROR_IN_ASSIGNMENT), + ("22025", SqlState::INVALID_ESCAPE_SEQUENCE), + ("XX002", SqlState::INDEX_CORRUPTED), + ("42P16", SqlState::INVALID_TABLE_DEFINITION), + ("55P02", SqlState::CANT_CHANGE_RUNTIME_PARAM), + ("22019", SqlState::INVALID_ESCAPE_CHARACTER), + ("P0001", SqlState::RAISE_EXCEPTION), + ("72000", SqlState::SNAPSHOT_TOO_OLD), + ("42P11", SqlState::INVALID_CURSOR_DEFINITION), + ("40P01", SqlState::T_R_DEADLOCK_DETECTED), + ("57P02", SqlState::CRASH_SHUTDOWN), + ("HV00A", SqlState::FDW_INVALID_STRING_FORMAT), + ("2F002", SqlState::S_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED), + ("23503", SqlState::FOREIGN_KEY_VIOLATION), + ("40000", SqlState::TRANSACTION_ROLLBACK), + ("22032", SqlState::INVALID_JSON_TEXT), + ("2202E", SqlState::ARRAY_ELEMENT_ERROR), + ("42P19", SqlState::INVALID_RECURSION), + ("42611", SqlState::INVALID_COLUMN_DEFINITION), + ("42P13", SqlState::INVALID_FUNCTION_DEFINITION), + ("25003", SqlState::INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION), + ("39P02", SqlState::E_R_I_E_SRF_PROTOCOL_VIOLATED), + ("XX000", SqlState::INTERNAL_ERROR), + ("08006", SqlState::CONNECTION_FAILURE), + ("57P04", SqlState::DATABASE_DROPPED), + ("42P07", SqlState::DUPLICATE_TABLE), + ("22P03", SqlState::INVALID_BINARY_REPRESENTATION), + ("22035", SqlState::NO_SQL_JSON_ITEM), + ("42P14", SqlState::INVALID_PSTATEMENT_DEFINITION), + ("01007", SqlState::WARNING_PRIVILEGE_NOT_GRANTED), + ("38004", SqlState::E_R_E_READING_SQL_DATA_NOT_PERMITTED), + ("42P21", SqlState::COLLATION_MISMATCH), + ("0Z000", SqlState::DIAGNOSTICS_EXCEPTION), + ("HV001", SqlState::FDW_OUT_OF_MEMORY), + ("0F000", SqlState::LOCATOR_EXCEPTION), + ("22013", SqlState::INVALID_PRECEDING_OR_FOLLOWING_SIZE), + ("2201E", SqlState::INVALID_ARGUMENT_FOR_LOG), + ("22011", SqlState::SUBSTRING_ERROR), + ("42602", SqlState::INVALID_NAME), + ("01004", SqlState::WARNING_STRING_DATA_RIGHT_TRUNCATION), + ("42P02", SqlState::UNDEFINED_PARAMETER), + ("2203C", SqlState::SQL_JSON_OBJECT_NOT_FOUND), + ("HV002", SqlState::FDW_DYNAMIC_PARAMETER_VALUE_NEEDED), + ("0F001", SqlState::L_E_INVALID_SPECIFICATION), + ("58P01", SqlState::UNDEFINED_FILE), + ("38001", SqlState::E_R_E_CONTAINING_SQL_NOT_PERMITTED), + ("42703", SqlState::UNDEFINED_COLUMN), + ("57P05", SqlState::IDLE_SESSION_TIMEOUT), + ("57P03", SqlState::CANNOT_CONNECT_NOW), + ("HV007", SqlState::FDW_INVALID_COLUMN_NAME), + ("22014", SqlState::INVALID_ARGUMENT_FOR_NTILE), + ("22P06", SqlState::NONSTANDARD_USE_OF_ESCAPE_CHARACTER), + ("2203F", SqlState::SQL_JSON_SCALAR_REQUIRED), + ("2200F", SqlState::ZERO_LENGTH_CHARACTER_STRING), + ("09000", SqlState::TRIGGERED_ACTION_EXCEPTION), + ("2201F", SqlState::INVALID_ARGUMENT_FOR_POWER_FUNCTION), + ("08003", SqlState::CONNECTION_DOES_NOT_EXIST), + ("38002", SqlState::E_R_E_MODIFYING_SQL_DATA_NOT_PERMITTED), + ("F0001", SqlState::LOCK_FILE_EXISTS), + ("42P22", SqlState::INDETERMINATE_COLLATION), + ("2200C", SqlState::INVALID_USE_OF_ESCAPE_CHARACTER), + ("2203E", SqlState::TOO_MANY_JSON_OBJECT_MEMBERS), + ("23514", SqlState::CHECK_VIOLATION), + ("22P02", SqlState::INVALID_TEXT_REPRESENTATION), + ("54023", SqlState::TOO_MANY_ARGUMENTS), + ("2200T", SqlState::INVALID_XML_PROCESSING_INSTRUCTION), + ("22016", SqlState::INVALID_ARGUMENT_FOR_NTH_VALUE), + ("25P03", SqlState::IDLE_IN_TRANSACTION_SESSION_TIMEOUT), + ("3B001", SqlState::S_E_INVALID_SPECIFICATION), + ("08001", SqlState::SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION), + ("22036", SqlState::NON_NUMERIC_SQL_JSON_ITEM), + ("3F000", SqlState::INVALID_SCHEMA_NAME), + ("39P01", SqlState::E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), + ("22026", SqlState::STRING_DATA_LENGTH_MISMATCH), + ("42P17", SqlState::INVALID_OBJECT_DEFINITION), + ("22034", SqlState::MORE_THAN_ONE_SQL_JSON_ITEM), + ("HV000", SqlState::FDW_ERROR), + ("2200B", SqlState::ESCAPE_CHARACTER_CONFLICT), + ("HV008", SqlState::FDW_INVALID_COLUMN_NUMBER), + ("34000", SqlState::INVALID_CURSOR_NAME), + ("2201G", SqlState::INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION), + ("44000", SqlState::WITH_CHECK_OPTION_VIOLATION), + ("HV010", SqlState::FDW_FUNCTION_SEQUENCE_ERROR), + ("39004", SqlState::E_R_I_E_NULL_VALUE_NOT_ALLOWED), + ("22001", SqlState::STRING_DATA_RIGHT_TRUNCATION), + ("3D000", SqlState::INVALID_CATALOG_NAME), + ("25005", SqlState::NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION), + ("2200L", SqlState::NOT_AN_XML_DOCUMENT), + ("27000", SqlState::TRIGGERED_DATA_CHANGE_VIOLATION), + ("HV090", SqlState::FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH), + ("42939", SqlState::RESERVED_NAME), + ("58000", SqlState::SYSTEM_ERROR), + ("2200M", SqlState::INVALID_XML_DOCUMENT), + ("HV00L", SqlState::FDW_UNABLE_TO_CREATE_EXECUTION), + ("57014", SqlState::QUERY_CANCELED), + ("23502", SqlState::NOT_NULL_VIOLATION), + ("22002", SqlState::NULL_VALUE_NO_INDICATOR_PARAMETER), + ("HV00R", SqlState::FDW_TABLE_NOT_FOUND), + ("HV00P", SqlState::FDW_NO_SCHEMAS), + ("38003", SqlState::E_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), + ("39000", SqlState::EXTERNAL_ROUTINE_INVOCATION_EXCEPTION), + ("22015", SqlState::INTERVAL_FIELD_OVERFLOW), + ("HV00K", SqlState::FDW_REPLY_HANDLE), + ("HV024", SqlState::FDW_INVALID_ATTRIBUTE_VALUE), + ("2200D", SqlState::INVALID_ESCAPE_OCTET), + ("08007", SqlState::TRANSACTION_RESOLUTION_UNKNOWN), + ("2F003", SqlState::S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), + ("42725", SqlState::AMBIGUOUS_FUNCTION), + ("2203A", SqlState::SQL_JSON_MEMBER_NOT_FOUND), + ("42846", SqlState::CANNOT_COERCE), + ("42P04", SqlState::DUPLICATE_DATABASE), + ("42000", SqlState::SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION), + ("2203B", SqlState::SQL_JSON_NUMBER_NOT_FOUND), + ("42P05", SqlState::DUPLICATE_PSTATEMENT), + ("53300", SqlState::TOO_MANY_CONNECTIONS), + ("53400", SqlState::CONFIGURATION_LIMIT_EXCEEDED), + ("42704", SqlState::UNDEFINED_OBJECT), + ("2202G", SqlState::INVALID_TABLESAMPLE_REPEAT), + ("22023", SqlState::INVALID_PARAMETER_VALUE), + ("53000", SqlState::INSUFFICIENT_RESOURCES), ], }; From 0c86f9362fe98a584fb80828650b22417bb661a2 Mon Sep 17 00:00:00 2001 From: Joseph Koshakow Date: Mon, 21 Nov 2022 16:52:58 -0500 Subject: [PATCH 4/4] Add multirange kind and run cargo fmt --- codegen/src/type_gen.rs | 24 +- postgres-types/src/lib.rs | 2 + postgres-types/src/type_gen.rs | 744 +++++++-------------------- tokio-postgres/src/error/sqlstate.rs | 10 +- 4 files changed, 216 insertions(+), 564 deletions(-) diff --git a/codegen/src/type_gen.rs b/codegen/src/type_gen.rs index 249c5530..fd7a5645 100644 --- a/codegen/src/type_gen.rs +++ b/codegen/src/type_gen.rs @@ -17,6 +17,7 @@ struct Type { variant: String, ident: String, kind: String, + typtype: Option, element: u32, doc: String, } @@ -217,12 +218,18 @@ fn parse_types() -> BTreeMap { continue; } + let typtype = raw_type.get("typtype").cloned(); + let element = match &*kind { - "R" => match &*raw_type["typtype"] { + "R" => match typtype + .as_ref() + .expect("range type must have typtype") + .as_str() + { "r" => range_elements[&oid], "m" => multi_range_elements[&oid], typtype => panic!("invalid range typtype {}", typtype), - } + }, "A" => oids_by_name[&raw_type["typelem"]], _ => 0, }; @@ -248,6 +255,7 @@ fn parse_types() -> BTreeMap { variant, ident, kind: "A".to_string(), + typtype: None, element: oid, doc, }; @@ -259,6 +267,7 @@ fn parse_types() -> BTreeMap { variant, ident, kind, + typtype, element, doc, }; @@ -362,7 +371,16 @@ fn make_impl(w: &mut BufWriter, types: &BTreeMap) { let kind = match &*type_.kind { "P" => "Pseudo".to_owned(), "A" => format!("Array(Type(Inner::{}))", types[&type_.element].variant), - "R" => format!("Range(Type(Inner::{}))", types[&type_.element].variant), + "R" => match type_ + .typtype + .as_ref() + .expect("range type must have typtype") + .as_str() + { + "r" => format!("Range(Type(Inner::{}))", types[&type_.element].variant), + "m" => format!("Multirange(Type(Inner::{}))", types[&type_.element].variant), + typtype => panic!("invalid range typtype {}", typtype), + }, _ => "Simple".to_owned(), }; diff --git a/postgres-types/src/lib.rs b/postgres-types/src/lib.rs index ca4233f8..fa49d99e 100644 --- a/postgres-types/src/lib.rs +++ b/postgres-types/src/lib.rs @@ -320,6 +320,8 @@ pub enum Kind { Array(Type), /// A range type along with the type of its elements. Range(Type), + /// A multirange type along with the type of its elements. + Multirange(Type), /// A domain type along with its underlying type. Domain(Type), /// A composite type along with information about its fields. diff --git a/postgres-types/src/type_gen.rs b/postgres-types/src/type_gen.rs index 901fb46e..a1bc3f85 100644 --- a/postgres-types/src/type_gen.rs +++ b/postgres-types/src/type_gen.rs @@ -1,7 +1,7 @@ // Autogenerated file - DO NOT EDIT use std::sync::Arc; -use crate::{Type, Oid, Kind}; +use crate::{Kind, Oid, Type}; #[derive(PartialEq, Eq, Debug, Hash)] pub struct Other { @@ -586,561 +586,191 @@ impl Inner { pub fn kind(&self) -> &Kind { match *self { - Inner::Bool => { - &Kind::Simple - } - Inner::Bytea => { - &Kind::Simple - } - Inner::Char => { - &Kind::Simple - } - Inner::Name => { - &Kind::Simple - } - Inner::Int8 => { - &Kind::Simple - } - Inner::Int2 => { - &Kind::Simple - } - Inner::Int2Vector => { - &Kind::Array(Type(Inner::Int2)) - } - Inner::Int4 => { - &Kind::Simple - } - Inner::Regproc => { - &Kind::Simple - } - Inner::Text => { - &Kind::Simple - } - Inner::Oid => { - &Kind::Simple - } - Inner::Tid => { - &Kind::Simple - } - Inner::Xid => { - &Kind::Simple - } - Inner::Cid => { - &Kind::Simple - } - Inner::OidVector => { - &Kind::Array(Type(Inner::Oid)) - } - Inner::PgDdlCommand => { - &Kind::Pseudo - } - Inner::Json => { - &Kind::Simple - } - Inner::Xml => { - &Kind::Simple - } - Inner::XmlArray => { - &Kind::Array(Type(Inner::Xml)) - } - Inner::PgNodeTree => { - &Kind::Simple - } - Inner::JsonArray => { - &Kind::Array(Type(Inner::Json)) - } - Inner::TableAmHandler => { - &Kind::Pseudo - } - Inner::Xid8Array => { - &Kind::Array(Type(Inner::Xid8)) - } - Inner::IndexAmHandler => { - &Kind::Pseudo - } - Inner::Point => { - &Kind::Simple - } - Inner::Lseg => { - &Kind::Simple - } - Inner::Path => { - &Kind::Simple - } - Inner::Box => { - &Kind::Simple - } - Inner::Polygon => { - &Kind::Simple - } - Inner::Line => { - &Kind::Simple - } - Inner::LineArray => { - &Kind::Array(Type(Inner::Line)) - } - Inner::Cidr => { - &Kind::Simple - } - Inner::CidrArray => { - &Kind::Array(Type(Inner::Cidr)) - } - Inner::Float4 => { - &Kind::Simple - } - Inner::Float8 => { - &Kind::Simple - } - Inner::Unknown => { - &Kind::Simple - } - Inner::Circle => { - &Kind::Simple - } - Inner::CircleArray => { - &Kind::Array(Type(Inner::Circle)) - } - Inner::Macaddr8 => { - &Kind::Simple - } - Inner::Macaddr8Array => { - &Kind::Array(Type(Inner::Macaddr8)) - } - Inner::Money => { - &Kind::Simple - } - Inner::MoneyArray => { - &Kind::Array(Type(Inner::Money)) - } - Inner::Macaddr => { - &Kind::Simple - } - Inner::Inet => { - &Kind::Simple - } - Inner::BoolArray => { - &Kind::Array(Type(Inner::Bool)) - } - Inner::ByteaArray => { - &Kind::Array(Type(Inner::Bytea)) - } - Inner::CharArray => { - &Kind::Array(Type(Inner::Char)) - } - Inner::NameArray => { - &Kind::Array(Type(Inner::Name)) - } - Inner::Int2Array => { - &Kind::Array(Type(Inner::Int2)) - } - Inner::Int2VectorArray => { - &Kind::Array(Type(Inner::Int2Vector)) - } - Inner::Int4Array => { - &Kind::Array(Type(Inner::Int4)) - } - Inner::RegprocArray => { - &Kind::Array(Type(Inner::Regproc)) - } - Inner::TextArray => { - &Kind::Array(Type(Inner::Text)) - } - Inner::TidArray => { - &Kind::Array(Type(Inner::Tid)) - } - Inner::XidArray => { - &Kind::Array(Type(Inner::Xid)) - } - Inner::CidArray => { - &Kind::Array(Type(Inner::Cid)) - } - Inner::OidVectorArray => { - &Kind::Array(Type(Inner::OidVector)) - } - Inner::BpcharArray => { - &Kind::Array(Type(Inner::Bpchar)) - } - Inner::VarcharArray => { - &Kind::Array(Type(Inner::Varchar)) - } - Inner::Int8Array => { - &Kind::Array(Type(Inner::Int8)) - } - Inner::PointArray => { - &Kind::Array(Type(Inner::Point)) - } - Inner::LsegArray => { - &Kind::Array(Type(Inner::Lseg)) - } - Inner::PathArray => { - &Kind::Array(Type(Inner::Path)) - } - Inner::BoxArray => { - &Kind::Array(Type(Inner::Box)) - } - Inner::Float4Array => { - &Kind::Array(Type(Inner::Float4)) - } - Inner::Float8Array => { - &Kind::Array(Type(Inner::Float8)) - } - Inner::PolygonArray => { - &Kind::Array(Type(Inner::Polygon)) - } - Inner::OidArray => { - &Kind::Array(Type(Inner::Oid)) - } - Inner::Aclitem => { - &Kind::Simple - } - Inner::AclitemArray => { - &Kind::Array(Type(Inner::Aclitem)) - } - Inner::MacaddrArray => { - &Kind::Array(Type(Inner::Macaddr)) - } - Inner::InetArray => { - &Kind::Array(Type(Inner::Inet)) - } - Inner::Bpchar => { - &Kind::Simple - } - Inner::Varchar => { - &Kind::Simple - } - Inner::Date => { - &Kind::Simple - } - Inner::Time => { - &Kind::Simple - } - Inner::Timestamp => { - &Kind::Simple - } - Inner::TimestampArray => { - &Kind::Array(Type(Inner::Timestamp)) - } - Inner::DateArray => { - &Kind::Array(Type(Inner::Date)) - } - Inner::TimeArray => { - &Kind::Array(Type(Inner::Time)) - } - Inner::Timestamptz => { - &Kind::Simple - } - Inner::TimestamptzArray => { - &Kind::Array(Type(Inner::Timestamptz)) - } - Inner::Interval => { - &Kind::Simple - } - Inner::IntervalArray => { - &Kind::Array(Type(Inner::Interval)) - } - Inner::NumericArray => { - &Kind::Array(Type(Inner::Numeric)) - } - Inner::CstringArray => { - &Kind::Array(Type(Inner::Cstring)) - } - Inner::Timetz => { - &Kind::Simple - } - Inner::TimetzArray => { - &Kind::Array(Type(Inner::Timetz)) - } - Inner::Bit => { - &Kind::Simple - } - Inner::BitArray => { - &Kind::Array(Type(Inner::Bit)) - } - Inner::Varbit => { - &Kind::Simple - } - Inner::VarbitArray => { - &Kind::Array(Type(Inner::Varbit)) - } - Inner::Numeric => { - &Kind::Simple - } - Inner::Refcursor => { - &Kind::Simple - } - Inner::RefcursorArray => { - &Kind::Array(Type(Inner::Refcursor)) - } - Inner::Regprocedure => { - &Kind::Simple - } - Inner::Regoper => { - &Kind::Simple - } - Inner::Regoperator => { - &Kind::Simple - } - Inner::Regclass => { - &Kind::Simple - } - Inner::Regtype => { - &Kind::Simple - } - Inner::RegprocedureArray => { - &Kind::Array(Type(Inner::Regprocedure)) - } - Inner::RegoperArray => { - &Kind::Array(Type(Inner::Regoper)) - } - Inner::RegoperatorArray => { - &Kind::Array(Type(Inner::Regoperator)) - } - Inner::RegclassArray => { - &Kind::Array(Type(Inner::Regclass)) - } - Inner::RegtypeArray => { - &Kind::Array(Type(Inner::Regtype)) - } - Inner::Record => { - &Kind::Pseudo - } - Inner::Cstring => { - &Kind::Pseudo - } - Inner::Any => { - &Kind::Pseudo - } - Inner::Anyarray => { - &Kind::Pseudo - } - Inner::Void => { - &Kind::Pseudo - } - Inner::Trigger => { - &Kind::Pseudo - } - Inner::LanguageHandler => { - &Kind::Pseudo - } - Inner::Internal => { - &Kind::Pseudo - } - Inner::Anyelement => { - &Kind::Pseudo - } - Inner::RecordArray => { - &Kind::Pseudo - } - Inner::Anynonarray => { - &Kind::Pseudo - } - Inner::TxidSnapshotArray => { - &Kind::Array(Type(Inner::TxidSnapshot)) - } - Inner::Uuid => { - &Kind::Simple - } - Inner::UuidArray => { - &Kind::Array(Type(Inner::Uuid)) - } - Inner::TxidSnapshot => { - &Kind::Simple - } - Inner::FdwHandler => { - &Kind::Pseudo - } - Inner::PgLsn => { - &Kind::Simple - } - Inner::PgLsnArray => { - &Kind::Array(Type(Inner::PgLsn)) - } - Inner::TsmHandler => { - &Kind::Pseudo - } - Inner::PgNdistinct => { - &Kind::Simple - } - Inner::PgDependencies => { - &Kind::Simple - } - Inner::Anyenum => { - &Kind::Pseudo - } - Inner::TsVector => { - &Kind::Simple - } - Inner::Tsquery => { - &Kind::Simple - } - Inner::GtsVector => { - &Kind::Simple - } - Inner::TsVectorArray => { - &Kind::Array(Type(Inner::TsVector)) - } - Inner::GtsVectorArray => { - &Kind::Array(Type(Inner::GtsVector)) - } - Inner::TsqueryArray => { - &Kind::Array(Type(Inner::Tsquery)) - } - Inner::Regconfig => { - &Kind::Simple - } - Inner::RegconfigArray => { - &Kind::Array(Type(Inner::Regconfig)) - } - Inner::Regdictionary => { - &Kind::Simple - } - Inner::RegdictionaryArray => { - &Kind::Array(Type(Inner::Regdictionary)) - } - Inner::Jsonb => { - &Kind::Simple - } - Inner::JsonbArray => { - &Kind::Array(Type(Inner::Jsonb)) - } - Inner::AnyRange => { - &Kind::Pseudo - } - Inner::EventTrigger => { - &Kind::Pseudo - } - Inner::Int4Range => { - &Kind::Range(Type(Inner::Int4)) - } - Inner::Int4RangeArray => { - &Kind::Array(Type(Inner::Int4Range)) - } - Inner::NumRange => { - &Kind::Range(Type(Inner::Numeric)) - } - Inner::NumRangeArray => { - &Kind::Array(Type(Inner::NumRange)) - } - Inner::TsRange => { - &Kind::Range(Type(Inner::Timestamp)) - } - Inner::TsRangeArray => { - &Kind::Array(Type(Inner::TsRange)) - } - Inner::TstzRange => { - &Kind::Range(Type(Inner::Timestamptz)) - } - Inner::TstzRangeArray => { - &Kind::Array(Type(Inner::TstzRange)) - } - Inner::DateRange => { - &Kind::Range(Type(Inner::Date)) - } - Inner::DateRangeArray => { - &Kind::Array(Type(Inner::DateRange)) - } - Inner::Int8Range => { - &Kind::Range(Type(Inner::Int8)) - } - Inner::Int8RangeArray => { - &Kind::Array(Type(Inner::Int8Range)) - } - Inner::Jsonpath => { - &Kind::Simple - } - Inner::JsonpathArray => { - &Kind::Array(Type(Inner::Jsonpath)) - } - Inner::Regnamespace => { - &Kind::Simple - } - Inner::RegnamespaceArray => { - &Kind::Array(Type(Inner::Regnamespace)) - } - Inner::Regrole => { - &Kind::Simple - } - Inner::RegroleArray => { - &Kind::Array(Type(Inner::Regrole)) - } - Inner::Regcollation => { - &Kind::Simple - } - Inner::RegcollationArray => { - &Kind::Array(Type(Inner::Regcollation)) - } - Inner::Int4multiRange => { - &Kind::Range(Type(Inner::Int4)) - } - Inner::NummultiRange => { - &Kind::Range(Type(Inner::Numeric)) - } - Inner::TsmultiRange => { - &Kind::Range(Type(Inner::Timestamp)) - } - Inner::TstzmultiRange => { - &Kind::Range(Type(Inner::Timestamptz)) - } - Inner::DatemultiRange => { - &Kind::Range(Type(Inner::Date)) - } - Inner::Int8multiRange => { - &Kind::Range(Type(Inner::Int8)) - } - Inner::AnymultiRange => { - &Kind::Pseudo - } - Inner::AnycompatiblemultiRange => { - &Kind::Pseudo - } - Inner::PgBrinBloomSummary => { - &Kind::Simple - } - Inner::PgBrinMinmaxMultiSummary => { - &Kind::Simple - } - Inner::PgMcvList => { - &Kind::Simple - } - Inner::PgSnapshot => { - &Kind::Simple - } - Inner::PgSnapshotArray => { - &Kind::Array(Type(Inner::PgSnapshot)) - } - Inner::Xid8 => { - &Kind::Simple - } - Inner::Anycompatible => { - &Kind::Pseudo - } - Inner::Anycompatiblearray => { - &Kind::Pseudo - } - Inner::Anycompatiblenonarray => { - &Kind::Pseudo - } - Inner::AnycompatibleRange => { - &Kind::Pseudo - } - Inner::Int4multiRangeArray => { - &Kind::Array(Type(Inner::Int4multiRange)) - } - Inner::NummultiRangeArray => { - &Kind::Array(Type(Inner::NummultiRange)) - } - Inner::TsmultiRangeArray => { - &Kind::Array(Type(Inner::TsmultiRange)) - } - Inner::TstzmultiRangeArray => { - &Kind::Array(Type(Inner::TstzmultiRange)) - } - Inner::DatemultiRangeArray => { - &Kind::Array(Type(Inner::DatemultiRange)) - } - Inner::Int8multiRangeArray => { - &Kind::Array(Type(Inner::Int8multiRange)) - } + Inner::Bool => &Kind::Simple, + Inner::Bytea => &Kind::Simple, + Inner::Char => &Kind::Simple, + Inner::Name => &Kind::Simple, + Inner::Int8 => &Kind::Simple, + Inner::Int2 => &Kind::Simple, + Inner::Int2Vector => &Kind::Array(Type(Inner::Int2)), + Inner::Int4 => &Kind::Simple, + Inner::Regproc => &Kind::Simple, + Inner::Text => &Kind::Simple, + Inner::Oid => &Kind::Simple, + Inner::Tid => &Kind::Simple, + Inner::Xid => &Kind::Simple, + Inner::Cid => &Kind::Simple, + Inner::OidVector => &Kind::Array(Type(Inner::Oid)), + Inner::PgDdlCommand => &Kind::Pseudo, + Inner::Json => &Kind::Simple, + Inner::Xml => &Kind::Simple, + Inner::XmlArray => &Kind::Array(Type(Inner::Xml)), + Inner::PgNodeTree => &Kind::Simple, + Inner::JsonArray => &Kind::Array(Type(Inner::Json)), + Inner::TableAmHandler => &Kind::Pseudo, + Inner::Xid8Array => &Kind::Array(Type(Inner::Xid8)), + Inner::IndexAmHandler => &Kind::Pseudo, + Inner::Point => &Kind::Simple, + Inner::Lseg => &Kind::Simple, + Inner::Path => &Kind::Simple, + Inner::Box => &Kind::Simple, + Inner::Polygon => &Kind::Simple, + Inner::Line => &Kind::Simple, + Inner::LineArray => &Kind::Array(Type(Inner::Line)), + Inner::Cidr => &Kind::Simple, + Inner::CidrArray => &Kind::Array(Type(Inner::Cidr)), + Inner::Float4 => &Kind::Simple, + Inner::Float8 => &Kind::Simple, + Inner::Unknown => &Kind::Simple, + Inner::Circle => &Kind::Simple, + Inner::CircleArray => &Kind::Array(Type(Inner::Circle)), + Inner::Macaddr8 => &Kind::Simple, + Inner::Macaddr8Array => &Kind::Array(Type(Inner::Macaddr8)), + Inner::Money => &Kind::Simple, + Inner::MoneyArray => &Kind::Array(Type(Inner::Money)), + Inner::Macaddr => &Kind::Simple, + Inner::Inet => &Kind::Simple, + Inner::BoolArray => &Kind::Array(Type(Inner::Bool)), + Inner::ByteaArray => &Kind::Array(Type(Inner::Bytea)), + Inner::CharArray => &Kind::Array(Type(Inner::Char)), + Inner::NameArray => &Kind::Array(Type(Inner::Name)), + Inner::Int2Array => &Kind::Array(Type(Inner::Int2)), + Inner::Int2VectorArray => &Kind::Array(Type(Inner::Int2Vector)), + Inner::Int4Array => &Kind::Array(Type(Inner::Int4)), + Inner::RegprocArray => &Kind::Array(Type(Inner::Regproc)), + Inner::TextArray => &Kind::Array(Type(Inner::Text)), + Inner::TidArray => &Kind::Array(Type(Inner::Tid)), + Inner::XidArray => &Kind::Array(Type(Inner::Xid)), + Inner::CidArray => &Kind::Array(Type(Inner::Cid)), + Inner::OidVectorArray => &Kind::Array(Type(Inner::OidVector)), + Inner::BpcharArray => &Kind::Array(Type(Inner::Bpchar)), + Inner::VarcharArray => &Kind::Array(Type(Inner::Varchar)), + Inner::Int8Array => &Kind::Array(Type(Inner::Int8)), + Inner::PointArray => &Kind::Array(Type(Inner::Point)), + Inner::LsegArray => &Kind::Array(Type(Inner::Lseg)), + Inner::PathArray => &Kind::Array(Type(Inner::Path)), + Inner::BoxArray => &Kind::Array(Type(Inner::Box)), + Inner::Float4Array => &Kind::Array(Type(Inner::Float4)), + Inner::Float8Array => &Kind::Array(Type(Inner::Float8)), + Inner::PolygonArray => &Kind::Array(Type(Inner::Polygon)), + Inner::OidArray => &Kind::Array(Type(Inner::Oid)), + Inner::Aclitem => &Kind::Simple, + Inner::AclitemArray => &Kind::Array(Type(Inner::Aclitem)), + Inner::MacaddrArray => &Kind::Array(Type(Inner::Macaddr)), + Inner::InetArray => &Kind::Array(Type(Inner::Inet)), + Inner::Bpchar => &Kind::Simple, + Inner::Varchar => &Kind::Simple, + Inner::Date => &Kind::Simple, + Inner::Time => &Kind::Simple, + Inner::Timestamp => &Kind::Simple, + Inner::TimestampArray => &Kind::Array(Type(Inner::Timestamp)), + Inner::DateArray => &Kind::Array(Type(Inner::Date)), + Inner::TimeArray => &Kind::Array(Type(Inner::Time)), + Inner::Timestamptz => &Kind::Simple, + Inner::TimestamptzArray => &Kind::Array(Type(Inner::Timestamptz)), + Inner::Interval => &Kind::Simple, + Inner::IntervalArray => &Kind::Array(Type(Inner::Interval)), + Inner::NumericArray => &Kind::Array(Type(Inner::Numeric)), + Inner::CstringArray => &Kind::Array(Type(Inner::Cstring)), + Inner::Timetz => &Kind::Simple, + Inner::TimetzArray => &Kind::Array(Type(Inner::Timetz)), + Inner::Bit => &Kind::Simple, + Inner::BitArray => &Kind::Array(Type(Inner::Bit)), + Inner::Varbit => &Kind::Simple, + Inner::VarbitArray => &Kind::Array(Type(Inner::Varbit)), + Inner::Numeric => &Kind::Simple, + Inner::Refcursor => &Kind::Simple, + Inner::RefcursorArray => &Kind::Array(Type(Inner::Refcursor)), + Inner::Regprocedure => &Kind::Simple, + Inner::Regoper => &Kind::Simple, + Inner::Regoperator => &Kind::Simple, + Inner::Regclass => &Kind::Simple, + Inner::Regtype => &Kind::Simple, + Inner::RegprocedureArray => &Kind::Array(Type(Inner::Regprocedure)), + Inner::RegoperArray => &Kind::Array(Type(Inner::Regoper)), + Inner::RegoperatorArray => &Kind::Array(Type(Inner::Regoperator)), + Inner::RegclassArray => &Kind::Array(Type(Inner::Regclass)), + Inner::RegtypeArray => &Kind::Array(Type(Inner::Regtype)), + Inner::Record => &Kind::Pseudo, + Inner::Cstring => &Kind::Pseudo, + Inner::Any => &Kind::Pseudo, + Inner::Anyarray => &Kind::Pseudo, + Inner::Void => &Kind::Pseudo, + Inner::Trigger => &Kind::Pseudo, + Inner::LanguageHandler => &Kind::Pseudo, + Inner::Internal => &Kind::Pseudo, + Inner::Anyelement => &Kind::Pseudo, + Inner::RecordArray => &Kind::Pseudo, + Inner::Anynonarray => &Kind::Pseudo, + Inner::TxidSnapshotArray => &Kind::Array(Type(Inner::TxidSnapshot)), + Inner::Uuid => &Kind::Simple, + Inner::UuidArray => &Kind::Array(Type(Inner::Uuid)), + Inner::TxidSnapshot => &Kind::Simple, + Inner::FdwHandler => &Kind::Pseudo, + Inner::PgLsn => &Kind::Simple, + Inner::PgLsnArray => &Kind::Array(Type(Inner::PgLsn)), + Inner::TsmHandler => &Kind::Pseudo, + Inner::PgNdistinct => &Kind::Simple, + Inner::PgDependencies => &Kind::Simple, + Inner::Anyenum => &Kind::Pseudo, + Inner::TsVector => &Kind::Simple, + Inner::Tsquery => &Kind::Simple, + Inner::GtsVector => &Kind::Simple, + Inner::TsVectorArray => &Kind::Array(Type(Inner::TsVector)), + Inner::GtsVectorArray => &Kind::Array(Type(Inner::GtsVector)), + Inner::TsqueryArray => &Kind::Array(Type(Inner::Tsquery)), + Inner::Regconfig => &Kind::Simple, + Inner::RegconfigArray => &Kind::Array(Type(Inner::Regconfig)), + Inner::Regdictionary => &Kind::Simple, + Inner::RegdictionaryArray => &Kind::Array(Type(Inner::Regdictionary)), + Inner::Jsonb => &Kind::Simple, + Inner::JsonbArray => &Kind::Array(Type(Inner::Jsonb)), + Inner::AnyRange => &Kind::Pseudo, + Inner::EventTrigger => &Kind::Pseudo, + Inner::Int4Range => &Kind::Range(Type(Inner::Int4)), + Inner::Int4RangeArray => &Kind::Array(Type(Inner::Int4Range)), + Inner::NumRange => &Kind::Range(Type(Inner::Numeric)), + Inner::NumRangeArray => &Kind::Array(Type(Inner::NumRange)), + Inner::TsRange => &Kind::Range(Type(Inner::Timestamp)), + Inner::TsRangeArray => &Kind::Array(Type(Inner::TsRange)), + Inner::TstzRange => &Kind::Range(Type(Inner::Timestamptz)), + Inner::TstzRangeArray => &Kind::Array(Type(Inner::TstzRange)), + Inner::DateRange => &Kind::Range(Type(Inner::Date)), + Inner::DateRangeArray => &Kind::Array(Type(Inner::DateRange)), + Inner::Int8Range => &Kind::Range(Type(Inner::Int8)), + Inner::Int8RangeArray => &Kind::Array(Type(Inner::Int8Range)), + Inner::Jsonpath => &Kind::Simple, + Inner::JsonpathArray => &Kind::Array(Type(Inner::Jsonpath)), + Inner::Regnamespace => &Kind::Simple, + Inner::RegnamespaceArray => &Kind::Array(Type(Inner::Regnamespace)), + Inner::Regrole => &Kind::Simple, + Inner::RegroleArray => &Kind::Array(Type(Inner::Regrole)), + Inner::Regcollation => &Kind::Simple, + Inner::RegcollationArray => &Kind::Array(Type(Inner::Regcollation)), + Inner::Int4multiRange => &Kind::Multirange(Type(Inner::Int4)), + Inner::NummultiRange => &Kind::Multirange(Type(Inner::Numeric)), + Inner::TsmultiRange => &Kind::Multirange(Type(Inner::Timestamp)), + Inner::TstzmultiRange => &Kind::Multirange(Type(Inner::Timestamptz)), + Inner::DatemultiRange => &Kind::Multirange(Type(Inner::Date)), + Inner::Int8multiRange => &Kind::Multirange(Type(Inner::Int8)), + Inner::AnymultiRange => &Kind::Pseudo, + Inner::AnycompatiblemultiRange => &Kind::Pseudo, + Inner::PgBrinBloomSummary => &Kind::Simple, + Inner::PgBrinMinmaxMultiSummary => &Kind::Simple, + Inner::PgMcvList => &Kind::Simple, + Inner::PgSnapshot => &Kind::Simple, + Inner::PgSnapshotArray => &Kind::Array(Type(Inner::PgSnapshot)), + Inner::Xid8 => &Kind::Simple, + Inner::Anycompatible => &Kind::Pseudo, + Inner::Anycompatiblearray => &Kind::Pseudo, + Inner::Anycompatiblenonarray => &Kind::Pseudo, + Inner::AnycompatibleRange => &Kind::Pseudo, + Inner::Int4multiRangeArray => &Kind::Array(Type(Inner::Int4multiRange)), + Inner::NummultiRangeArray => &Kind::Array(Type(Inner::NummultiRange)), + Inner::TsmultiRangeArray => &Kind::Array(Type(Inner::TsmultiRange)), + Inner::TstzmultiRangeArray => &Kind::Array(Type(Inner::TstzmultiRange)), + Inner::DatemultiRangeArray => &Kind::Array(Type(Inner::DatemultiRange)), + Inner::Int8multiRangeArray => &Kind::Array(Type(Inner::Int8multiRange)), Inner::Other(ref u) => &u.kind, } } @@ -1891,4 +1521,4 @@ impl Type { /// INT8MULTIRANGE[] pub const INT8MULTI_RANGE_ARRAY: Type = Type(Inner::Int8multiRangeArray); -} \ No newline at end of file +} diff --git a/tokio-postgres/src/error/sqlstate.rs b/tokio-postgres/src/error/sqlstate.rs index 6f191fc1..13a1d75f 100644 --- a/tokio-postgres/src/error/sqlstate.rs +++ b/tokio-postgres/src/error/sqlstate.rs @@ -279,7 +279,7 @@ impl SqlState { Inner::Other(code) => code, } } - + /// 00000 pub const SUCCESSFUL_COMPLETION: SqlState = SqlState(Inner::E00000); @@ -365,7 +365,8 @@ impl SqlState { pub const DIAGNOSTICS_EXCEPTION: SqlState = SqlState(Inner::E0Z000); /// 0Z002 - pub const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER: SqlState = SqlState(Inner::E0Z002); + pub const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER: SqlState = + SqlState(Inner::E0Z002); /// 20000 pub const CASE_NOT_FOUND: SqlState = SqlState(Inner::E20000); @@ -623,7 +624,8 @@ impl SqlState { pub const INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION: SqlState = SqlState(Inner::E25003); /// 25004 - pub const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION: SqlState = SqlState(Inner::E25004); + pub const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION: SqlState = + SqlState(Inner::E25004); /// 25005 pub const NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION: SqlState = SqlState(Inner::E25005); @@ -1344,7 +1346,7 @@ enum Inner { EXX002, Other(Box), } - + #[rustfmt::skip] static SQLSTATE_MAP: phf::Map<&'static str, SqlState> = ::phf::Map {