chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
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;
|
||||
|
||||
--
|
||||
-- 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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
--
|
||||
-- Test invalid options.
|
||||
--
|
||||
ALTER OPERATOR === (boolean, boolean) SET (COMMUTATOR = ====);
|
||||
ALTER OPERATOR === (boolean, boolean) SET (NEGATOR = ====);
|
||||
ALTER OPERATOR === (boolean, boolean) SET (RESTRICT = non_existent_func);
|
||||
ALTER OPERATOR === (boolean, boolean) SET (JOIN = non_existent_func);
|
||||
ALTER OPERATOR === (boolean, boolean) SET (COMMUTATOR = !==);
|
||||
ALTER OPERATOR === (boolean, boolean) SET (NEGATOR = !==);
|
||||
|
||||
-- invalid: non-lowercase quoted identifiers
|
||||
ALTER OPERATOR & (bit, bit) SET ("Restrict" = _int_contsel, "Join" = _int_contjoinsel);
|
||||
|
||||
--
|
||||
-- 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);
|
||||
|
||||
-- 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);
|
||||
Reference in New Issue
Block a user