X-Original-To: pgsql-patches-postgresql.org@postgresql.org Received: from localhost (mx1.hub.org [200.46.208.251]) by postgresql.org (Postfix) with ESMTP id 951899FB1BC for ; Mon, 24 Jul 2006 13:12:31 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.208.251]) (amavisd-new, port 10024) with ESMTP id 38758-06 for ; Mon, 24 Jul 2006 13:12:19 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey- Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130]) by postgresql.org (Postfix) with ESMTP id C20CC9FB1BB for ; Mon, 24 Jul 2006 13:12:18 -0300 (ADT) Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) by sss.pgh.pa.us (8.13.6/8.13.6) with ESMTP id k6OGCBfV011496; Mon, 24 Jul 2006 12:12:11 -0400 (EDT) To: Joe Conway cc: Christopher Kings-Lynne , "Patches (PostgreSQL)" , Andrew Dunstan , Bernd Helmle , Peter Eisentraut , Susanne Ebrecht Subject: Re: Values list-of-targetlists patch for comments (was Re: [HACKERS] 8.2 features?) In-reply-to: <44C4451A.4010906@joeconway.com> References: <44B69778.5050104@dunslane.net> <50461.84.63.113.55.1152832991.squirrel@pezone.net> <44B7ADFC.90205@dunslane.net> <44BC0432.3040509@joeconway.com> <44BC661F.80609@joeconway.com> <44BCD06C.3060409@calorieking.com> <44BCF1D4.3010807@dunslane.net> <5842.1153246741@sss.pgh.pa.us> <44BD8854.9060506@calorieking.com> <15212.1153279954@sss.pgh.pa.us> <44BDB2F5.7080003@joeconway.com> <44BEA710.6060700@joeconway.com> <23198.1153367887@sss.pgh.pa.us> <44BF0382.2010501@joeconway.com> <23454.1153370214@sss.pgh.pa.us> <44BF122F.1080200@joeconway.com> <23927.1153373971@sss.pgh.pa.us> <44C00E1E.1000405@joeconway.com> <14047.1153442773@sss.pgh.pa.us> <44C4451A.4010906@joeconway.com> Comments: In-reply-to Joe Conway message dated "Sun, 23 Jul 2006 20:57:14 -0700" Date: Mon, 24 Jul 2006 12:12:11 -0400 Message-ID: <11495.1153757531@sss.pgh.pa.us> From: Tom Lane X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.066 tagged_above=0 required=5 tests=AWL, SPF_HELO_PASS, SPF_PASS X-Spam-Level: X-Archive-Number: 200607/181 X-Sequence-Number: 20335 Joe Conway writes: > Tom Lane wrote: >> There are basically two ways you could go about this: >> 1. Make a new jointree leaf node type to represent a VALUES construct, >> and dangle the list of lists of expressions off that. >> 2. Make a new RangeTblEntry type to represent a VALUES construct, and >> just put a RangeTblRef to it into the jointree. The expressions >> dangle off the RangeTblEntry. You seem to have done *both*, which is certainly not what I had in mind. I'd drop the RangeTblEntry changes, I think. Shoving all the tuples into a tuplestore is not doing anything for you from a performance point of view. I was thinking more of evaluating the targetlists on-the-fly. Basically what I foresaw as the executor mechanism was something like a Result node, except with a list of targetlists instead of just one, and part of its runtime state would be an index saying which one to evaluate next. (The update logic for the index would be just like Append's logic for which subplan to eval next.) Result as it currently stands is a pretty queer beast because it can have a child plan or not. I'm tempted to suggest splitting it into two node types, perhaps call the one with a child "Filter" and reserve the name "Result" for the one with no child. The reason for doing this in this context is that we could just make the no-child case be multi-targetlist-capable (rather than having separate nearly identical node types with single and multi tlists). AFAICS multi tlists don't make any sense for the filter-a-child-plan scenario, so that's why I want to push that case off to a different node type. regards, tom lane