summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavan Deolasee2018-06-18 09:14:08 +0000
committerPavan Deolasee2018-07-27 07:59:41 +0000
commitebb11cfa503b186e1f1d087e2b89b883e7e08aae (patch)
tree92b566de8130c6b80108e317fc0c305852246e49
parentf3747239ba12599e88b2e022f34ba09f26364e15 (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.c3
-rw-r--r--src/test/regress/expected/xc_misc.out10
-rw-r--r--src/test/regress/sql/xc_misc.sql6
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;
-----------------------------------