diff options
Diffstat (limited to 'src/test/regress/expected/alter_operator.out')
-rw-r--r-- | src/test/regress/expected/alter_operator.out | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/src/test/regress/expected/alter_operator.out b/src/test/regress/expected/alter_operator.out new file mode 100644 index 0000000..71bd484 --- /dev/null +++ b/src/test/regress/expected/alter_operator.out @@ -0,0 +1,139 @@ +CREATE FUNCTION alter_op_test_fn(boolean, boolean) +RETURNS boolean AS $$ SELECT NULL::BOOLEAN; $$ LANGUAGE sql IMMUTABLE; +CREATE FUNCTION customcontsel(internal, oid, internal, integer) +RETURNS float8 AS 'contsel' LANGUAGE internal STABLE STRICT; +CREATE OPERATOR === ( + LEFTARG = boolean, + RIGHTARG = boolean, + PROCEDURE = alter_op_test_fn, + COMMUTATOR = ===, + NEGATOR = !==, + RESTRICT = customcontsel, + JOIN = contjoinsel, + HASHES, MERGES +); +SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype +FROM pg_depend +WHERE classid = 'pg_operator'::regclass AND + objid = '===(bool,bool)'::regoperator +ORDER BY 1; + ref | deptype +-------------------------------------------------------+--------- + function alter_op_test_fn(boolean,boolean) | n + function customcontsel(internal,oid,internal,integer) | n + schema public | n +(3 rows) + +-- +-- Reset and set params +-- +ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = NONE); +ALTER OPERATOR === (boolean, boolean) SET (JOIN = NONE); +SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' + AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; + oprrest | oprjoin +---------+--------- + - | - +(1 row) + +SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype +FROM pg_depend +WHERE classid = 'pg_operator'::regclass AND + objid = '===(bool,bool)'::regoperator +ORDER BY 1; + ref | deptype +--------------------------------------------+--------- + function alter_op_test_fn(boolean,boolean) | n + schema public | n +(2 rows) + +ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = contsel); +ALTER OPERATOR === (boolean, boolean) SET (JOIN = contjoinsel); +SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' + AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; + oprrest | oprjoin +---------+------------- + contsel | contjoinsel +(1 row) + +SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype +FROM pg_depend +WHERE classid = 'pg_operator'::regclass AND + objid = '===(bool,bool)'::regoperator +ORDER BY 1; + ref | deptype +--------------------------------------------+--------- + function alter_op_test_fn(boolean,boolean) | n + schema public | n +(2 rows) + +ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = NONE, JOIN = NONE); +SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' + AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; + oprrest | oprjoin +---------+--------- + - | - +(1 row) + +SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype +FROM pg_depend +WHERE classid = 'pg_operator'::regclass AND + objid = '===(bool,bool)'::regoperator +ORDER BY 1; + ref | deptype +--------------------------------------------+--------- + function alter_op_test_fn(boolean,boolean) | n + schema public | n +(2 rows) + +ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = customcontsel, JOIN = contjoinsel); +SELECT oprrest, oprjoin FROM pg_operator WHERE oprname = '===' + AND oprleft = 'boolean'::regtype AND oprright = 'boolean'::regtype; + oprrest | oprjoin +---------------+------------- + customcontsel | contjoinsel +(1 row) + +SELECT pg_describe_object(refclassid,refobjid,refobjsubid) as ref, deptype +FROM pg_depend +WHERE classid = 'pg_operator'::regclass AND + objid = '===(bool,bool)'::regoperator +ORDER BY 1; + ref | deptype +-------------------------------------------------------+--------- + function alter_op_test_fn(boolean,boolean) | n + function customcontsel(internal,oid,internal,integer) | n + schema public | n +(3 rows) + +-- +-- Test invalid options. +-- +ALTER OPERATOR === (boolean, boolean) SET (COMMUTATOR = ====); +ERROR: operator attribute "commutator" cannot be changed +ALTER OPERATOR === (boolean, boolean) SET (NEGATOR = ====); +ERROR: operator attribute "negator" cannot be changed +ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = non_existent_func); +ERROR: function non_existent_func(internal, oid, internal, integer) does not exist +ALTER OPERATOR === (boolean, boolean) SET (JOIN = non_existent_func); +ERROR: function non_existent_func(internal, oid, internal, smallint, internal) does not exist +ALTER OPERATOR === (boolean, boolean) SET (COMMUTATOR = !==); +ERROR: operator attribute "commutator" cannot be changed +ALTER OPERATOR === (boolean, boolean) SET (NEGATOR = !==); +ERROR: operator attribute "negator" cannot be changed +-- invalid: non-lowercase quoted identifiers +ALTER OPERATOR & (bit, bit) SET ("Restrict" = _int_contsel, "Join" = _int_contjoinsel); +ERROR: operator attribute "Restrict" not recognized +-- +-- Test permission check. Must be owner to ALTER OPERATOR. +-- +CREATE USER regress_alter_op_user; +SET SESSION AUTHORIZATION regress_alter_op_user; +ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = NONE); +ERROR: must be owner of operator === +-- Clean up +RESET SESSION AUTHORIZATION; +DROP USER regress_alter_op_user; +DROP OPERATOR === (boolean, boolean); +DROP FUNCTION customcontsel(internal, oid, internal, integer); +DROP FUNCTION alter_op_test_fn(boolean, boolean); |