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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of the explicit palloc, this can be tightened up a bit using psprintf. Something like:
return psprintf("('%s')", typeName);

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;