Re: using arrays within structure in ECPG

From: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>
To: Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: using arrays within structure in ECPG
Date: 2014-04-03 07:08:21
Message-ID: CAFjFpRfSXMtLnym6w4MKJEvYS65SAHZfrYohv1XcKZ_Et6WR_w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Michael,
The problem of offsets seems to be universal. If there is a structure
within structure. The offset to the members of inner structure should be
the size of the outer structure and not size of inner structure. Applying
this rule recursively, offset to the member of any nested structure, at
whatever level of nesting it is, should be same as the size of the
outermost structure. But the code as of now, is using the size of the
immediate parent.

None of these problems are caught in the regression because, whatever tests
I have seen are not fetching more than one tuple into such complex
structure.

On Tue, Apr 1, 2014 at 4:34 PM, Ashutosh Bapat <
ashutosh(dot)bapat(at)enterprisedb(dot)com> wrote:

> Hi MIchael,
> I tried to fix the offset problem. PFA the patch. It does solve the
> problem of setting wrong offset in ECPGdo() call.
>
> But then there is problem of interpreting the result from server as an
> array within array of structure. The problem is there is in
> ecpg_get_data(). This function can not understand that the "field" is an
> array of integers (or for that matter array of anything) and store all the
> values in contiguous memory at the given address.
>
>
>
> On Thu, Mar 27, 2014 at 11:05 PM, Michael Meskes <meskes(at)postgresql(dot)org>wrote:
>
>> On Mon, Mar 24, 2014 at 11:52:30AM +0530, Ashutosh Bapat wrote:
>> > For all the members of struct employee, except arr_col, the size of
>> array
>> > is set to 14 and next member offset is set of sizeof (struct employee).
>> But
>> > for arr_col they are set to 3 and sizeof(int) resp. So, for the next row
>> > onwards, the calculated offset of arr_col member would not coincide with
>> > the real arr_col member's address.
>> >
>> > Am I missing something here?
>>
>> No, this looks like a bug to me. I haven't had time to look into the
>> source codebut the offset definitely is off.
>>
>> Michael
>> --
>> Michael Meskes
>> Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
>> Michael at BorussiaFan dot De, Meskes at (Debian|Postgresql) dot Org
>> Jabber: michael.meskes at gmail dot com
>> VfL Borussia! Força Barça! Go SF 49ers! Use Debian GNU/Linux, PostgreSQL
>>
>
>
>
> --
> Best Wishes,
> Ashutosh Bapat
> EnterpriseDB Corporation
> The Postgres Database Company
>

--
Best Wishes,
Ashutosh Bapat
EnterpriseDB Corporation
The Postgres Database Company

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Oleg Bartunov 2014-04-03 07:32:26 json(b) equality rules
Previous Message Воронин Дмитрий 2014-04-03 05:32:49 Re: Fwd: SSL auth question