Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down
8 changes: 7 additions & 1 deletion src/collection_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/*
Expand Down
18 changes: 18 additions & 0 deletions test/expected/typemod.out
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions test/sql/typemod.sql
Original file line number Diff line number Diff line change
@@ -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;