diff options
author | Pavan Deolasee | 2018-06-18 09:14:08 +0000 |
---|---|---|
committer | Pavan Deolasee | 2018-07-27 07:59:41 +0000 |
commit | ebb11cfa503b186e1f1d087e2b89b883e7e08aae (patch) | |
tree | 92b566de8130c6b80108e317fc0c305852246e49 | |
parent | f3747239ba12599e88b2e022f34ba09f26364e15 (diff) |
Properly quote typename before calling parseTypeString
Without this, parseTypeString() might throw an error or resolve to a wrong type
in case the type name requires quoting.
Per report by Hengbing Wang
-rw-r--r-- | src/backend/pgxc/pool/execRemote.c | 3 | ||||
-rw-r--r-- | src/test/regress/expected/xc_misc.out | 10 | ||||
-rw-r--r-- | src/test/regress/sql/xc_misc.sql | 6 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/backend/pgxc/pool/execRemote.c b/src/backend/pgxc/pool/execRemote.c index b069b68be5..b9337d70e5 100644 --- a/src/backend/pgxc/pool/execRemote.c +++ b/src/backend/pgxc/pool/execRemote.c @@ -44,6 +44,7 @@ #include "pgxc/poolmgr.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "utils/builtins.h" #include "utils/datum.h" #include "utils/lsyscache.h" #include "utils/memutils.h" @@ -342,7 +343,7 @@ create_tuple_desc(char *msg_body, size_t len) msg_body += 2; /* Get the OID type and mode type from typename */ - parseTypeString(typname, &oidtypeid, NULL, false); + parseTypeString(quote_identifier(typname), &oidtypeid, NULL, false); TupleDescInitEntry(result, attnum, attname, oidtypeid, typmod, 0); } diff --git a/src/test/regress/expected/xc_misc.out b/src/test/regress/expected/xc_misc.out index 75d207cccb..83d9ae62c0 100644 --- a/src/test/regress/expected/xc_misc.out +++ b/src/test/regress/expected/xc_misc.out @@ -286,6 +286,16 @@ FETCH ALL FROM c3; -- should not show the row (5) (4 rows) END; +-- test if type name requiring quoting works fine +CREATE TYPE "Item" AS ( id integer, category integer, amount integer); +CREATE TABLE package ( user_id bigint primary key, items "Item"[]); +SELECT * FROM package; + user_id | items +---------+------- +(0 rows) + +DROP TYPE "Item" CASCADE; +NOTICE: drop cascades to table package column items DROP TABLE tt_22; ----------------------------------- drop table my_tbl; diff --git a/src/test/regress/sql/xc_misc.sql b/src/test/regress/sql/xc_misc.sql index 30db55a1a3..14c29f8d2d 100644 --- a/src/test/regress/sql/xc_misc.sql +++ b/src/test/regress/sql/xc_misc.sql @@ -209,6 +209,12 @@ FETCH ALL FROM c3; -- should not show the row (5) END; +-- test if type name requiring quoting works fine +CREATE TYPE "Item" AS ( id integer, category integer, amount integer); +CREATE TABLE package ( user_id bigint primary key, items "Item"[]); +SELECT * FROM package; +DROP TYPE "Item" CASCADE; + DROP TABLE tt_22; ----------------------------------- |