From 24162978b7218b3e4833af14f043862aba35f7c2 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 29 Jan 2005 22:35:53 +0000 Subject: [PATCH] Make sure contrib C functions are marked strict where needed. Kris Jurka --- contrib/chkpass/chkpass.sql.in | 12 ++++----- contrib/isbn_issn/isbn_issn.sql.in | 40 +++++++++++++++--------------- contrib/lo/lo.sql.in | 14 +++++------ contrib/miscutil/misc_utils.c | 19 ++++++-------- contrib/miscutil/misc_utils.h | 4 +-- contrib/miscutil/misc_utils.sql.in | 8 +++--- contrib/userlock/user_locks.sql.in | 22 ++++++++-------- 7 files changed, 57 insertions(+), 62 deletions(-) diff --git a/contrib/chkpass/chkpass.sql.in b/contrib/chkpass/chkpass.sql.in index 231cf99a12c..1ff38e5d231 100644 --- a/contrib/chkpass/chkpass.sql.in +++ b/contrib/chkpass/chkpass.sql.in @@ -4,7 +4,7 @@ -- darcy@druid.net -- http://www.druid.net/darcy/ -- --- $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.3 2002/10/18 18:41:19 momjian Exp $ +-- $Header: /cvsroot/pgsql/contrib/chkpass/chkpass.sql.in,v 1.3.2.1 2005/01/29 22:35:52 tgl Exp $ -- -- best viewed with tabs set to 4 -- @@ -21,12 +21,12 @@ SET autocommit TO 'on'; CREATE FUNCTION chkpass_in(cstring) RETURNS chkpass AS 'MODULE_PATHNAME' - LANGUAGE 'c'; + LANGUAGE C STRICT; CREATE FUNCTION chkpass_out(chkpass) RETURNS cstring AS 'MODULE_PATHNAME' - LANGUAGE 'c'; + LANGUAGE C STRICT; CREATE TYPE chkpass ( internallength = 16, @@ -38,7 +38,7 @@ CREATE TYPE chkpass ( CREATE FUNCTION raw(chkpass) RETURNS text AS 'MODULE_PATHNAME', 'chkpass_rout' - LANGUAGE 'c'; + LANGUAGE C STRICT; -- -- The various boolean tests: @@ -47,12 +47,12 @@ CREATE FUNCTION raw(chkpass) CREATE FUNCTION eq(chkpass, text) RETURNS bool AS 'MODULE_PATHNAME', 'chkpass_eq' - LANGUAGE 'c'; + LANGUAGE C STRICT; CREATE FUNCTION ne(chkpass, text) RETURNS bool AS 'MODULE_PATHNAME', 'chkpass_ne' - LANGUAGE 'c'; + LANGUAGE C STRICT; -- -- Now the operators. Note how some of the parameters to some diff --git a/contrib/isbn_issn/isbn_issn.sql.in b/contrib/isbn_issn/isbn_issn.sql.in index fc9aef97ce8..5db6ddb04b8 100644 --- a/contrib/isbn_issn/isbn_issn.sql.in +++ b/contrib/isbn_issn/isbn_issn.sql.in @@ -1,7 +1,7 @@ -- -- PostgreSQL code for ISSNs. -- --- $Id: isbn_issn.sql.in,v 1.7 2002/10/18 18:41:20 momjian Exp $ +-- $Id: isbn_issn.sql.in,v 1.7.2.1 2005/01/29 22:35:52 tgl Exp $ -- -- Adjust this setting to control where the objects get created. @@ -16,12 +16,12 @@ SET autocommit TO 'on'; CREATE FUNCTION issn_in(cstring) RETURNS issn AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_out(issn) RETURNS cstring AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE TYPE issn ( INTERNALLENGTH = 16, @@ -41,32 +41,32 @@ COMMENT ON TYPE issn CREATE FUNCTION issn_lt(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_le(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_eq(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_ge(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_gt(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION issn_ne(issn, issn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- -- Now the operators. Note how some of the parameters to some @@ -124,7 +124,7 @@ CREATE OPERATOR <> ( -- -- PostgreSQL code for ISBNs. -- --- $Id: isbn_issn.sql.in,v 1.7 2002/10/18 18:41:20 momjian Exp $ +-- $Id: isbn_issn.sql.in,v 1.7.2.1 2005/01/29 22:35:52 tgl Exp $ -- -- -- Input and output functions and the type itself: @@ -133,12 +133,12 @@ CREATE OPERATOR <> ( CREATE FUNCTION isbn_in(cstring) RETURNS isbn AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_out(isbn) RETURNS cstring AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE TYPE isbn ( INTERNALLENGTH = 16, @@ -157,32 +157,32 @@ COMMENT ON TYPE isbn IS 'International Standard Book Number'; CREATE FUNCTION isbn_lt(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_le(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_eq(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_ge(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_gt(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; CREATE FUNCTION isbn_ne(isbn, isbn) RETURNS bool AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- -- Now the operators. Note how some of the parameters to some @@ -239,13 +239,13 @@ CREATE OPERATOR <> ( CREATE FUNCTION isbn_cmp(isbn, isbn) RETURNS integer AS '$libdir/isbn_issn' -LANGUAGE c; +LANGUAGE c STRICT; -- Register 'issn' comparison function CREATE FUNCTION issn_cmp(issn, issn) RETURNS integer AS '$libdir/isbn_issn' -LANGUAGE c; +LANGUAGE c STRICT; ------------------------------------------------- -- Create default operator class for 'isbn' -- diff --git a/contrib/lo/lo.sql.in b/contrib/lo/lo.sql.in index 169d74d2166..cd56dfb2c14 100644 --- a/contrib/lo/lo.sql.in +++ b/contrib/lo/lo.sql.in @@ -1,7 +1,7 @@ -- -- PostgreSQL code for LargeObjects -- --- $Id: lo.sql.in,v 1.8.2.1 2003/01/03 15:43:33 inoue Exp $ +-- $Id: lo.sql.in,v 1.8.2.2 2005/01/29 22:35:52 tgl Exp $ -- -- -- Create the data type @@ -17,13 +17,13 @@ SET autocommit TO 'on'; CREATE FUNCTION lo_in(cstring) RETURNS lo AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +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; +LANGUAGE C IMMUTABLE STRICT; -- finally the type itself CREATE TYPE lo ( @@ -37,7 +37,7 @@ CREATE TYPE lo ( CREATE FUNCTION lo_oid(lo) RETURNS oid AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; -- same function, named to allow it to be used as a type coercion, eg: -- CREATE TABLE a (image lo); @@ -46,7 +46,7 @@ LANGUAGE 'C' IMMUTABLE; CREATE FUNCTION oid(lo) RETURNS oid AS 'MODULE_PATHNAME', 'lo_oid' -LANGUAGE 'C' IMMUTABLE; +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 @@ -54,11 +54,11 @@ CREATE CAST (lo as oid) WITH FUNCTION oid(lo) AS IMPLICIT; CREATE FUNCTION lo(oid) RETURNS lo AS 'MODULE_PATHNAME' -LANGUAGE 'C' IMMUTABLE; +LANGUAGE C IMMUTABLE STRICT; CREATE CAST (oid as lo) WITH FUNCTION lo(oid) AS IMPLICIT; -- This is used in triggers CREATE FUNCTION lo_manage() RETURNS trigger AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C; diff --git a/contrib/miscutil/misc_utils.c b/contrib/miscutil/misc_utils.c index 26bbabe46f7..d6108e3dfff 100644 --- a/contrib/miscutil/misc_utils.c +++ b/contrib/miscutil/misc_utils.c @@ -13,7 +13,6 @@ #include #include -#include #include #include "access/heapam.h" @@ -27,18 +26,14 @@ #include "fmgr.h" #include "storage/lmgr.h" #include "utils/fmgroids.h" -#include "utils/palloc.h" #include "utils/rel.h" #include "utils/tqual.h" #include "misc_utils.h" -#undef MIN -#define MIN(x,y) ((x)<=(y) ? (x) : (y)) - int -backend_pid() +backend_pid(void) { return getpid(); } @@ -51,15 +46,15 @@ unlisten(char *relname) } int -max(int x, int y) +int4max(int x, int y) { - return ((x > y) ? x : y); + return Max(x, y); } int -min(int x, int y) +int4min(int x, int y) { - return ((x < y) ? x : y); + return Min(x, y); } /* @@ -87,7 +82,7 @@ active_listeners(text *relname) if (relname && (VARSIZE(relname) > VARHDRSZ)) { MemSet(listen_name, 0, NAMEDATALEN); - len = MIN(VARSIZE(relname) - VARHDRSZ, NAMEDATALEN - 1); + len = Min(VARSIZE(relname) - VARHDRSZ, NAMEDATALEN - 1); memcpy(listen_name, VARDATA(relname), len); ScanKeyEntryInitialize(&key, 0, Anum_pg_listener_relname, @@ -102,7 +97,7 @@ active_listeners(text *relname) { d = heap_getattr(lTuple, Anum_pg_listener_pid, tdesc, &isnull); pid = DatumGetInt32(d); - if ((pid == ourpid) || (kill(pid, SIGTSTP) == 0)) + if ((pid == ourpid) || (kill(pid, 0) == 0)) count++; } heap_endscan(sRel); diff --git a/contrib/miscutil/misc_utils.h b/contrib/miscutil/misc_utils.h index f4577f49de4..3de5ac70018 100644 --- a/contrib/miscutil/misc_utils.h +++ b/contrib/miscutil/misc_utils.h @@ -3,8 +3,8 @@ int backend_pid(void); int unlisten(char *relname); -int max(int x, int y); -int min(int x, int y); +int int4max(int x, int y); +int int4min(int x, int y); int active_listeners(text *relname); #endif diff --git a/contrib/miscutil/misc_utils.sql.in b/contrib/miscutil/misc_utils.sql.in index ddf32748137..0f3fb394f67 100644 --- a/contrib/miscutil/misc_utils.sql.in +++ b/contrib/miscutil/misc_utils.sql.in @@ -38,15 +38,15 @@ LANGUAGE 'SQL'; -- CREATE OR REPLACE FUNCTION min(int4,int4) RETURNS int4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +AS 'MODULE_PATHNAME', 'int4min' +LANGUAGE 'C' STRICT; -- max(x,y) -- CREATE OR REPLACE FUNCTION max(int4,int4) RETURNS int4 -AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +AS 'MODULE_PATHNAME', 'int4max' +LANGUAGE 'C' STRICT; -- Return the number of active listeners on a relation -- diff --git a/contrib/userlock/user_locks.sql.in b/contrib/userlock/user_locks.sql.in index 1826fcf2491..c36a5df1223 100644 --- a/contrib/userlock/user_locks.sql.in +++ b/contrib/userlock/user_locks.sql.in @@ -17,74 +17,74 @@ SET autocommit TO 'on'; CREATE OR REPLACE FUNCTION user_lock(int4,int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_unlock(group,id,mode); -- CREATE OR REPLACE FUNCTION user_unlock(int4,int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock(group,id); -- CREATE OR REPLACE FUNCTION user_write_lock(int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock(group,id); -- CREATE OR REPLACE FUNCTION user_write_unlock(int4,int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock(group,oid); -- CREATE OR REPLACE FUNCTION user_write_lock(int4,oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock(group,oid); -- CREATE OR REPLACE FUNCTION user_write_unlock(int4,oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock_oid(oid); -- CREATE OR REPLACE FUNCTION user_write_lock_oid(oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock_oid(oid); -- CREATE OR REPLACE FUNCTION user_write_unlock_oid(oid) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_lock_oid(int4); -- CREATE OR REPLACE FUNCTION user_write_lock_oid(int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_write_unlock_oid(int4); -- CREATE OR REPLACE FUNCTION user_write_unlock_oid(int4) RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT; -- SELECT user_unlock_all(); -- CREATE OR REPLACE FUNCTION user_unlock_all() RETURNS int4 AS 'MODULE_PATHNAME' -LANGUAGE 'C'; +LANGUAGE C STRICT;