[PATCH] Optimize IS DISTINCT FROM NULL => IS NOT NULL

From: Marti Raudsepp <marti(at)juffo(dot)org>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: [PATCH] Optimize IS DISTINCT FROM NULL => IS NOT NULL
Date: 2012-03-08 17:00:58
Message-ID: CABRT9RAJqPOJ9Wkjg-g1H8-ov2DWXoC=-2q5bkxT=xmq-39pGA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi list,

This patch enables a simple optimization in
eval_const_expressions_mutator. If we know that one argument to
DistinctExpr is NULL then we can optimize it to a NullTest, which can
be an indexable expression.

For example the query:
EXPLAIN (costs off) SELECT * FROM foo WHERE j IS NOT DISTINCT FROM NULL;

Old behavior:
Seq Scan on foo
Filter: (NOT (j IS DISTINCT FROM NULL::integer))

New behavior:
Index Scan using foo_j_idx on foo
Index Cond: (j IS NULL)

Regards,
Marti

Attachment Content-Type Size
distinct-to-nulltest.patch text/x-patch 3.2 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2012-03-08 17:35:36 Re: [PATCH] Optimize IS DISTINCT FROM NULL => IS NOT NULL
Previous Message Peter Geoghegan 2012-03-08 16:42:58 Re: pg_stat_statements and planning time