diff --git a/Makefile b/Makefile index c605ef2..6de4695 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ OBJS = src/collection.o \ src/icollection_subs.o \ src/icollection_parse.o -REGRESS = basics subscript iteration srf persistence inout_params mixed_types stress edge_cases array_interop +REGRESS = basics subscript iteration srf persistence inout_params mixed_types stress edge_cases array_interop typemod REGRESS_OPTS = --inputdir=test --outputdir=test --load-extension=collection EXTRA_CLEAN = test/results/ test/regression.diffs test/regression.out \ diff --git a/src/collection_common.c b/src/collection_common.c index 439525d..f070d01 100644 --- a/src/collection_common.c +++ b/src/collection_common.c @@ -104,7 +104,13 @@ collection_typmodin_common(ArrayType *ta, const char *type_name) char * collection_typmodout_common(Oid typmod) { - return DatumGetCString(DirectFunctionCall1(regtypeout, typmod)); + char *typeName; + char *res; + + typeName = DatumGetCString(DirectFunctionCall1(regtypeout, typmod)); + res = (char*)palloc(strlen(typeName) + 5); + sprintf(res, "('%s')", typeName); + return res; } /* diff --git a/test/expected/typemod.out b/test/expected/typemod.out new file mode 100644 index 0000000..60a25c3 --- /dev/null +++ b/test/expected/typemod.out @@ -0,0 +1,18 @@ +create schema typemodtest; +create type typemodtest.my_rec as ( + coll_no_typemod collection, + coll_typemod_int collection('int'), + icoll_no_typemod icollection, + icollection_typemod_varchar icollection('varchar') +); +\d typemodtest.my_rec + Composite type "typemodtest.my_rec" + Column | Type | Collation | Nullable | Default +-----------------------------+----------------------------------+-----------+----------+--------- + coll_no_typemod | collection | | | + coll_typemod_int | collection('integer') | | | + icoll_no_typemod | icollection | | | + icollection_typemod_varchar | icollection('character varying') | | | + +drop schema typemodtest cascade; +NOTICE: drop cascades to type typemodtest.my_rec diff --git a/test/sql/typemod.sql b/test/sql/typemod.sql new file mode 100644 index 0000000..bfd25b7 --- /dev/null +++ b/test/sql/typemod.sql @@ -0,0 +1,9 @@ +create schema typemodtest; +create type typemodtest.my_rec as ( + coll_no_typemod collection, + coll_typemod_int collection('int'), + icoll_no_typemod icollection, + icollection_typemod_varchar icollection('varchar') +); +\d typemodtest.my_rec +drop schema typemodtest cascade; \ No newline at end of file