Обсуждение: MAGIC_MODULE and libc
I just upgraded to v8.2 and have an issue with one of my stored proc/functions that worked under 8.1: CREATE OR REPLACE FUNCTION getpid() RETURNS integer AS '/lib/libc.so.6', 'getpid' LANGUAGE 'c' VOLATILE; ERROR: incompatible library "/lib/libc.so.6": missing magic block SQL state: XX000 Hint: Extension libraries are required to use the PG_MODULE_MAGIC macro. I've added the appropriate macro to all my actual C code...but in this case surely I am not expected to recompile libc...am I? Is there an easier way to get the pid of the current process?
Jeff Amiel wrote: > I just upgraded to v8.2 and have an issue with one of my stored > proc/functions that worked under 8.1: > > CREATE OR REPLACE FUNCTION getpid() > RETURNS integer AS > '/lib/libc.so.6', 'getpid' > LANGUAGE 'c' VOLATILE; > > ERROR: incompatible library "/lib/libc.so.6": missing magic block > SQL state: XX000 > Hint: Extension libraries are required to use the PG_MODULE_MAGIC macro. > > I've added the appropriate macro to all my actual C code...but in this > case surely I am not expected to recompile libc...am I? Is there an > easier way to get the pid of the current process? I'd use MyProcPid from #include "miscadmin.h" -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc.
On Tue, Dec 19, 2006 at 08:20:23AM -0600, Jeff Amiel wrote: > ERROR: incompatible library "/lib/libc.so.6": missing magic block > SQL state: XX000 > Hint: Extension libraries are required to use the PG_MODULE_MAGIC macro. > > I've added the appropriate macro to all my actual C code...but in this > case surely I am not expected to recompile libc...am I? Is there an > easier way to get the pid of the current process? In general you should use a wrapper library, but in your case pg_backend_pid() will do it. Have a nice day, -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > From each according to his ability. To each according to his ability to litigate.
Вложения
yup...
I did this
CREATE OR REPLACE FUNCTION getpid()
RETURNS integer AS
$BODY$
DECLARE
thepid integer;
BEGIN
select into thepid pg_backend_pid from pg_backend_pid();
return thepid;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
thanks!!!
Martijn van Oosterhout wrote:
I did this
CREATE OR REPLACE FUNCTION getpid()
RETURNS integer AS
$BODY$
DECLARE
thepid integer;
BEGIN
select into thepid pg_backend_pid from pg_backend_pid();
return thepid;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
thanks!!!
Martijn van Oosterhout wrote:
On Tue, Dec 19, 2006 at 08:20:23AM -0600, Jeff Amiel wrote:ERROR: incompatible library "/lib/libc.so.6": missing magic block SQL state: XX000 Hint: Extension libraries are required to use the PG_MODULE_MAGIC macro. I've added the appropriate macro to all my actual C code...but in this case surely I am not expected to recompile libc...am I? Is there an easier way to get the pid of the current process?In general you should use a wrapper library, but in your case pg_backend_pid() will do it. Have a nice day,