BUG #3943: ecpg doesn't like "inet" operator

Started by Arnaudabout 18 years ago2 messagesbugs
Jump to latest
#1Arnaud
arnaud.desmier@free.fr

The following bug has been logged online:

Bug reference: 3943
Logged by: Arnaud
Email address: arnaud.desmier@free.fr
PostgreSQL version: 8.3.0
Operating system: linux debian etch
Description: ecpg doesn't like "inet" operator
Details:

This is a sample of my C programm resuming the problem :

***************************************************
#include <stdio.h>
#include <stdlib.h>

int main()
{
EXEC SQL BEGIN DECLARE SECTION;

char *ip_address = "192.168.1.2";
char ip_result[20];

EXEC SQL END DECLARE SECTION;

EXEC SQL WHENEVER SQLWARNING SQLPRINT;

EXEC SQL CONNECT TO synch@localhost USER synch IDENTIFIED BY synch;

EXEC SQL SELECT text(inet :ip_address) INTO :ip_result;

EXEC SQL DISCONNECT;

printf("ip_result: %s\n", ip_result);

return EXIT_SUCCESS;
}

***************************************************

And ecpg returns :
test_sql.pgc:17: ERROR: syntax error at or near ":ip_address"

This error correpond with "EXEC SQL SELECT inet :ip_address;". If I remove
inet operator it works well. Of course text() does nothing when I remove
inet as postgres doesn't now it is an IP address.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Arnaud (#1)
Re: BUG #3943: ecpg doesn't like "inet" operator

"Arnaud" <arnaud.desmier@free.fr> writes:

EXEC SQL SELECT text(inet :ip_address) INTO :ip_result;

This is incorrect, and always has been, but 8.3 is more picky about it.
Use a cast instead, eg

EXEC SQL SELECT text(:ip_address :: inet) INTO :ip_result;

regards, tom lane