Bildiğimiz gibi, PostgreSQL uygun birleşik tip herhangi kaydını döküm için basit bir yol böyle bulunmadığını beyan eder rekor döküm:PostgreSQL kompozit tip
CREATE TYPE test.t_test AS (
mytext text,
myint integer
);
SELECT ('text', 10)::test.t_test; -- will succeed
Ama bu sadece bir rahatsızlık olduğunu - eğer hedef türü (örneğin, bir alan eklenir) modifiye edilir - dökme sonra :(parçalanmasına yardımcı olabilir, bu durum için
ALTER TYPE test.t_test ADD ATTRIBUTE mychar char(1);
SELECT ('text', 10)::test.t_test; -- will fail
CREATE CAST
ama bir döküm işlev için bağımsız değişken olarak RECORD
gibi bir psödo-tipi geçemez olacaktır. Ve ne tür-devralma ne de kompozit tip e varsayılanlar (tablo gibi) da çalışır. Burada uyumluluk sağlamak için başka bir yolu var mı?
Tabii ki CREATE FUNCTION test.to_t_test(t text, i integer, c char DEFAULT '') RETURNS test.t_test
gibi açık dökme işlevlerini kullanın ve sonra
SELECT test.to_t_test('text', 10) -- OK
SELECT test.to_t_test('text', 10, '1') -- OK
sonra varsayılan parametre değerleri kullanmak yapmak mümkün. Ama bu şekilde ne açık ne de rahattır.