hi. more preparation work has been committed. 1. SQL/JSON patch [1] added keyword ERROR 2. CoerceViaIo, CoerceToDomain can be evaluated error safe. see commit [2]. 3. ExprState added ErrorSaveContext point, so before calling ExecInitExprRec set valid ErrorSaveContext for ExprState->escontext we should evaluate expression error softly. see commit [2] also. I only found oracle implement, [3]. Based on my reading of [4], it seems CAST(EXPRESSION AS TYPE DEFAULT def_expr ON ERROR) is not included in SQL:2023. anyway, just share my POC based on the previous patch in this thread. it will work for domain over composite, composite over domain. example: CREATE DOMAIN d_char3_not_null as char(3) NOT NULL; CREATE TYPE comp_domain_with_typmod AS (a d_char3_not_null, b int); SELECT CAST('(,42)' AS comp_domain_with_typmod DEFAULT NULL ON ERROR); --return NULL [1]: https://git.postgresql.org/cgit/postgresql.git/diff/src/backend/parser/gram.y?id=6185c9737cf48c9540782d88f12bd2912d6ca1cc [2]: https://git.postgresql.org/cgit/postgresql.git/commit/?id=aaaf9449ec6be62cb0d30ed3588dc384f56274bf [3] https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/CAST.html [4] https://peter.eisentraut.org/blog/2023/04/04/sql-2023-is-finished-here-is-whats-new
pgsql-hackers by date:
Соглашаюсь с условиями обработки персональных данных