Skip to content

Commit c19781a

Browse files
committed
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.
1 parent e527d50 commit c19781a

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

src/test/regress/expected/opr_sanity.out

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,55 @@ WHERE p1.prorettype = 'internal'::regtype AND NOT
275275
2304 | internal_in
276276
(1 row)
277277

278+
-- Check for length inconsistencies between the various argument-info arrays.
279+
SELECT p1.oid, p1.proname
280+
FROM pg_proc as p1
281+
WHERE proallargtypes IS NOT NULL AND
282+
array_length(proallargtypes,1) < array_length(proargtypes,1);
283+
oid | proname
284+
-----+---------
285+
(0 rows)
286+
287+
SELECT p1.oid, p1.proname
288+
FROM pg_proc as p1
289+
WHERE proargmodes IS NOT NULL AND
290+
array_length(proargmodes,1) < array_length(proargtypes,1);
291+
oid | proname
292+
-----+---------
293+
(0 rows)
294+
295+
SELECT p1.oid, p1.proname
296+
FROM pg_proc as p1
297+
WHERE proargnames IS NOT NULL AND
298+
array_length(proargnames,1) < array_length(proargtypes,1);
299+
oid | proname
300+
-----+---------
301+
(0 rows)
302+
303+
SELECT p1.oid, p1.proname
304+
FROM pg_proc as p1
305+
WHERE proallargtypes IS NOT NULL AND proargmodes IS NOT NULL AND
306+
array_length(proallargtypes,1) <> array_length(proargmodes,1);
307+
oid | proname
308+
-----+---------
309+
(0 rows)
310+
311+
SELECT p1.oid, p1.proname
312+
FROM pg_proc as p1
313+
WHERE proallargtypes IS NOT NULL AND proargnames IS NOT NULL AND
314+
array_length(proallargtypes,1) <> array_length(proargnames,1);
315+
oid | proname
316+
-----+---------
317+
(0 rows)
318+
319+
SELECT p1.oid, p1.proname
320+
FROM pg_proc as p1
321+
WHERE proargmodes IS NOT NULL AND proargnames IS NOT NULL AND
322+
array_length(proargmodes,1) <> array_length(proargnames,1);
323+
oid | proname
324+
-----+---------
325+
(0 rows)
326+
278327
-- **************** pg_cast ****************
279328
-- Catch bogus values in pg_cast columns (other than cases detected by
280329
-- oidjoins test).

src/test/regress/sql/opr_sanity.sql

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,38 @@ FROM pg_proc as p1
218218
WHERE p1.prorettype = 'internal'::regtype AND NOT
219219
'internal'::regtype = ANY (p1.proargtypes);
220220

221+
-- Check for length inconsistencies between the various argument-info arrays.
222+
223+
SELECT p1.oid, p1.proname
224+
FROM pg_proc as p1
225+
WHERE proallargtypes IS NOT NULL AND
226+
array_length(proallargtypes,1) < array_length(proargtypes,1);
227+
228+
SELECT p1.oid, p1.proname
229+
FROM pg_proc as p1
230+
WHERE proargmodes IS NOT NULL AND
231+
array_length(proargmodes,1) < array_length(proargtypes,1);
232+
233+
SELECT p1.oid, p1.proname
234+
FROM pg_proc as p1
235+
WHERE proargnames IS NOT NULL AND
236+
array_length(proargnames,1) < array_length(proargtypes,1);
237+
238+
SELECT p1.oid, p1.proname
239+
FROM pg_proc as p1
240+
WHERE proallargtypes IS NOT NULL AND proargmodes IS NOT NULL AND
241+
array_length(proallargtypes,1) <> array_length(proargmodes,1);
242+
243+
SELECT p1.oid, p1.proname
244+
FROM pg_proc as p1
245+
WHERE proallargtypes IS NOT NULL AND proargnames IS NOT NULL AND
246+
array_length(proallargtypes,1) <> array_length(proargnames,1);
247+
248+
SELECT p1.oid, p1.proname
249+
FROM pg_proc as p1
250+
WHERE proargmodes IS NOT NULL AND proargnames IS NOT NULL AND
251+
array_length(proargmodes,1) <> array_length(proargnames,1);
252+
221253

222254
-- **************** pg_cast ****************
223255

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy