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)
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