Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cswjN-0000l5-9Q for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Mar 2017 19:24:37 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cswjM-0004Pa-S0 for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Mar 2017 19:24:36 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cswjK-0004NB-Kr for pgsql-hackers@postgresql.org; Tue, 28 Mar 2017 19:24:34 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cswjG-0006XP-SP for pgsql-hackers@postgresql.org; Tue, 28 Mar 2017 19:24:33 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.14.4/8.14.4) with ESMTP id v2SJOSMi022348; Tue, 28 Mar 2017 15:24:28 -0400 From: Tom Lane To: Andres Freund cc: pgsql-hackers@postgresql.org Subject: Re: Protection lost in expression eval changeover In-reply-to: <19433.1490727242@sss.pgh.pa.us> References: <16803.1490723570@sss.pgh.pa.us> <20170328181324.e47nypa4vqg3dpk4@alap3.anarazel.de> <19025.1490726618@sss.pgh.pa.us> <20170328185104.yxs2ewbmb5wl4la7@alap3.anarazel.de> <19433.1490727242@sss.pgh.pa.us> Comments: In-reply-to Tom Lane message dated "Tue, 28 Mar 2017 14:54:02 -0400" MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <22346.1490729068.1@sss.pgh.pa.us> Date: Tue, 28 Mar 2017 15:24:28 -0400 Message-ID: <22347.1490729068@sss.pgh.pa.us> X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org I wrote: > Andres Freund writes: >> On 2017-03-28 14:43:38 -0400, Tom Lane wrote: >>> I don't see a strong reason why we need to allow a dropped column to go >>> to null while we throw an immediate error for a change in column type. >>> (If there is some reason, hopefully beta testing will find it.) >> Ok. You're doing that? > Yeah, I'll go do that. Or maybe not: turns out we have regression test cases that depend on this behavior, cf the bit in create_view.sql about -- this perhaps should be rejected, but it isn't: alter table tt14t drop column f3; -- f3 is still in the view but will read as nulls You'd proposed changing that, which I agree with in principle, but I thought your patch wasn't right. Maybe we need to work harder on that. (I'm not actually sure right at the moment why this case isn't failing in HEAD. Maybe plpgsql is replacing the dropped column with nulls in its result rows, so that whether the outer query special-cases them or not doesn't affect the visible output.) Or we could just throw an error anyway. I'm not sure there's any strong reason to allow such cases to work. I think the regression tests were only put there to ensure they don't crash, not to memorialize behavior we consider essential. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers