From: Jürgen Cappel <email@juergen-cappel.de>
To: pgsql-interfaces@postgresql.org
Subject: ecpg with nested structure
Date: Sat, 27 Dec 2003 08:36:44 +0100
Message-ID: <JEEKIPNAKJNCFLMOBKHGEEALDCAA.email@juergen-cappel.de> (raw)
Hello,
while porting an application from CA/Ingres to PostgreSQL
I came across a segmentation fault by ecpg. The code looks
something like this:
EXEC SQL BEGIN DECLARE SECTION;
struct bnd_a
{
struct bnd_b
{
char myvar[31];
} bnd_b[5];
} bnd_a[5];
EXEC SQL END DECLARE SECTION;
myfunction()
{
EXEC SQL DECLARE mycursor CURSOR FOR
SELECT mycolumn FROM mytable;
EXEC SQL OPEN mycursor;
EXEC SQL FETCH mycursor
INTO :bnd_a[0].bnd_b[0].myvar;
EXEC SQL CLOSE mycursor;
}
Versions are:
ecpg (PostgreSQL 7.4) 3.0.0
Linux scaleo 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown
Stack trace:
#0 0x40163a40 in strcmp () from /lib/libc.so.6
#1 0x080678d2 in find_struct_member (name=0x80c0f88 "bnd_a[0].bnd_b[0]",
str=0x80c0f97 "0]", members=0x80c1170, brace_level=0) at variable.c:37
#2 0x08067c1f in find_struct_member (name=0x80c0f88 "bnd_a[0].bnd_b[0]",
str=0x80c0f91 "bnd_b[0]", members=0x80c11a0, brace_level=0) at
variable.c:110
#3 0x08067ea6 in find_struct (name=0x80c0f88 "bnd_a[0].bnd_b[0]",
next=0x80c0f8d "[0].bnd_b[0]", end=0x80c0f90 ".bnd_b[0]") at
variable.c:185
#4 0x08067fb3 in find_variable (name=0x80c0f88 "bnd_a[0].bnd_b[0]")
at variable.c:238
#5 0x080604c0 in yyparse () at preproc.y:6152
#6 0x08066632 in main (argc=4, argv=0xbffff284) at ecpg.c:394
#7 0x401089ed in __libc_start_main () from /lib/libc.so.6
Are nested structures not supported by ecpg ?
Thanks for any information,
Jürgen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: email@juergen-cappel.de
Subject: Re: ecpg with nested structure
In-Reply-To: <JEEKIPNAKJNCFLMOBKHGEEALDCAA.email@juergen-cappel.de>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox