एक और संभावित समाधान है:
CREATE TYPE foo_tup AS (item foo);
डोमेन प्रकार इस तरह टुपल्स में लपेटे जा सकते हैं और यह आपको एक सरणी कन्स्ट्रक्टर देता है। नकारात्मक पक्ष यह है कि अब आप शायद कास्ट बनाना चाहते हैं:
select array[row('foo')::foo_tup, row('bar')];
उदाहरण के लिए आप एक फंक्शन और एक कास्ट बना सकते हैं:
create function foo_tup(foo) returns foo_tup language sql as $$
select row($1)::foo_tup;
$$ immutable;
create function foo(foo_tup) returns foo language sql as $$
select $1.item;
$$;
create cast (foo as foo_tup) with function foo_tup(foo);
create cast (foo_tup as foo) with function foo(foo_tup);
तब एकत्रीकरण आसान हो जाता है:
select array_agg(myfoo::foo_tup) from my_table;
हालांकि आपको अतिरिक्त कोष्ठक मिलते हैं।