Skip to content

Commit e0cb4aa

Browse files
committed
Move regression test listing of builtin leakproof functions to opr_sanity.sql.
The original location in create_function_3.sql didn't invite the close structinity warranted for adding new leakproof functions. Add comments to the test explaining that functions should only be added after careful consideration and understanding what a leakproof function is. Per complaint from Tom Lane after 5eebb8d.
1 parent 8776faa commit e0cb4aa

File tree

4 files changed

+268
-258
lines changed

4 files changed

+268
-258
lines changed

src/test/regress/expected/create_function_3.out

Lines changed: 0 additions & 238 deletions
Original file line numberDiff line numberDiff line change
@@ -149,244 +149,6 @@ CREATE FUNCTION functext_E_3(int) RETURNS bool LANGUAGE 'sql'
149149
LEAKPROOF AS 'SELECT $1 < 200'; -- failed
150150
ERROR: only superuser can define a leakproof function
151151
RESET SESSION AUTHORIZATION;
152-
---
153-
-- list of built-in leakproof functions
154-
---
155-
-- temporarily disable fancy output, so catalog changes create less diff noise
156-
\a\t
157-
SELECT proname, prorettype::regtype, proargtypes::regtype[]
158-
FROM pg_proc JOIN pg_namespace ON pronamespace = pg_namespace.oid
159-
WHERE nspname = 'pg_catalog' AND proleakproof ORDER BY proname;
160-
abstimeeq|boolean|[0:1]={abstime,abstime}
161-
abstimege|boolean|[0:1]={abstime,abstime}
162-
abstimegt|boolean|[0:1]={abstime,abstime}
163-
abstimele|boolean|[0:1]={abstime,abstime}
164-
abstimelt|boolean|[0:1]={abstime,abstime}
165-
abstimene|boolean|[0:1]={abstime,abstime}
166-
biteq|boolean|[0:1]={bit,bit}
167-
bitge|boolean|[0:1]={bit,bit}
168-
bitgt|boolean|[0:1]={bit,bit}
169-
bitle|boolean|[0:1]={bit,bit}
170-
bitlt|boolean|[0:1]={bit,bit}
171-
bitne|boolean|[0:1]={bit,bit}
172-
booleq|boolean|[0:1]={boolean,boolean}
173-
boolge|boolean|[0:1]={boolean,boolean}
174-
boolgt|boolean|[0:1]={boolean,boolean}
175-
boolle|boolean|[0:1]={boolean,boolean}
176-
boollt|boolean|[0:1]={boolean,boolean}
177-
boolne|boolean|[0:1]={boolean,boolean}
178-
bpchareq|boolean|[0:1]={character,character}
179-
bpcharne|boolean|[0:1]={character,character}
180-
byteaeq|boolean|[0:1]={bytea,bytea}
181-
byteage|boolean|[0:1]={bytea,bytea}
182-
byteagt|boolean|[0:1]={bytea,bytea}
183-
byteale|boolean|[0:1]={bytea,bytea}
184-
bytealt|boolean|[0:1]={bytea,bytea}
185-
byteane|boolean|[0:1]={bytea,bytea}
186-
cash_eq|boolean|[0:1]={money,money}
187-
cash_ge|boolean|[0:1]={money,money}
188-
cash_gt|boolean|[0:1]={money,money}
189-
cash_le|boolean|[0:1]={money,money}
190-
cash_lt|boolean|[0:1]={money,money}
191-
cash_ne|boolean|[0:1]={money,money}
192-
chareq|boolean|[0:1]={"\"char\"","\"char\""}
193-
charge|boolean|[0:1]={"\"char\"","\"char\""}
194-
chargt|boolean|[0:1]={"\"char\"","\"char\""}
195-
charle|boolean|[0:1]={"\"char\"","\"char\""}
196-
charlt|boolean|[0:1]={"\"char\"","\"char\""}
197-
charne|boolean|[0:1]={"\"char\"","\"char\""}
198-
cideq|boolean|[0:1]={cid,cid}
199-
circle_eq|boolean|[0:1]={circle,circle}
200-
circle_ge|boolean|[0:1]={circle,circle}
201-
circle_gt|boolean|[0:1]={circle,circle}
202-
circle_le|boolean|[0:1]={circle,circle}
203-
circle_lt|boolean|[0:1]={circle,circle}
204-
circle_ne|boolean|[0:1]={circle,circle}
205-
date_eq|boolean|[0:1]={date,date}
206-
date_ge|boolean|[0:1]={date,date}
207-
date_gt|boolean|[0:1]={date,date}
208-
date_le|boolean|[0:1]={date,date}
209-
date_lt|boolean|[0:1]={date,date}
210-
date_ne|boolean|[0:1]={date,date}
211-
float48eq|boolean|[0:1]={real,"double precision"}
212-
float48ge|boolean|[0:1]={real,"double precision"}
213-
float48gt|boolean|[0:1]={real,"double precision"}
214-
float48le|boolean|[0:1]={real,"double precision"}
215-
float48lt|boolean|[0:1]={real,"double precision"}
216-
float48ne|boolean|[0:1]={real,"double precision"}
217-
float4eq|boolean|[0:1]={real,real}
218-
float4ge|boolean|[0:1]={real,real}
219-
float4gt|boolean|[0:1]={real,real}
220-
float4le|boolean|[0:1]={real,real}
221-
float4lt|boolean|[0:1]={real,real}
222-
float4ne|boolean|[0:1]={real,real}
223-
float84eq|boolean|[0:1]={"double precision",real}
224-
float84ge|boolean|[0:1]={"double precision",real}
225-
float84gt|boolean|[0:1]={"double precision",real}
226-
float84le|boolean|[0:1]={"double precision",real}
227-
float84lt|boolean|[0:1]={"double precision",real}
228-
float84ne|boolean|[0:1]={"double precision",real}
229-
float8eq|boolean|[0:1]={"double precision","double precision"}
230-
float8ge|boolean|[0:1]={"double precision","double precision"}
231-
float8gt|boolean|[0:1]={"double precision","double precision"}
232-
float8le|boolean|[0:1]={"double precision","double precision"}
233-
float8lt|boolean|[0:1]={"double precision","double precision"}
234-
float8ne|boolean|[0:1]={"double precision","double precision"}
235-
int24eq|boolean|[0:1]={smallint,integer}
236-
int24ge|boolean|[0:1]={smallint,integer}
237-
int24gt|boolean|[0:1]={smallint,integer}
238-
int24le|boolean|[0:1]={smallint,integer}
239-
int24lt|boolean|[0:1]={smallint,integer}
240-
int24ne|boolean|[0:1]={smallint,integer}
241-
int28eq|boolean|[0:1]={smallint,bigint}
242-
int28ge|boolean|[0:1]={smallint,bigint}
243-
int28gt|boolean|[0:1]={smallint,bigint}
244-
int28le|boolean|[0:1]={smallint,bigint}
245-
int28lt|boolean|[0:1]={smallint,bigint}
246-
int28ne|boolean|[0:1]={smallint,bigint}
247-
int2eq|boolean|[0:1]={smallint,smallint}
248-
int2ge|boolean|[0:1]={smallint,smallint}
249-
int2gt|boolean|[0:1]={smallint,smallint}
250-
int2le|boolean|[0:1]={smallint,smallint}
251-
int2lt|boolean|[0:1]={smallint,smallint}
252-
int2ne|boolean|[0:1]={smallint,smallint}
253-
int42eq|boolean|[0:1]={integer,smallint}
254-
int42ge|boolean|[0:1]={integer,smallint}
255-
int42gt|boolean|[0:1]={integer,smallint}
256-
int42le|boolean|[0:1]={integer,smallint}
257-
int42lt|boolean|[0:1]={integer,smallint}
258-
int42ne|boolean|[0:1]={integer,smallint}
259-
int48eq|boolean|[0:1]={integer,bigint}
260-
int48ge|boolean|[0:1]={integer,bigint}
261-
int48gt|boolean|[0:1]={integer,bigint}
262-
int48le|boolean|[0:1]={integer,bigint}
263-
int48lt|boolean|[0:1]={integer,bigint}
264-
int48ne|boolean|[0:1]={integer,bigint}
265-
int4eq|boolean|[0:1]={integer,integer}
266-
int4ge|boolean|[0:1]={integer,integer}
267-
int4gt|boolean|[0:1]={integer,integer}
268-
int4le|boolean|[0:1]={integer,integer}
269-
int4lt|boolean|[0:1]={integer,integer}
270-
int4ne|boolean|[0:1]={integer,integer}
271-
int82eq|boolean|[0:1]={bigint,smallint}
272-
int82ge|boolean|[0:1]={bigint,smallint}
273-
int82gt|boolean|[0:1]={bigint,smallint}
274-
int82le|boolean|[0:1]={bigint,smallint}
275-
int82lt|boolean|[0:1]={bigint,smallint}
276-
int82ne|boolean|[0:1]={bigint,smallint}
277-
int84eq|boolean|[0:1]={bigint,integer}
278-
int84ge|boolean|[0:1]={bigint,integer}
279-
int84gt|boolean|[0:1]={bigint,integer}
280-
int84le|boolean|[0:1]={bigint,integer}
281-
int84lt|boolean|[0:1]={bigint,integer}
282-
int84ne|boolean|[0:1]={bigint,integer}
283-
int8eq|boolean|[0:1]={bigint,bigint}
284-
int8ge|boolean|[0:1]={bigint,bigint}
285-
int8gt|boolean|[0:1]={bigint,bigint}
286-
int8le|boolean|[0:1]={bigint,bigint}
287-
int8lt|boolean|[0:1]={bigint,bigint}
288-
int8ne|boolean|[0:1]={bigint,bigint}
289-
interval_eq|boolean|[0:1]={interval,interval}
290-
interval_ge|boolean|[0:1]={interval,interval}
291-
interval_gt|boolean|[0:1]={interval,interval}
292-
interval_le|boolean|[0:1]={interval,interval}
293-
interval_lt|boolean|[0:1]={interval,interval}
294-
interval_ne|boolean|[0:1]={interval,interval}
295-
lseg_eq|boolean|[0:1]={lseg,lseg}
296-
lseg_ge|boolean|[0:1]={lseg,lseg}
297-
lseg_gt|boolean|[0:1]={lseg,lseg}
298-
lseg_le|boolean|[0:1]={lseg,lseg}
299-
lseg_lt|boolean|[0:1]={lseg,lseg}
300-
lseg_ne|boolean|[0:1]={lseg,lseg}
301-
macaddr_eq|boolean|[0:1]={macaddr,macaddr}
302-
macaddr_ge|boolean|[0:1]={macaddr,macaddr}
303-
macaddr_gt|boolean|[0:1]={macaddr,macaddr}
304-
macaddr_le|boolean|[0:1]={macaddr,macaddr}
305-
macaddr_lt|boolean|[0:1]={macaddr,macaddr}
306-
macaddr_ne|boolean|[0:1]={macaddr,macaddr}
307-
nameeq|boolean|[0:1]={name,name}
308-
namege|boolean|[0:1]={name,name}
309-
namegt|boolean|[0:1]={name,name}
310-
namele|boolean|[0:1]={name,name}
311-
namelt|boolean|[0:1]={name,name}
312-
namene|boolean|[0:1]={name,name}
313-
network_eq|boolean|[0:1]={inet,inet}
314-
network_ge|boolean|[0:1]={inet,inet}
315-
network_gt|boolean|[0:1]={inet,inet}
316-
network_le|boolean|[0:1]={inet,inet}
317-
network_lt|boolean|[0:1]={inet,inet}
318-
network_ne|boolean|[0:1]={inet,inet}
319-
oideq|boolean|[0:1]={oid,oid}
320-
oidge|boolean|[0:1]={oid,oid}
321-
oidgt|boolean|[0:1]={oid,oid}
322-
oidle|boolean|[0:1]={oid,oid}
323-
oidlt|boolean|[0:1]={oid,oid}
324-
oidne|boolean|[0:1]={oid,oid}
325-
reltimeeq|boolean|[0:1]={reltime,reltime}
326-
reltimege|boolean|[0:1]={reltime,reltime}
327-
reltimegt|boolean|[0:1]={reltime,reltime}
328-
reltimele|boolean|[0:1]={reltime,reltime}
329-
reltimelt|boolean|[0:1]={reltime,reltime}
330-
reltimene|boolean|[0:1]={reltime,reltime}
331-
texteq|boolean|[0:1]={text,text}
332-
textne|boolean|[0:1]={text,text}
333-
tideq|boolean|[0:1]={tid,tid}
334-
tidge|boolean|[0:1]={tid,tid}
335-
tidgt|boolean|[0:1]={tid,tid}
336-
tidle|boolean|[0:1]={tid,tid}
337-
tidlt|boolean|[0:1]={tid,tid}
338-
tidne|boolean|[0:1]={tid,tid}
339-
time_eq|boolean|[0:1]={"time without time zone","time without time zone"}
340-
time_ge|boolean|[0:1]={"time without time zone","time without time zone"}
341-
time_gt|boolean|[0:1]={"time without time zone","time without time zone"}
342-
time_le|boolean|[0:1]={"time without time zone","time without time zone"}
343-
time_lt|boolean|[0:1]={"time without time zone","time without time zone"}
344-
time_ne|boolean|[0:1]={"time without time zone","time without time zone"}
345-
timestamp_eq|boolean|[0:1]={"timestamp without time zone","timestamp without time zone"}
346-
timestamp_ge|boolean|[0:1]={"timestamp without time zone","timestamp without time zone"}
347-
timestamp_gt|boolean|[0:1]={"timestamp without time zone","timestamp without time zone"}
348-
timestamp_le|boolean|[0:1]={"timestamp without time zone","timestamp without time zone"}
349-
timestamp_lt|boolean|[0:1]={"timestamp without time zone","timestamp without time zone"}
350-
timestamp_ne|boolean|[0:1]={"timestamp without time zone","timestamp without time zone"}
351-
timestamptz_eq|boolean|[0:1]={"timestamp with time zone","timestamp with time zone"}
352-
timestamptz_ge|boolean|[0:1]={"timestamp with time zone","timestamp with time zone"}
353-
timestamptz_gt|boolean|[0:1]={"timestamp with time zone","timestamp with time zone"}
354-
timestamptz_le|boolean|[0:1]={"timestamp with time zone","timestamp with time zone"}
355-
timestamptz_lt|boolean|[0:1]={"timestamp with time zone","timestamp with time zone"}
356-
timestamptz_ne|boolean|[0:1]={"timestamp with time zone","timestamp with time zone"}
357-
timetz_eq|boolean|[0:1]={"time with time zone","time with time zone"}
358-
timetz_ge|boolean|[0:1]={"time with time zone","time with time zone"}
359-
timetz_gt|boolean|[0:1]={"time with time zone","time with time zone"}
360-
timetz_le|boolean|[0:1]={"time with time zone","time with time zone"}
361-
timetz_lt|boolean|[0:1]={"time with time zone","time with time zone"}
362-
timetz_ne|boolean|[0:1]={"time with time zone","time with time zone"}
363-
tintervaleq|boolean|[0:1]={tinterval,tinterval}
364-
tintervalge|boolean|[0:1]={tinterval,tinterval}
365-
tintervalgt|boolean|[0:1]={tinterval,tinterval}
366-
tintervalle|boolean|[0:1]={tinterval,tinterval}
367-
tintervalleneq|boolean|[0:1]={tinterval,reltime}
368-
tintervallenge|boolean|[0:1]={tinterval,reltime}
369-
tintervallengt|boolean|[0:1]={tinterval,reltime}
370-
tintervallenle|boolean|[0:1]={tinterval,reltime}
371-
tintervallenlt|boolean|[0:1]={tinterval,reltime}
372-
tintervallenne|boolean|[0:1]={tinterval,reltime}
373-
tintervallt|boolean|[0:1]={tinterval,tinterval}
374-
tintervalne|boolean|[0:1]={tinterval,tinterval}
375-
uuid_eq|boolean|[0:1]={uuid,uuid}
376-
uuid_ge|boolean|[0:1]={uuid,uuid}
377-
uuid_gt|boolean|[0:1]={uuid,uuid}
378-
uuid_le|boolean|[0:1]={uuid,uuid}
379-
uuid_lt|boolean|[0:1]={uuid,uuid}
380-
uuid_ne|boolean|[0:1]={uuid,uuid}
381-
varbiteq|boolean|[0:1]={"bit varying","bit varying"}
382-
varbitge|boolean|[0:1]={"bit varying","bit varying"}
383-
varbitgt|boolean|[0:1]={"bit varying","bit varying"}
384-
varbitle|boolean|[0:1]={"bit varying","bit varying"}
385-
varbitlt|boolean|[0:1]={"bit varying","bit varying"}
386-
varbitne|boolean|[0:1]={"bit varying","bit varying"}
387-
xideq|boolean|[0:1]={xid,xid}
388-
-- restore normal output mode
389-
\a\t
390152
--
391153
-- CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
392154
--

0 commit comments

Comments
 (0)