Re: using arrays within structure in ECPG

Поиск
Список
Период
Сортировка
От Ashutosh Bapat
Тема Re: using arrays within structure in ECPG
Дата
Msg-id CAFjFpRfSXMtLnym6w4MKJEvYS65SAHZfrYohv1XcKZ_Et6WR_w@mail.gmail.com
обсуждение исходный текст
Ответ на Re: using arrays within structure in ECPG  (Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>)
Список 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.bapat@enterprisedb.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@postgresql.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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Re: Doing better at HINTing an appropriate column within errorMissingColumn()
Следующее
От: Oleg Bartunov
Дата:
Сообщение: json(b) equality rules