Use factorial rather than numeric_fac in create_operator.sql.

These two SQL functions are aliases for the same C function, so this
change has no semantic effect.  However, because we dropped the
numeric_fac alias in HEAD (commit 76f412ab3), operator definitions
based on that one don't port forward, causing problems for cross-version
upgrade tests based on the regression database.

Patch all active back branches to dodge the problem.

Discussion: https://postgr.es/m/449144.1600439950@sss.pgh.pa.us
This commit is contained in:
Tom Lane 2020-09-18 18:03:44 -04:00
parent f083afac9d
commit 9ab5ed4194
2 changed files with 20 additions and 20 deletions

View File

@ -16,15 +16,15 @@ CREATE OPERATOR <% (
);
CREATE OPERATOR @#@ (
rightarg = int8, -- left unary
procedure = numeric_fac
procedure = factorial
);
CREATE OPERATOR #@# (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
CREATE OPERATOR #%# (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
-- Test operator created above
SELECT point '(1,2)' <% widget '(0,0,3)' AS t,
@ -40,7 +40,7 @@ ERROR: operator does not exist: integer ######
-- => is disallowed now
CREATE OPERATOR => (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
ERROR: syntax error at or near "=>"
LINE 1: CREATE OPERATOR => (
@ -50,7 +50,7 @@ LINE 1: CREATE OPERATOR => (
-- this is legal because ! is not allowed in sql ops
CREATE OPERATOR !=- (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
SELECT 2 !=-;
?column?
@ -128,7 +128,7 @@ REVOKE USAGE ON SCHEMA schema_op1 FROM regress_rol_op1;
SET ROLE regress_rol_op1;
CREATE OPERATOR schema_op1.#*# (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
ERROR: permission denied for schema schema_op1
ROLLBACK;
@ -136,7 +136,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
leftarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ERROR: SETOF type not allowed for operator argument
ROLLBACK;
@ -144,7 +144,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
rightarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ERROR: SETOF type not allowed for operator argument
ROLLBACK;
@ -168,13 +168,13 @@ ROLLBACK;
-- Should fail. Invalid attribute
CREATE OPERATOR #@%# (
leftarg = int8, -- right unary
procedure = numeric_fac,
procedure = factorial,
invalid_att = int8
);
WARNING: operator attribute "invalid_att" not recognized
-- Should fail. At least leftarg or rightarg should be mandatorily specified
CREATE OPERATOR #@%# (
procedure = numeric_fac
procedure = factorial
);
ERROR: at least one of leftarg or rightarg must be specified
-- Should fail. Procedure should be mandatorily specified

View File

@ -19,17 +19,17 @@ CREATE OPERATOR <% (
CREATE OPERATOR @#@ (
rightarg = int8, -- left unary
procedure = numeric_fac
procedure = factorial
);
CREATE OPERATOR #@# (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
CREATE OPERATOR #%# (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
-- Test operator created above
@ -42,7 +42,7 @@ COMMENT ON OPERATOR ###### (int4, NONE) IS 'bad right unary';
-- => is disallowed now
CREATE OPERATOR => (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
-- lexing of <=, >=, <>, != has a number of edge cases
@ -51,7 +51,7 @@ CREATE OPERATOR => (
-- this is legal because ! is not allowed in sql ops
CREATE OPERATOR !=- (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
SELECT 2 !=-;
-- make sure lexer returns != as <> even in edge cases
@ -85,7 +85,7 @@ REVOKE USAGE ON SCHEMA schema_op1 FROM regress_rol_op1;
SET ROLE regress_rol_op1;
CREATE OPERATOR schema_op1.#*# (
leftarg = int8, -- right unary
procedure = numeric_fac
procedure = factorial
);
ROLLBACK;
@ -94,7 +94,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
leftarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ROLLBACK;
@ -103,7 +103,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
rightarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ROLLBACK;
@ -129,13 +129,13 @@ ROLLBACK;
-- Should fail. Invalid attribute
CREATE OPERATOR #@%# (
leftarg = int8, -- right unary
procedure = numeric_fac,
procedure = factorial,
invalid_att = int8
);
-- Should fail. At least leftarg or rightarg should be mandatorily specified
CREATE OPERATOR #@%# (
procedure = numeric_fac
procedure = factorial
);
-- Should fail. Procedure should be mandatorily specified