[BUG] Storage declaration in ECPG

Started by Andrey Sokolovover 3 years ago4 messageshackers
Jump to latest
#1Andrey Sokolov
a.sokolov@arenadata.io

Attachments:

0001-Fix-storage-declaration-in-ECPG.patchtext/x-diff; name=0001-Fix-storage-declaration-in-ECPG.patchDownload+307-2
#2Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: Andrey Sokolov (#1)
Re: [BUG] Storage declaration in ECPG

At Sun, 04 Sep 2022 13:49:53 +0300, Andrey Sokolov <a.sokolov@arenadata.io> wrote in

Hi,

The ECPG preprocessor converts the code
"static VARCHAR str1[10], str2[20], str3[30];"
into
"static struct varchar_1 { int len; char arr[ 10 ]; } str1 ;
struct varchar_2 { int len; char arr[ 20 ]; } str2 ;
struct varchar_3 { int len; char arr[ 30 ]; } str3 ;".
Storage declaration applies only to the first structure.

Good catch!

The patch in the attachment fixes the bug. Storage declaration will be
repeated before each structure.
The patch is on github too:
https://github.com/andr-sokolov/postgresql/commit/c8f8fc7a211938569e7d46c91a428d8cb25b6f9c

And the code looks good to me.

About the test, don't we need the test for non-varchar/bytea static
variables like "static int inta, intb, intc;"?

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

#3Andrey Sokolov
a.sokolov@arenadata.io
In reply to: Kyotaro Horiguchi (#2)
Re: [BUG] Storage declaration in ECPG

Attachments:

v2-0001-Fix-storage-declaration-in-ECPG.patchtext/x-diff; name=v2-0001-Fix-storage-declaration-in-ECPG.patchDownload+503-2
#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrey Sokolov (#3)
Re: [BUG] Storage declaration in ECPG

Andrey Sokolov <a.sokolov@arenadata.io> writes:

[ v2-0001-Fix-storage-declaration-in-ECPG.patch ]

Pushed. I didn't think a whole new test case was appropriate,
either from the patch-footprint or test-runtime standpoint,
so I just added a couple of declarations to preproc/variable.pgc.

regards, tom lane