> 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.