Re: Pluggable Storage - Andres's take

From: Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>
To: kommi(dot)haribabu(at)gmail(dot)com
Cc: andres(at)anarazel(dot)de, alvherre(at)2ndquadrant(dot)com, david(dot)rowley(at)2ndquadrant(dot)com, robertmhaas(at)gmail(dot)com, apraveen(at)pivotal(dot)io, pgsql-hackers(at)postgresql(dot)org, aagrawal(at)pivotal(dot)io, 9erthalion6(at)gmail(dot)com, a(dot)korotkov(at)postgrespro(dot)ru, hlinnaka(at)iki(dot)fi
Subject: Re: Pluggable Storage - Andres's take
Date: 2019-03-12 08:27:57
Message-ID: 20190312.172757.17614556.horiguchi.kyotaro@lab.ntt.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello.

I had a look on the patch set. I cannot see the thread structure
due to the depth and cannot get the picture on the all patches,
but I have some comments. I apologize in advance for possible
duplicate with upthread.

0001-Reduce-the...

This doesn't apply master.

> TupleTableSlot *
> ExecStoreHeapTuple(HeapTuple tuple,
> TupleTableSlot *slot,
> + Oid relid,
> bool shouldFree)

The comment for ExecStoreHeapTuple is missing the description
on "relid" parameter.

> - if (HeapTupleSatisfiesVisibility(tuple, &SnapshotDirty, hscan->rs_cbuf))
> + if (HeapTupleSatisfiesVisibility(tuple, RelationGetRelid(hscan->rs_scan.rs_rd),
> + &SnapshotDirty, hscan->rs_cbuf))

The second parameter seems to be always
RelationGetRelid(...). Actually only relid is required but isn't
it better to take Relation instead of Oid as the second
parameter?

0005-Reorganize-am-as...

> + catalog. The contents of an table are entirely under the control of its

"of an table" => "of a table"

0006-Doc-update-of-Create-access..

> + be <type>index_am_handler</type> and for <literal>TABLE</literal>
> + access methods, it must be <type>table_am_handler</type>.
> + The C-level API that the handler function must implement varies
> + depending on the type of access method. The index access method API
> + is described in <xref linkend="index-access-methods"/> and the table access method
> + API is described in <xref linkend="table-access-methods"/>.

If table is the primary object, talbe-am should precede index-am?

0007-Doc-update-of-create-materi..

> + This clause specifies optional access method for the new materialize view;

"materialize view" => "materialized view"?

> + If this option is not specified, then the default table access method

I'm not sure the 'then' is needed.

> + is chosen for the new materialized view. see <xref linkend="guc-default-table-access-method"/>

"see" => "See"

0008-Doc-update-of-CREATE_TABLE..

> +[ USING <replaceable class="parameter">method</replaceable> ]

*I* prefer access_method to just method.

> + If this option is not specified, then the default table access method

Same to 0007. "I'm not sure the 'then' is needed.".

> + is chosen for the new table. see <xref linkend="guc-default-table-access-method"/>

Same to 0007. " "see" => "See" "
"

0009-Doc-of-CREATE-TABLE-AS

Same as 0008.

0010-Table-access-method-API-

> + Any new <literal>TABLE ACCSESS METHOD</literal> developers can refer the exisitng <literal>HEAP</literal>

> + There are differnt type of API's that are defined and those details are below.

"differnt" => "different"

> + by the AM, in case if it support parallel scan.

"support" => "supports"

> + This API to return the total size that is required for the AM to perform

Total size of what? Shared memory chunk? Or parallel scan descriptor?

> + the parallel table scan. The minimum size that is required is
> + <structname>ParallelBlockTableScanDescData</structname>.

I don't get what the "The minimum size" tells. Just reading
this I would always return the minimum size...

> + This API to perform the initialization of the <literal>parallel_scan</literal>
> + that is required for the parallel scan to be performed by the AM and also return
> + the total size that is required for the AM to perform the parallel table scan.

(Note: I'm not good at English..) Similar to the above. I cannot
read what the "size" is for.

In the code it is used as:

> Size snapshot_off = rel->rd_tableam->parallelscan_initialize(rel, pscan);

(The varialbe name should be snapshot_offset) It is the offset
from the beginning of parallel scan descriptor but it should be
described in other representation, which I'm not sure of..

Something like this?

> This API to initialize a parallel scan by the AM and also
> return the consumed size so far of parallel scan descriptor.

(Sorry for not finishing. Time's up today.)

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Antonin Houska 2019-03-12 08:36:30 Re: Suggestions on message transfer among backends
Previous Message Amit Langote 2019-03-12 08:22:59 Re: speeding up planning with partitions