Returning a char from a C-language function

Started by I. B.almost 16 years ago2 messagesgeneral
Jump to latest
#1I. B.
i.bre@live.com

I have a small problem when trying to make a C-language function to return one character. The code is very simple and that's what's making it so strange.

Datum val_ibool(PG_FUNCTION_ARGS)
{
iBool *input = (iBool *) PG_GETARG_POINTER(0);

PG_RETURN_CHAR(input->value);
}

input is a structure containing a character as value. I also tried this, but it didn't work:

Datum val_ibool(PG_FUNCTION_ARGS)
{
char test = 'a';

PG_RETURN_CHAR(test);
}

On the other side I have this:

CREATE FUNCTION val(ibool)
RETURNS char
AS '/home/ivan/Desktop/diplomski/trunk/C/modbms', 'val_ibool'
LANGUAGE C STRICT;

Any advice?

_________________________________________________________________
Hotmail: Trusted email with powerful SPAM protection.
https://signup.live.com/signup.aspx?id=60969

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: I. B. (#1)
Re: Returning a char from a C-language function

"I. B." <i.bre@live.com> writes:

I have a small problem when trying to make a C-language function to return one character. The code is very simple and that's what's making it so strange.

CREATE FUNCTION val(ibool)
RETURNS char

You need to write "char", with the quotes. Without the quotes the type
name is taken as CHARACTER(1), ie what's internally called BpChar.
Totally different animal.

regards, tom lane