Re: [PATCH] Fix ouside scope t_ctid (ItemPointerData)

Поиск
Список
Период
Сортировка
От Ranier Vilela
Тема Re: [PATCH] Fix ouside scope t_ctid (ItemPointerData)
Дата
Msg-id CAEudQAptfGKXkunbLhk9_tcpXK1hfOt66VVLNPQtBDh4MEY0GA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [PATCH] Fix ouside scope t_ctid (ItemPointerData)  (Mark Dilger <mark.dilger@enterprisedb.com>)
Список pgsql-hackers
Em qui., 14 de mai. de 2020 às 19:49, Mark Dilger <mark.dilger@enterprisedb.com> escreveu:


> On May 14, 2020, at 11:34 AM, Ranier Vilela <ranier.vf@gmail.com> wrote:
>
> Certainly.
> In the same file you can find the appropriate use of the API.
> ItemPointerSet(&heapTuple->t_self, blkno, offnum);

It took a couple reads through your patch to figure out what you were trying to accomplish, and I think you are uncomfortable with assigning one ItemPointerData variable from another.    ItemPointerData is just a struct with three int16 variables.  To make a standalone program that has the same structure without depending on any postgres headers, I'm using "short int" instead of "int16" and structs "TwoData" and "ThreeData" that are analogous to BlockIdData and OffsetNumber.

#include <stdio.h>

typedef struct TwoData {
    short int a;
    short int b;
} TwoData;

typedef struct ThreeData {
    TwoData left;
    short int right;
} ThreeData;

int main(int argc, char **argv)
{
    ThreeData x = { { 5, 10 }, 15 };
    ThreeData y = x;
    x.left.a = 0;
    x.left.b = 1;
    x.right = 2;

    printf("y = { { %d, %d }, %d }\n",
        y.left.a, y.left.b, y.right);

    return 0;
}

If you compile and run this, you'll notice it outputs:

y = { { 5, 10 }, 15 }

and not the { { 0, 1}, 2 } that you would expect if y were merely pointing at x.
Thanks for the example.
But what I wanted to test was
struct1 = struct2;
Both being of the same type of structure.

What I wrongly deduced was that the address of struct2 was saved and not its content.

Again, thanks for your time and clarification.

regards,
Ranier Vilela

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

Предыдущее
От: Ranier Vilela
Дата:
Сообщение: Re: [PATCH] Fix ouside scope t_ctid (ItemPointerData)
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: Event trigger code comment duplication