ecpg issue - not sending datatype to the backend

From: Mike Aubury <mike(dot)aubury(at)aubit(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Michael Meskes <meskes(at)postgresql(dot)org>
Subject: ecpg issue - not sending datatype to the backend
Date: 2008-05-02 13:28:31
Message-ID: 200805021428.31432.mike.aubury@aubit.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

This is a little complex to explain - so its probably better with an example..

I don't know if theres some inbuilt function to tell you what datatype a value
is - so 'kludged' this together :

CREATE OR REPLACE FUNCTION rval_type(m date) RETURNS text AS $$
BEGIN
RETURN 'it was a date';
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION rval_type(m text) RETURNS text AS $$
BEGIN
RETURN 'it was a text';
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION rval_type(m int) RETURNS text AS $$
BEGIN
RETURN 'it was a int';
END;
$$ LANGUAGE plpgsql;

Now - if I have a cpc containing :

main() {
exec sql begin declare section;
date d;
int i;
char a[200];
char lv_out[200];
exec sql end declare section;

exec sql database test1;

d=0;
i=0;
strcpy(a,"-");
memset(lv_out,0,sizeof(lv_out));

exec sql select rval_type(:d) into :lv_out;
if (sqlca.sqlcode<0) sqlprint();
else printf("%s\n",lv_out);

exec sql select rval_type(:i) into :lv_out;
if (sqlca.sqlcode<0) sqlprint();
else printf("%s\n",lv_out);

exec sql select rval_type(:a) into :lv_out;
if (sqlca.sqlcode<0) sqlprint();
else printf("%s\n",lv_out);

}

You can see I'm passing in a date, then an integer, then a character string.
However - when you run the code you get :

it was a text
it was a text
it was a text

This to me looks 'wrong', especially when previous versions of ecpg (<8.0?)
gave the correct :

it was a date
it was a int
it was a text

Any thoughts ?
(This is manifesting itself as arithmetic errors when I'm using dates in my
application)

--
Mike Aubury

Aubit Computing Ltd is registered in England and Wales, Number: 3112827
Registered Address : Clayton House,59 Piccadilly,Manchester,M1 2AQ

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Sullivan 2008-05-02 13:39:32 Re: Odd timezone backend output
Previous Message Heikki Linnakangas 2008-05-02 10:16:49 Re: Patch to add objetct size on "\d+" verbose output