This adds the strict function attribute to the places in contrib that
crash on null inputs.
Kris Jurka
Index: contrib/chkpass/chkpass.sql.in
===================================================================
RCS file: /projects/cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v
retrieving revision 1.5
diff -c -r1.5 chkpass.sql.in
*** contrib/chkpass/chkpass.sql.in 29 Nov 2003 19:51:19 -0000 1.5
--- contrib/chkpass/chkpass.sql.in 29 Jan 2005 03:03:13 -0000
***************
*** 19,30 ****
CREATE FUNCTION chkpass_in(cstring)
RETURNS chkpass
AS 'MODULE_PATHNAME'
! LANGUAGE 'c';
CREATE FUNCTION chkpass_out(chkpass)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'c';
CREATE TYPE chkpass (
internallength = 16,
--- 19,30 ----
CREATE FUNCTION chkpass_in(cstring)
RETURNS chkpass
AS 'MODULE_PATHNAME'
! LANGUAGE C STRICT;
CREATE FUNCTION chkpass_out(chkpass)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE C STRICT;
CREATE TYPE chkpass (
internallength = 16,
***************
*** 36,42 ****
CREATE FUNCTION raw(chkpass)
RETURNS text
AS 'MODULE_PATHNAME', 'chkpass_rout'
! LANGUAGE 'c';
--
-- The various boolean tests:
--- 36,42 ----
CREATE FUNCTION raw(chkpass)
RETURNS text
AS 'MODULE_PATHNAME', 'chkpass_rout'
! LANGUAGE C STRICT;
--
-- The various boolean tests:
***************
*** 45,56 ****
CREATE FUNCTION eq(chkpass, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'chkpass_eq'
! LANGUAGE 'c';
CREATE FUNCTION ne(chkpass, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'chkpass_ne'
! LANGUAGE 'c';
--
-- Now the operators. Note how some of the parameters to some
--- 45,56 ----
CREATE FUNCTION eq(chkpass, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'chkpass_eq'
! LANGUAGE C STRICT;
CREATE FUNCTION ne(chkpass, text)
RETURNS bool
AS 'MODULE_PATHNAME', 'chkpass_ne'
! LANGUAGE C STRICT;
--
-- Now the operators. Note how some of the parameters to some
Index: contrib/isbn_issn/isbn_issn.sql.in
===================================================================
RCS file: /projects/cvsroot/pgsql/contrib/isbn_issn/isbn_issn.sql.in,v
retrieving revision 1.10
diff -c -r1.10 isbn_issn.sql.in
*** contrib/isbn_issn/isbn_issn.sql.in 29 Nov 2003 22:39:20 -0000 1.10
--- contrib/isbn_issn/isbn_issn.sql.in 29 Jan 2005 03:03:13 -0000
***************
*** 14,25 ****
CREATE FUNCTION issn_in(cstring)
RETURNS issn
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION issn_out(issn)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE TYPE issn (
INTERNALLENGTH = 16,
--- 14,25 ----
CREATE FUNCTION issn_in(cstring)
RETURNS issn
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION issn_out(issn)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE TYPE issn (
INTERNALLENGTH = 16,
***************
*** 39,70 ****
CREATE FUNCTION issn_lt(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION issn_le(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION issn_eq(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION issn_ge(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION issn_gt(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION issn_ne(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
--
-- Now the operators. Note how some of the parameters to some
--- 39,70 ----
CREATE FUNCTION issn_lt(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION issn_le(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION issn_eq(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION issn_ge(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION issn_gt(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION issn_ne(issn, issn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
--
-- Now the operators. Note how some of the parameters to some
***************
*** 120,126 ****
CREATE FUNCTION issn_cmp(issn, issn)
RETURNS integer
AS '$libdir/isbn_issn'
! LANGUAGE c;
-- Create default operator class for 'issn' --
-- Needed to create index or primary key --
--- 120,126 ----
CREATE FUNCTION issn_cmp(issn, issn)
RETURNS integer
AS '$libdir/isbn_issn'
! LANGUAGE c STRICT;
-- Create default operator class for 'issn' --
-- Needed to create index or primary key --
***************
*** 147,158 ****
CREATE FUNCTION isbn_in(cstring)
RETURNS isbn
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION isbn_out(isbn)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE TYPE isbn (
INTERNALLENGTH = 16,
--- 147,158 ----
CREATE FUNCTION isbn_in(cstring)
RETURNS isbn
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION isbn_out(isbn)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE TYPE isbn (
INTERNALLENGTH = 16,
***************
*** 171,202 ****
CREATE FUNCTION isbn_lt(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION isbn_le(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION isbn_eq(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION isbn_ge(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION isbn_gt(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
CREATE FUNCTION isbn_ne(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C';
--
-- Now the operators. Note how some of the parameters to some
--- 171,202 ----
CREATE FUNCTION isbn_lt(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION isbn_le(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION isbn_eq(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION isbn_ge(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION isbn_gt(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
CREATE FUNCTION isbn_ne(isbn, isbn)
RETURNS bool
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' STRICT;
--
-- Now the operators. Note how some of the parameters to some
***************
*** 253,259 ****
CREATE FUNCTION isbn_cmp(isbn, isbn)
RETURNS integer
AS '$libdir/isbn_issn'
! LANGUAGE c;
-- Create default operator class for 'isbn' --
-- Needed to create index or primary key --
--- 253,259 ----
CREATE FUNCTION isbn_cmp(isbn, isbn)
RETURNS integer
AS '$libdir/isbn_issn'
! LANGUAGE c STRICT;
-- Create default operator class for 'isbn' --
-- Needed to create index or primary key --
Index: contrib/lo/lo.sql.in
===================================================================
RCS file: /projects/cvsroot/pgsql/contrib/lo/lo.sql.in,v
retrieving revision 1.11
diff -c -r1.11 lo.sql.in
*** contrib/lo/lo.sql.in 29 Nov 2003 22:39:22 -0000 1.11
--- contrib/lo/lo.sql.in 29 Jan 2005 03:03:13 -0000
***************
*** 15,27 ****
CREATE FUNCTION lo_in(cstring)
RETURNS lo
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE;
-- used by the lo type, it returns the oid of the object
CREATE FUNCTION lo_out(lo)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE;
-- finally the type itself
CREATE TYPE lo (
--- 15,27 ----
CREATE FUNCTION lo_in(cstring)
RETURNS lo
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE STRICT;
-- used by the lo type, it returns the oid of the object
CREATE FUNCTION lo_out(lo)
RETURNS cstring
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE STRICT;
-- finally the type itself
CREATE TYPE lo (
***************
*** 35,41 ****
CREATE FUNCTION lo_oid(lo)
RETURNS oid
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE;
-- same function, named to allow it to be used as a type coercion, eg:
-- CREATE TABLE a (image lo);
--- 35,41 ----
CREATE FUNCTION lo_oid(lo)
RETURNS oid
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE STRICT;
-- same function, named to allow it to be used as a type coercion, eg:
-- CREATE TABLE a (image lo);
***************
*** 44,50 ****
CREATE FUNCTION oid(lo)
RETURNS oid
AS 'MODULE_PATHNAME', 'lo_oid'
! LANGUAGE 'C' IMMUTABLE;
CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT;
-- this allows us to convert an oid to a managed lo object
--- 44,50 ----
CREATE FUNCTION oid(lo)
RETURNS oid
AS 'MODULE_PATHNAME', 'lo_oid'
! LANGUAGE 'C' IMMUTABLE STRICT;
CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT;
-- this allows us to convert an oid to a managed lo object
***************
*** 52,58 ****
CREATE FUNCTION lo(oid)
RETURNS lo
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE;
CREATE CAST (oid as lo) WITH FUNCTION lo(oid) AS IMPLICIT;
-- This is used in triggers
--- 52,58 ----
CREATE FUNCTION lo(oid)
RETURNS lo
AS 'MODULE_PATHNAME'
! LANGUAGE 'C' IMMUTABLE STRICT;
CREATE CAST (oid as lo) WITH FUNCTION lo(oid) AS IMPLICIT;
-- This is used in triggers
---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])