@@ -149,244 +149,6 @@ CREATE FUNCTION functext_E_3(int) RETURNS bool LANGUAGE 'sql'
149149 LEAKPROOF AS 'SELECT $1 < 200';-- failed
150150ERROR: only superuser can define a leakproof function
151151RESET 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--