好像是因為這樣寫會直接把 record 存進 array 裡面
像這樣應該就不會了
SELECT min(sub.CERTIFICATE_ID) ID,
min(sub.ISSUER_CA_ID) ISSUER_CA_ID,
array_agg(DISTINCT sub.NAME_VALUE) NAME_VALUES,
x509_subjectName(sub.CERTIFICATE) SUBJECT_NAME,
x509_notBefore(sub.CERTIFICATE) NOT_BEFORE,
x509_notAfter(sub.CERTIFICATE) NOT_AFTER,
array_agg(san.value) alt_names
FROM (SELECT *
FROM certificate_and_identities cai
WHERE plainto_tsquery('embedded.one.microsoft.com') @@ identities(cai.CERTIFICATE)
AND cai.NAME_VALUE ILIKE ('%' || 'embedded.one.microsoft.com' || '%')
LIMIT 10000
) sub LEFT OUTER JOIN LATERAL (SELECT x509_altNames(sub.CERTIFICATE)) san(value) ON TRUE
GROUP BY sub.CERTIFICATE;