Re: Index AmInsert Parameter Confused?

From: jacktby jacktby <jacktby(at)gmail(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Cc: boekewurm+postgres(at)gmail(dot)com
Subject: Re: Index AmInsert Parameter Confused?
Date: 2023-09-27 03:03:40
Message-ID: 0DE3162E-375E-439C-A104-11E37B97BE5D@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> 2023年9月27日 00:45,Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com> 写道:
>
> On Tue, 26 Sept 2023 at 18:38, jacktby jacktby <jacktby(at)gmail(dot)com> wrote:
>>
>> typedef bool (*aminsert_function) (Relation indexRelation,
>> Datum *values,
>> bool *isnull,
>> ItemPointer heap_tid,
>> Relation heapRelation,
>> IndexUniqueCheck checkUnique,
>> bool indexUnchanged,
>> struct IndexInfo *indexInfo);
>>
>> Why is there a heap_tid, We haven’t inserted the value, so where does it from ?
>
> Index insertion only happens after the TableAM tuple has been
> inserted. As indexes refer to locations in the heap, this TID contains
> the TID of the table tuple that contains the indexed values, so that
> the index knows which tuple to refer to.
>
> Note that access/amapi.h describes only index AM APIs; it does not
> cover the table AM APIs descibed in access/tableam.h
>
> Kind regards,
>
> Matthias van de Meent
1.Thanks, so if we insert a tuple into a table which has a index on itself, pg will insert tuple into heap firstly, and the give the heaptid form heap to the Index am api right?
2. I’m trying to implement a new index, but I just need the data held in index table, I hope it’s not inserted into heap, because the all data I want can be in index table.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2023-09-27 03:40:08 Re: Move global variables of pgoutput to plugin private scope.
Previous Message Noah Misch 2023-09-27 01:28:30 Re: Fail hard if xlogreader.c fails on out-of-memory