On Thu, Sep 14, 2017 at 1:10 PM Simon Slavin <slav...@bigfraud.org> wrote:
> > > On 14 Sep 2017, at 5:55pm, R Smith <rsm...@rsweb.co.za> wrote: > > > Richard, wouldn't it be possible to supply a wrapping function (perhaps > a hint function, like the likelihood() function), that takes another > function as a parameter and then ensuring that THAT gets calculated only > once? > > Can you not do it with WITH ? I don’t really understand how WITH works > but it would seem to evaluate its terms just once for each iteration. In PostgreSQL CTEs fiction as an optimizer barrier: the engine always evaluates each CTE in order and stores their results in temporary tables, then it runs the main statement with those tables as sources. But in SQLite3 CTEs are not materialized first -- they are like VIEWs, and so they do not function as optimizer barriers, therefore they cannot be used for CSE. I would much prefer to be able to specify which CTEs must be materialized, and which may be left as internal views. That would give the user a great deal of control. WITH x AS (<query>) MATERIALIZED ... . Can we get that? > > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users