Re: WIP: Covering + unique indexes. - Mailing list pgsql-hackers
From | Alexander Korotkov |
---|---|
Subject | Re: WIP: Covering + unique indexes. |
Date | |
Msg-id | CAPpHfdsRDDQ4sqpb2+igiRok3r_EVZ0GJNC+nC98-gxW02MGaQ@mail.gmail.com Whole thread Raw |
In response to | Re: WIP: Covering + unique indexes. (Alexander Korotkov <a.korotkov@postgrespro.ru>) |
Responses |
Re: WIP: Covering + unique indexes.
(Peter Geoghegan <pg@bowt.ie>)
|
List | pgsql-hackers |
On Wed, Mar 21, 2018 at 9:51 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote:
On Thu, Mar 8, 2018 at 7:13 PM, Anastasia Lubennikova <a.lubennikova@postgrespro.ru> wrote:06.03.2018 11:52, Thomas Munro:On Wed, Jan 31, 2018 at 3:09 AM, Anastasia Lubennikova
<a.lubennikova@postgrespro.ru> wrote:Thank you for reviewing. All mentioned issues are fixed.== Applying patch 0002-covering-btree_v4.patch...
1 out of 1 hunk FAILED -- saving rejects to file
src/backend/access/nbtree/README.rej
1 out of 1 hunk FAILED -- saving rejects to file
src/backend/access/nbtree/nbtxlog.c.rej
Can we please have a new patch set?
Here it is.
Many thanks to Andrey Borodin.I took a look at this patchset. I have some notes about it.* I see patch changes dblink, amcheck and tcl contribs. It would be nice to add correspondingcheck to dblink and amcheck regression tests. It would be good to do the same with tcn contrib.But tcn doesn't have regression tests at all. And it's out of scope of this patch to add regressiontests to tcn. So, it's OK to just check that it's working correctly with covering indexes (I hope it'salready done by other reviewers).* I think that subscription regression tests in src/test/subscription should have some useof covering indexes. Logical decoding and subscription are heavily using primary keys.So they need to be tested to work correctly with covering indexes.* I also think some isolation tests in src/test/isolation need to check covering indexes too.In particular insert-conflict-*.spec and lock-*.spec and probably more.* pg_dump doesn't handle old PostgreSQL versions correctly. If I try to dump databaseof PostgreSQL 9.6, pg_dump gives me following error:pg_dump: [archiver (db)] query failed: ERROR: column i.indnkeyatts does not existLINE 1: ...atalog.pg_get_indexdef(i.indexrelid) AS indexdef, i.indnkeya... ^If fact there is a sequence of "if" ... "else if" blocks in getIndexes() which selectsappropriate query depending on remote server version. And for pre-11 we shoulduse indnatts instead of indnkeyatts.* I would also like all the patches in patchset version to have same version number.* There is minor formatting issue in this part of code. Some spaces need to be replaced with tabs.+IndexTuple+index_truncate_tuple(Relation idxrel, IndexTuple olditup)+{+ TupleDesc itupdesc = CreateTupleDescCopyConstr(RelationGetDescr(idxrel)); + Datum values[INDEX_MAX_KEYS];+ bool isnull[INDEX_MAX_KEYS];+ IndexTuple newitup;* I think this comment needs to be rephrased.+ /*+ * Code below is concerned to the opclasses which are not used+ * with the included columns.+ */I would write something like this: "Code below checks opclass key type. Included columnsdon't have opclasses, and this check is not required for them.". Native english speakerscould provide even better phrasing though.I understand that "Covering-btree" and "Covering-amcheck" have less previousversions than "Covering-core". But it's way easier to identify patches belonging tothe same patchset version if they have same version number. For sure, then somepatches would skip some version numbers, but that doesn't seem to be a problem for me.
I have few more notes regarding this patchset.
* indkeyatts is described in the documentation, but I think that description of indnatts
should be also updated clarifying that indnatts counts "included" columns.
+ <row>
+ <entry><structfield>indnkeyatts</structfield></entry>
+ <entry><type>int2</type></entry>
+ <entry></entry>
+ <entry>The number of key columns in the index. "Key columns" are ordinary
+ index columns (as opposed to "included" columns).</entry>
+ </row>
* It seems like this paragraph appears in the patchset without any mentioning
in the thread.
+Notes to Operator Class Implementors
+------------------------------------
Besides I really appreciate it, it seems to be unrelated to the covering indexes.
I'd like this to be extracted into separate patch and be committed separately.
* There is a typo here: brtee -> btree
+ * 7. Check various AMs. All but brtee must fail.
* This comment should be updated assuming that we now put left page
hikey to the WAL independently on whether it's leaf page split.
+ /*
+ * We must also log the left page's high key, because the right
+ * page's leftmost key is suppressed on non-leaf levels. Show it
+ * as belonging to the left page buffer, so that it is not stored
+ * if XLogInsert decides it needs a full-page image of the left
+ * page.
+ */
* get_index_def() is adjusted to support covering indexes. I think this support
deserve to be checked in regression tests.
* In PostgreSQL sentences are sometimes divided by single spacing, sometimes
divided by double spacing. I think we should follow general rule here: code should
look like its surroundings. Could you please recheck that through the patch.
I notices that especially in documentation you frequently use single spacing while
surrounding uses double spacing.
Rest of things look OK to me for now.
------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company
pgsql-hackers by date: