Re: WIP: Covering + unique indexes.

From: Alexander Korotkov <a(dot)korotkov(at)postgrespro(dot)ru>
To: Peter Geoghegan <pg(at)bowt(dot)ie>
Cc: Teodor Sigaev <teodor(at)sigaev(dot)ru>, Anastasia Lubennikova <a(dot)lubennikova(at)postgrespro(dot)ru>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Alexander Kuzmenkov <a(dot)kuzmenkov(at)postgrespro(dot)ru>
Subject: Re: WIP: Covering + unique indexes.
Date: 2018-04-06 17:33:56
Message-ID: CAPpHfdv4=byzf+rH5DvzAS3odmej36KZFcvZ_f+1yc4KctBoMQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Apr 6, 2018 at 8:22 PM, Peter Geoghegan <pg(at)bowt(dot)ie> wrote:

> On Fri, Apr 6, 2018 at 10:20 AM, Teodor Sigaev <teodor(at)sigaev(dot)ru> wrote:
> > As far I can see, there is no any on-disk representation differece for
> > *existing* indexes. So, pg_upgrade is not need here and there isn't any
> new
> > code to support "on-fly" modification. Am I right?
>
> Yes.
>
> I'm going to look at this again today, and will post something within
> 12 hours. Please hold off on committing until then.
>

Thank you.

Thinking about that again, I found that we should relax our requirements to
"minus infinity" items, because pg_upgraded indexes doesn't have any
special bits set for those items.

What do you think about applying following patch on the top of v14?

diff --git a/src/backend/access/nbtree/nbtsearch.c
b/src/backend/access/nbtree/nbtsearch.c
index 44605fb5a4..53dc47ff82 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -2000,8 +2000,12 @@ _bt_check_natts(Relation index, Page page,
OffsetNumber offnum)
}
else if (!P_ISLEAF(opaque) && offnum == P_FIRSTDATAKEY(opaque))
{
- /* Leftmost tuples on non-leaf pages have no attributes */
- return (BTreeTupGetNAtts(itup, index) == 0);
+ /*
+ * Leftmost tuples on non-leaf pages have no attributes, or haven't
+ * INDEX_ALT_TID_MASK set in pg_upgraded indexes.
+ */
+ return (BTreeTupGetNAtts(itup, index) == 0 ||
+ ((itup->t_info & INDEX_ALT_TID_MASK) == 0));
}
else
{

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alexander Korotkov 2018-04-06 17:39:26 Re: pgsql: New files for MERGE
Previous Message Tomas Vondra 2018-04-06 17:26:23 Re: [HACKERS] [PATCH] Incremental sort