> On Mon, Sep 15, 2008 at 06:46:16PM +0900, Tatsuo Ishii wrote:
> > > > * Single Evaluation:
> > > >
> > > > with
> > > > foo(i) as (select random() as i)
> > > > select * from foo union all select * from foo;
> > > > i
> > > > -------------------
> > > > 0.233165248762816
> > > > 0.62126633618027
> > > > (2 rows)
> > > >
> > > > The standard specifies that non-recursive WITH should be
> > > > evaluated once.
> > >
> > > What shall we do? I don't think there's an easy way to fix this as
> > > Tom suggested. Maybe we should not allow WITH clause without
> > > RECURISVE for 8.4?
> > This is a still remaing issue...
> I don't think that the spec explicitly forbids this.
This has been discussed before.
Regardless of the nuances of the spec (and whether it says so explicitly
or implicitly), there are people in the community that see single
evaluation as important, and important enough to be a showstopper.
Tom Lane has suggested that this is a reasonable amount of work to
complete, and minor in comparison to the rest of the patch.
I think the right approach is to try to complete it so that everyone is
happy. I will work on this, but unfortunately I don't have a lot of time
right now, so I can't make any promises.
The rest of the patch looks good so far (there are still a few things I
want to look at), so I think this is the biggest open issue.