The following bug has been logged on the website:
Bug reference: 17464
Logged by: Domain type. If the value field(CREATE DOMAIN) is set to null, errors cannot
be intercepted.
Email address: dafoer_x@163.com
PostgreSQL version: 13.2
Operating system: centos7.6 x86
Description:
Domain type. If the value field(CREATE DOMAIN) is set to null, errors cannot
be intercepted.
Because texteq cannot accept null input parameters,
op->d.domainCheck.checknull is set to the wrong value .
detail:
postgres=# call f3_basic('男');
NOTICE: a_xb = 男
CALL
postgres=# call f3_basic('她');
NOTICE: a_xb = 她
CALL
eg.
drop domain xb;
CREATE DOMAIN xb AS TEXT CHECK
(
VALUE = '男'
OR VALUE ='女'
OR VALUE = null
);
drop procedure if exists f3_basic(a_xb xb);
CREATE OR REPLACE procedure f3_basic (a_xb xb) AS
$$
BEGIN
RAISE NOTICE 'a_xb = %',a_xb;
END;
$$
LANGUAGE PLPGSQL;
-- success
call f3_basic('男');
-- expected error
call f3_basic('她');
drop procedure if exists f3_basic(a_xb xb);
drop domain xb;