Re: [HACKERS] indexes and floats

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: vadim(at)krs(dot)ru (Vadim Mikheev)
Cc: dg(at)informix(dot)com, brook(at)trillium(dot)nmsu(dot)edu, lockhart(at)alumni(dot)caltech(dot)edu, tgl(at)sss(dot)pgh(dot)pa(dot)us, hackers(at)postgresql(dot)org
Subject: Re: [HACKERS] indexes and floats
Date: 1998-08-07 05:03:42
Message-ID: 199808070503.BAA02872@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> David Gould wrote:
> >
> > > ^^^^^^^^^
> > > I don't like the idea to evaluate random() in WHERE x = random()
> > > for _each_ tuple. The same for WHERE insert_date = now() - 5
> > > /* 5 days */. Imho, these functions should be evaluated ONCE
> > > by executor, but EACH time when executor starts. There is big
> > > difference between evaluation in parser/planner and in executor
> > > due to ability (currently, very limitted) to have prepared plans
> > > (parsed/planned). And nothing more. Imho, queries must return
> > > consistent set of data: if I want to get rows inserted 5 days
> > > ago and run query with WHERE insert_date = now() - 5 near 12PM
> > > then I risk to get inconsistent set of rows if now() will be
> > > evaluated for EACH tuple.
> >
> > Perhaps random was a bad example, the point I was trying to make was that
> > it is a function that is not wholely determined by its arguments.
> >
> > However, I disagree with your contention about random() and now() also.
> > Think about the statement
> >
> > insert into samples
> > select random(), xval, yval from points;
> >
> > The intent being to associate a random value with each of the x,y pairs...
>
> Imho, we have to treat random() etc differently in target list and
> qual! WHERE defines set of rows to be returned by query, functions
> in target list define representation of this set.
>
> >
> > > > Also, perhaps instead of doing constant folding in the parser, consider makeing
> > > > it part of rewrite. This pass would just traverse the tree looking for
> > > > functions with constant arguements and would pre-evaluate them and and
> > > > save the result in the wherever the cacheable results would be stored. No
> > > > special case required except that the optimizer would have to notice that
> > > > a pre-computed result was available to use as a key value.
> > >
> > > This is bad for performance.
> >
> > What_ is the "This" that is bad for performance? It is not clear what you
> > mean here.
> >
> > Do you mean memoizing? If so, I strongly disagree, and there is a ton of
> > work on this that supports me.
> >
> > Or do you mean adding the cacheable function optimization to rewrite? If so,
> ^^^^^^^^^^
> This. Why should we traverse the tree once more time?
> What the problem to let parser handle these functions?
>
> > why is this a problem? I am assuming that this can be piggybacked on one
> > of the existing expression tree traversals, so I just don't see how
> > this creates more work than doing it in the parser.

Yep. Rewrite already is confusing. Parser has this type of handling in
there already.

--
Bruce Momjian | 830 Blythe Avenue
maillist(at)candle(dot)pha(dot)pa(dot)us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Thomas G. Lockhart 1998-08-07 05:07:29 Re: [HACKERS] indexes and floats
Previous Message Vadim Mikheev 1998-08-07 04:54:17 Re: [HACKERS] indexes and floats