mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Add some opr_sanity checks that the lengths of the various argument-info
arrays in a pg_proc entry match. Seems like an easy mistake to make when manually adjusting these values in a pg_proc.h entry.
This commit is contained in:
parent
e527d5010b
commit
c19781ac3d
@ -275,6 +275,55 @@ WHERE p1.prorettype = 'internal'::regtype AND NOT
|
||||
2304 | internal_in
|
||||
(1 row)
|
||||
|
||||
-- Check for length inconsistencies between the various argument-info arrays.
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proallargtypes IS NOT NULL AND
|
||||
array_length(proallargtypes,1) < array_length(proargtypes,1);
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proargmodes IS NOT NULL AND
|
||||
array_length(proargmodes,1) < array_length(proargtypes,1);
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proargnames IS NOT NULL AND
|
||||
array_length(proargnames,1) < array_length(proargtypes,1);
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proallargtypes IS NOT NULL AND proargmodes IS NOT NULL AND
|
||||
array_length(proallargtypes,1) <> array_length(proargmodes,1);
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proallargtypes IS NOT NULL AND proargnames IS NOT NULL AND
|
||||
array_length(proallargtypes,1) <> array_length(proargnames,1);
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proargmodes IS NOT NULL AND proargnames IS NOT NULL AND
|
||||
array_length(proargmodes,1) <> array_length(proargnames,1);
|
||||
oid | proname
|
||||
-----+---------
|
||||
(0 rows)
|
||||
|
||||
-- **************** pg_cast ****************
|
||||
-- Catch bogus values in pg_cast columns (other than cases detected by
|
||||
-- oidjoins test).
|
||||
|
@ -218,6 +218,38 @@ FROM pg_proc as p1
|
||||
WHERE p1.prorettype = 'internal'::regtype AND NOT
|
||||
'internal'::regtype = ANY (p1.proargtypes);
|
||||
|
||||
-- Check for length inconsistencies between the various argument-info arrays.
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proallargtypes IS NOT NULL AND
|
||||
array_length(proallargtypes,1) < array_length(proargtypes,1);
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proargmodes IS NOT NULL AND
|
||||
array_length(proargmodes,1) < array_length(proargtypes,1);
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proargnames IS NOT NULL AND
|
||||
array_length(proargnames,1) < array_length(proargtypes,1);
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proallargtypes IS NOT NULL AND proargmodes IS NOT NULL AND
|
||||
array_length(proallargtypes,1) <> array_length(proargmodes,1);
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proallargtypes IS NOT NULL AND proargnames IS NOT NULL AND
|
||||
array_length(proallargtypes,1) <> array_length(proargnames,1);
|
||||
|
||||
SELECT p1.oid, p1.proname
|
||||
FROM pg_proc as p1
|
||||
WHERE proargmodes IS NOT NULL AND proargnames IS NOT NULL AND
|
||||
array_length(proargmodes,1) <> array_length(proargnames,1);
|
||||
|
||||
|
||||
-- **************** pg_cast ****************
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user