const cast ?

From: <doj(at)wwws2(dot)redaex(dot)de>
To: PostgreSQL-SQL <pgsql-sql(at)postgresql(dot)org>
Subject: const cast ?
Date: 2001-02-02 13:22:13
Message-ID: 20010202142213.32170@wwws2.redaex.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello Postgres Users and Developers,

I have the following scenario:
create table t (i int);
create index ti on t(i);

Now this table is filled with some values and the table is vacuum analyzed.

Now I would like to run queries on this table which should use the index
whenever possible, so they execute fast.

If I try a simple query like: "select * from t where i=4" the index is used.
A query like: "select * from t where i=abs(4)" is using the index too.
But if I use more complex functions like the following:
"select * from t where i=date_part('year', '2001-01-01'::date)"
a sequential scan on the table is performed.

Now I conclude that the planner/optimizer does not recognize that the
date_part() function returns the same value upon each execution.

What I would like to know: Could we use some const-cast, so the optimzer gets
a hint in optimizing the query ?
I think of something like:
"select * from t where i=date_part('year', '2001-01-01'::date)::const"

Would this be hard to implement, or are there any theoretical issues which
permit this. My thoughts are, that if the user declares something as const,
although it might not always be const, the database should not worry about
the complete truth and just assume the statement as const.

Or Is this feature available already, and I have just missed the correct
keyword?

--
--
---> doj(at)redaex(dot)de

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Brice Ruth 2001-02-02 14:41:01 Re: SQL Join - MySQL/PostgreSQL difference?
Previous Message Michael Ansley 2001-02-02 13:02:05 RE: const cast ?