BTree tid operators and opclass

Started by Bruce Momjianabout 20 years ago5 messagespatches
Jump to latest
#1Bruce Momjian
bruce@momjian.us

Here's a small patch to add the full suite of btree operators for tids and the
corresponding btree opclass. This came up a while back on -hackers and a few
people were interested in it at the time. I just had a need for it again so I
added it.

I'm not sure how to allocate OIDs. I just looked for the greatest one in the
various .h files and started from there. It leads to some strange
discontinuities since there were existing = and <> operators.

Attachments:

tidops.patch2application/octet-streamDownload+114-27
#2Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#1)
Re: BTree tid operators and opclass

Greg Stark wrote:

Here's a small patch to add the full suite of btree operators for tids and the
corresponding btree opclass. This came up a while back on -hackers and a few
people were interested in it at the time. I just had a need for it again so I
added it.

I'm not sure how to allocate OIDs. I just looked for the greatest one in the
various .h files and started from there. It leads to some strange
discontinuities since there were existing = and <> operators.

Run /include/catalog/unused_oids to see the available OIDs and allocate
a large enough block.

--
Bruce Momjian bruce@momjian.us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#1)
Re: BTree tid operators and opclass

Greg Stark <gsstark@mit.edu> writes:

Here's a small patch to add the full suite of btree operators for tids and the
corresponding btree opclass.

This has been proposed and rejected before, mainly on the basis that
there's no conceivable application for an index on TID. What's your
use case?

regards, tom lane

#4Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#3)
Re: BTree tid operators and opclass

Tom Lane <tgl@sss.pgh.pa.us> writes:

Greg Stark <gsstark@mit.edu> writes:

Here's a small patch to add the full suite of btree operators for tids and the
corresponding btree opclass.

This has been proposed and rejected before, mainly on the basis that
there's no conceivable application for an index on TID. What's your
use case?

IIRC the use case that was previously suggested was the common Oracle idiom
for removing duplicates. The Postgrse equivalent would something like:

delete from tab where exists (
select 1 from tab as x where x.pk = tab.pk and x.ctid > tab.ctid
)

In my case I don't want to create an index on tid, I just have a list of tids
that I want to sort so I can process them in heap order.

I was going to just write a qsort comparator but this way I can use tuplesort
and not worry about what happens if it doesn't fit in memory.

--
greg

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#1)
Re: BTree tid operators and opclass

Greg Stark <gsstark@mit.edu> writes:

Here's a small patch to add the full suite of btree operators for tids
and the corresponding btree opclass.

Having just felt a need for MAX(tid) and MIN(tid) to look into a
performance issue, I went ahead and committed this. I'm aware that
your later patch for online indexes subsumes this, but that didn't
seem ready to apply ...

regards, tom lane