From: | Tim Hawes <thawes(at)novadine(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | C Extension woes |
Date: | 2008-08-13 10:52:00 |
Message-ID: | 48A2BCD0.3030105@novadine.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello all,
I am trying to write an extension in C that returns a simple environment
variable. The code compiles without any complaint or warning, and it
loads fine into the database, however, when I run the function, I get
disconnected from the server.
Here is my C code:
#include <postgres.h>
#include <fmgr.h>
PG_MODULE_MAGIC;
#include <stdio.h>
#include <stdlib.h>
PG_FUNCTION_INFO_V1(pl_masterkey);
text * pl_masterkey(PG_FUNCTION_ARGS)
{
char *e_var = getenv("PGMASTERKEY");
size_t length = VARSIZE(e_var) - VARHDRSZ;
text * mkey = (text *) palloc(length);
VARATT_SIZEP(mkey) = length;
memcpy(VARDATA(mkey), e_var, length);
return mkey;
}
And here is the SQL I use to create the function in PostgreSQL:
CREATE FUNCTION pl_masterkey() RETURNS text
AS 'pl_masterkey', 'pl_masterkey'
LANGUAGE C STRICT;
And the results:
select pl_masterkey();
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.
!>
Thanks ahead of time for any and all help.
From | Date | Subject | |
---|---|---|---|
Next Message | Jan Urbański | 2008-08-13 11:18:25 | Re: C Extension woes |
Previous Message | Gregory Stark | 2008-08-13 10:43:25 | Re: Replay attack of query cancel |