Re: Pluggable Storage - Andres's take
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
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
Commits
-
Add default_table_access_method to postgresql.conf.sample.
- 3a5c08aa0267 12.0 landed
- f7db0ac7d5b6 13.0 landed
-
tableam: Avoid relying on relation size to determine validity of tids.
- 147e3722f7e5 12.0 landed
-
tableam: Don't assume that every AM uses md.c style storage.
- 7f44ede59414 12.0 landed
-
Allow pg_class xid & multixid horizons to not be set.
- fdc7efcc30b1 12.0 landed
-
Fix slot type issue for fuzzy distance index scan over out-of-core table AM.
- b8b94ea129ff 12.0 cited
-
tableam: comment and formatting fixes.
- 6421011ea24d 12.0 landed
-
table: docs: fix typos and grammar.
- 86cc06d1cf9c 12.0 landed
-
tableam: basic documentation.
- b73c3a11963c 12.0 landed
-
Only allow heap in a number of contrib modules.
- 4b82664156c2 12.0 landed
-
tableam: Add table_finish_bulk_insert().
- d45e40158623 12.0 landed
-
tableam: sample scan.
- 73c954d24896 12.0 landed
-
tableam: bitmap table scan.
- bfbcad478f05 12.0 landed
-
tableam: Move heap specific logic from estimate_rel_size below tableam.
- 696d78469f37 12.0 landed
-
tableam: VACUUM and ANALYZE support.
- 737a292b5de2 12.0 landed
-
tableam: relation creation, VACUUM FULL/CLUSTER, SET TABLESPACE.
- d25f519107bf 12.0 landed
-
tableam: Support for an index build's initial table scan(s).
- 2a96909a4a8c 12.0 landed
-
tableam: Add table_get_latest_tid, to wrap heap_get_latest_tid.
- 2e3da03e9ee4 12.0 landed
-
tableam: Add helper for indexes to check if a corresponding table tuples exist.
- 71bdc99d0d7c 12.0 landed
-
tableam: Add and use table_fetch_row_version().
- 9a8ee1dc650b 12.0 landed
-
tableam: Use in CREATE TABLE AS and CREATE MATERIALIZED VIEW.
- 919e48b94301 12.0 landed
-
Ensure sufficient alignment for ParallelTableScanDescData in BTShared.
- 8cacea7a7251 12.0 landed
-
Don't reuse slots between root and partition in ON CONFLICT ... UPDATE.
- 277cb789836b 12.0 landed
-
Use a virtual rather than a heap slot in two places where that suffices.
- 70b9bda65f81 12.0 landed
-
Store tuples for EvalPlanQual in slots, rather than as HeapTuples.
- ad0bda5d24ea 12.0 landed
-
Use slots in trigger infrastructure, except for the actual invocation.
- ff11e7f4b9ae 12.0 landed
-
Store table oid and tuple's tid in tuple slots directly.
- b8d71745eac0 12.0 landed
-
Allow to use HeapTupleData embedded in [Buffer]HeapTupleTableSlot.
- 5408e233f066 12.0 landed
-
Add ExecStorePinnedBufferHeapTuple.
- 8aa02b52db11 12.0 landed
-
Add ArchiveOpts to pass options to ArchiveEntry
- f831d4accda0 12.0 cited
-
Rename RelationData.rd_amroutine to rd_indam.
- 346ed70b0ad7 12.0 landed
-
Rephrase references to "time qualification".
- ebcc7bf949ba 12.0 landed
-
Move remaining code from tqual.[ch] to heapam.h / heapam_visibility.c.
- c91560defc57 12.0 landed
-
Move generic snapshot related code from tqual.h to snapmgr.h.
- b7eda3e0e334 12.0 landed
-
Remove superfluous tqual.h includes.
- e7cc78ad43eb 12.0 landed
-
Don't duplicate parallel seqscan shmem sizing logic in nbtree.
- 90525d7b4e0f 12.0 landed
-
Move vacuumlazy.c into access/heap.
- 285d8e12055f 12.0 landed
-
Support parallel bitmap heap scans.
- f35742ccb7aa 10.0 cited