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 fcc3665a03
commit a950fb0734
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 comments
COMMENT ON OPERATOR ###### (int4, NONE) IS 'bad right unary';
@ -32,7 +32,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 => (
@ -42,7 +42,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?
@ -120,7 +120,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;
@ -128,7 +128,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
leftarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ERROR: SETOF type not allowed for operator argument
ROLLBACK;
@ -136,7 +136,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
rightarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ERROR: SETOF type not allowed for operator argument
ROLLBACK;
@ -160,13 +160,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 comments
@ -38,7 +38,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
@ -47,7 +47,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
@ -81,7 +81,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;
@ -90,7 +90,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
leftarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ROLLBACK;
@ -99,7 +99,7 @@ ROLLBACK;
BEGIN TRANSACTION;
CREATE OPERATOR #*# (
rightarg = SETOF int8,
procedure = numeric_fac
procedure = factorial
);
ROLLBACK;
@ -125,13 +125,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