Fix fastcheck PART12 error.
This commit is contained in:
@ -777,7 +777,7 @@ static void checkFunctionConflicts(HeapTuple oldtup, const char* procedureName,
|
||||
}
|
||||
|
||||
/* Can't change aggregate or window-function status, either */
|
||||
if (PROC_IS_AGG(oldproc->prokind) != PROC_IS_AGG(prokind)) {
|
||||
if ((PROC_IS_AGG(oldproc->prokind) || PROC_IS_AGG(prokind)) && oldproc->prokind != prokind) {
|
||||
if (PROC_IS_AGG(oldproc->prokind)) {
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE),
|
||||
@ -789,7 +789,7 @@ static void checkFunctionConflicts(HeapTuple oldtup, const char* procedureName,
|
||||
}
|
||||
}
|
||||
|
||||
if (PROC_IS_WIN(oldproc->prokind) != PROC_IS_WIN(prokind)) {
|
||||
if ((PROC_IS_WIN(oldproc->prokind) || PROC_IS_WIN(prokind)) && oldproc->prokind != prokind) {
|
||||
if (PROC_IS_WIN(oldproc->prokind)) {
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("function \"%s\" is a window function", procedureName)));
|
||||
|
@ -63,10 +63,10 @@ WHERE prosrc IS NULL OR prosrc = '' OR prosrc = '-';
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
-- proiswindow shouldn't be set together with proisagg or proretset
|
||||
-- prokind = 'w' shouldn't be set together with proretset
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc AS p1
|
||||
WHERE proiswindow AND (proisagg OR proretset);
|
||||
WHERE prokind = 'w' AND proretset;
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
@ -130,9 +130,9 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid < p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
(p1.proisagg = false OR p2.proisagg = false) AND
|
||||
(p1.prokind != 'a' OR p2.prokind != 'a') AND
|
||||
(p1.prolang != p2.prolang OR
|
||||
p1.proisagg != p2.proisagg OR
|
||||
(p1.prokind = 'a') != (p2.prokind = 'a') OR
|
||||
p1.prosecdef != p2.prosecdef OR
|
||||
p1.proisstrict != p2.proisstrict OR
|
||||
p1.proretset != p2.proretset OR
|
||||
@ -158,7 +158,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
p1.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
p2.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
(p1.prorettype < p2.prorettype)
|
||||
@ -175,7 +175,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
p1.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
p2.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
(p1.proargtypes[0] < p2.proargtypes[0])
|
||||
@ -195,7 +195,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
p1.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
p2.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
(p1.proargtypes[1] < p2.proargtypes[1])
|
||||
@ -214,7 +214,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[2] < p2.proargtypes[2])
|
||||
ORDER BY 1, 2;
|
||||
proargtypes | proargtypes
|
||||
@ -227,7 +227,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[3] < p2.proargtypes[3])
|
||||
ORDER BY 1, 2;
|
||||
proargtypes | proargtypes
|
||||
@ -240,7 +240,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[4] < p2.proargtypes[4])
|
||||
ORDER BY 1, 2;
|
||||
proargtypes | proargtypes
|
||||
@ -252,7 +252,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[5] < p2.proargtypes[5])
|
||||
ORDER BY 1, 2;
|
||||
proargtypes | proargtypes
|
||||
@ -264,7 +264,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[6] < p2.proargtypes[6])
|
||||
ORDER BY 1, 2;
|
||||
proargtypes | proargtypes
|
||||
@ -276,7 +276,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[7] < p2.proargtypes[7])
|
||||
ORDER BY 1, 2;
|
||||
proargtypes | proargtypes
|
||||
|
@ -262,31 +262,6 @@ WHERE d.classoid IS NULL AND p1.oid <= 9999;
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
-- Check prokind
|
||||
select count(*) from pg_proc where prokind = 'a';
|
||||
count
|
||||
-------
|
||||
153
|
||||
(1 row)
|
||||
|
||||
select count(*) from pg_proc where prokind = 'w';
|
||||
count
|
||||
-------
|
||||
16
|
||||
(1 row)
|
||||
|
||||
select count(*) from pg_proc where prokind = 'f';
|
||||
count
|
||||
-------
|
||||
3266
|
||||
(1 row)
|
||||
|
||||
select count(*) from pg_proc where prokind = 'p';
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
-- Check that operators' underlying functions have suitable comments,
|
||||
-- namely 'implementation of XXX operator'. In some cases involving legacy
|
||||
-- names for operators, there are multiple operators referencing the same
|
||||
|
@ -64,10 +64,10 @@ SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE prosrc IS NULL OR prosrc = '' OR prosrc = '-';
|
||||
|
||||
-- proiswindow shouldn't be set together with proisagg or proretset
|
||||
-- prokind = 'w' shouldn't be set together with proretset
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc AS p1
|
||||
WHERE proiswindow AND (proisagg OR proretset);
|
||||
WHERE prokind = 'w' AND proretset;
|
||||
|
||||
-- pronargdefaults should be 0 iff proargdefaults is null
|
||||
SELECT p1.oid, p1.proname
|
||||
@ -108,9 +108,9 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid < p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
(p1.proisagg = false OR p2.proisagg = false) AND
|
||||
(p1.prokind != 'a' OR p2.prokind != 'a') AND
|
||||
(p1.prolang != p2.prolang OR
|
||||
p1.proisagg != p2.proisagg OR
|
||||
(p1.prokind = 'a') != (p2.prokind = 'a') OR
|
||||
p1.prosecdef != p2.prosecdef OR
|
||||
p1.proisstrict != p2.proisstrict OR
|
||||
p1.proretset != p2.proretset OR
|
||||
@ -133,7 +133,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
p1.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
p2.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
(p1.prorettype < p2.prorettype)
|
||||
@ -144,7 +144,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
p1.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
p2.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
(p1.proargtypes[0] < p2.proargtypes[0])
|
||||
@ -155,7 +155,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
p1.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
p2.prosrc NOT LIKE E'range\\_constructor_' AND
|
||||
(p1.proargtypes[1] < p2.proargtypes[1])
|
||||
@ -166,7 +166,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[2] < p2.proargtypes[2])
|
||||
ORDER BY 1, 2;
|
||||
|
||||
@ -175,7 +175,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[3] < p2.proargtypes[3])
|
||||
ORDER BY 1, 2;
|
||||
|
||||
@ -184,7 +184,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[4] < p2.proargtypes[4])
|
||||
ORDER BY 1, 2;
|
||||
|
||||
@ -193,7 +193,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[5] < p2.proargtypes[5])
|
||||
ORDER BY 1, 2;
|
||||
|
||||
@ -202,7 +202,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[6] < p2.proargtypes[6])
|
||||
ORDER BY 1, 2;
|
||||
|
||||
@ -211,7 +211,7 @@ FROM pg_proc AS p1, pg_proc AS p2
|
||||
WHERE p1.oid != p2.oid AND
|
||||
p1.prosrc = p2.prosrc AND
|
||||
p1.prolang = 12 AND p2.prolang = 12 AND
|
||||
NOT p1.proisagg AND NOT p2.proisagg AND
|
||||
p1.prokind != 'a' AND p2.prokind != 'a' AND
|
||||
(p1.proargtypes[7] < p2.proargtypes[7])
|
||||
ORDER BY 1, 2;
|
||||
|
||||
|
@ -227,12 +227,6 @@ FROM pg_operator as p1 LEFT JOIN pg_description as d
|
||||
ON p1.tableoid = d.classoid and p1.oid = d.objoid and d.objsubid = 0
|
||||
WHERE d.classoid IS NULL AND p1.oid <= 9999;
|
||||
|
||||
-- Check prokind
|
||||
select count(*) from pg_proc where prokind = 'a';
|
||||
select count(*) from pg_proc where prokind = 'w';
|
||||
select count(*) from pg_proc where prokind = 'f';
|
||||
select count(*) from pg_proc where prokind = 'p';
|
||||
|
||||
-- Check that operators' underlying functions have suitable comments,
|
||||
-- namely 'implementation of XXX operator'. In some cases involving legacy
|
||||
-- names for operators, there are multiple operators referencing the same
|
||||
|
Reference in New Issue
Block a user