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 626CE9FB373 for ; Mon, 31 Jul 2006 23:18:04 -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 53715-04 for ; Mon, 31 Jul 2006 23:17:50 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey- Received: from joeconway.com (joeconway.com [68.15.9.201]) by postgresql.org (Postfix) with ESMTP id E12239FB359 for ; Mon, 31 Jul 2006 23:17:49 -0300 (ADT) Received: from [192.168.4.40] (account jconway [192.168.4.40] verified) by joeconway.com (CommuniGate Pro SMTP 4.1.8) with ESMTP-TLS id 4136362; Mon, 31 Jul 2006 19:17:48 -0700 Message-ID: <44CEB9CC.2060102@joeconway.com> Date: Mon, 31 Jul 2006 19:17:48 -0700 From: Joe Conway User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.13) Gecko/20060501 Fedora/1.7.13-1.1.fc5 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Tom Lane CC: "Patches (PostgreSQL)" Subject: Re: [HACKERS] 8.2 features? References: <200607281947.k6SJlOI02533@momjian.us> <473.1154116455@sss.pgh.pa.us> <44CA76A9.8070101@joeconway.com> <44CB051D.6090609@joeconway.com> <21320.1154222840@sss.pgh.pa.us> <26226.1154279741@sss.pgh.pa.us> <44CE529F.2070701@joeconway.com> <26167.1154395260@sss.pgh.pa.us> In-Reply-To: <26167.1154395260@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="------------000600090708090903010407" X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.021 tagged_above=0 required=5 tests=AWL, SPF_HELO_PASS, SPF_PASS X-Spam-Level: X-Archive-Number: 200607/361 X-Sequence-Number: 20515 This is a multi-part message in MIME format. --------------000600090708090903010407 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Tom Lane wrote: > Joe Conway writes: > >>I wanted to post an updated patch even though there are still things not >>working again after conversion to bare expressions. > > I've been through the planner part of this and it looks OK (one or two > small errors). I'm currently messing with a revised version of the > grammar that supports putting VALUES everyplace that the spec allows, > and is a bit simpler than the old one to boot: it folds VALUES and > SELECT together, so we need fewer cases in the INSERT production. > Of course this breaks most of what you did in the parser :-( ... > I'm working on fixing that. > > I'm about to go out to dinner but thought I'd post the gram.y and > parsenodes.h files so you could see where I'm headed. These are > diffs from CVS tip, not from your patch. > Yup, I can see where you're headed. Looks nice! In case you can make use of it, here's my latest. I found that I was being too aggressive at freeing the input nodes to transformExpr() in transformRangeValues() after using them. In many cases the returned node is a new palloc'd node, but in some cases it is not. The other issue I found was that I had neglected to fixup/coerce the raw expressions ala updateTargetListEntry(). I ended up creating a somewhat simpler updateValuesExprListEntry() to use on values expression lists. I have yet to get to the similar/more general issue of coercing values expression lists to common datatypes (i.e. using select_common_type()). FWIW, here's a list of non-working cases at the moment: 8<------------------------------------- create table inserttest (col1 int4, col2 int4 NOT NULL, col3 text default 'testing'); --doesn't work --------------- --wrong result insert into inserttest (col2, col3) values (23, DEFAULT), (24, DEFAULT), (25, 'hello'), (26, DEFAULT); select * from (values (3,4),(2,3)) as t1(f1,f2) join (values (3,8),(2,6)) as t2(f1,f2) using (f1); select * from (values (3,4),(2,3)) as t1(f1,f2) join (values (3,8),(2,6)) as t2(f1,f2) using (f1) where t2.f2 = 8; select * from (values (3,4),(2,3)) as t1(f1,f2) join (values (3,8),(2,6)) as t2(f1,f2) on t1.f1 = t2.f2 where t1.f1 = 3; --corrupt result but no crash select f1,f2 from (values (11,2),(26,'a'),(6,4)) as t(f1,f2) order by 1 desc; --crash select f1 from (values (1,2),(2,3)) as t(f1,f2) order by 1 desc; select f1,f2 from (values (11,'a'),(26,13),(6,'c')) as t(f1,f2) order by 1 desc; 8<------------------------------------- Joe --------------000600090708090903010407 Content-Type: application/x-gzip; name="multi-insert-r19.diff.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="multi-insert-r19.diff.gz" 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 MYD9BBFGsIc/49g/okj8/wO1U+xXm3ABAA== --------------000600090708090903010407--