| From: | Robert Haas <robertmhaas(at)gmail(dot)com> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | Greg Stark <stark(at)mit(dot)edu>, "<pgsql-hackers(at)postgresql(dot)org>" <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: join removal |
| Date: | 2009-08-28 03:23:48 |
| Message-ID: | 603c8f070908272023x549f9deeib5fc2170e0a7752a@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Sun, Aug 16, 2009 at 5:31 PM, Robert Haas<robertmhaas(at)gmail(dot)com> wrote:
> It seems that the needed checks are very similar to the ones that we
> already implement when setting restrictinfo->mergeopfamilies. That is
> filled in by get_mergejoin_opfamilies(), which checks for btree
> opfamilies where the strategy number is BTEqualStrategyNumber. This
> might cease to be the correct check in the (not-too-distant?) future
> if we end up implementing other kinds of unique indices, but right now
> btrees are all there is.
>
> One possibility would be to have relation_is_distinct_for() call
> get_mergejoin_opfamilies() for each operator; then for each index we
> can check whether the opfamily of the relevant index column is in the
> returned list. This seems a bit wasteful, though, since I believe
> that relation_is_distinct_for() would be called from joinpath.c, which
> has access to restrictinfo->mergeopfamilies already.
>
> I'm wondering whether it would make more sense to modify the proposed
> API for relation_is_distinct_for() in some way so that we don't lose
> this information.
Here is an attempt at the latter approach. This doesn't actually
remove the join yet; it just checks whether the join can be removed.
I haven't tested it extensively yet, but am hoping for some feedback
on the basic approach.
...Robert
| Attachment | Content-Type | Size |
|---|---|---|
| join_removal.wip.2009-08-27.patch | text/x-patch | 26.7 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Ron Mayer | 2009-08-28 03:39:17 | Re: 8.5 release timetable, again |
| Previous Message | Pavel Stehule | 2009-08-28 03:04:50 | patch: Review handling of MOVE and FETCH (ToDo) |