Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oiHw9-0004AS-Kt for pgsql-bugs@arkaria.postgresql.org; Tue, 11 Oct 2022 16:16:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oiHw7-0004mZ-ED for pgsql-bugs@arkaria.postgresql.org; Tue, 11 Oct 2022 16:16:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oiHw6-0004mQ-I9 for pgsql-bugs@lists.postgresql.org; Tue, 11 Oct 2022 16:16:55 +0000 Received: from mail-sy4aus01olkn2187.outbound.protection.outlook.com ([40.92.62.187] helo=AUS01-SY4-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oiHw2-00036S-Gc for pgsql-bugs@lists.postgresql.org; Tue, 11 Oct 2022 16:16:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TTNRe3w5R6ptDtx24BbWt+XhrMBhQHPrKWcF+MxYXvkHt0QIlUIzxVMXts15bAp+5yYBT8c5KJqCS4u8UdYiFipcM4J/MnTVVml5lqK7Weky27y9+k4hI9xrfnZGUZi8UdoJZuQW4eKy4XKGS5AX4NUFtQTh0TYiNuf4Ohekt5TGcDzNnZ+vQXdYoUPPV7VP9bqETAutHPBuAx2tClt9EiecUGT9PkRjam7No/Z50i61FIU0nMxU8+zjOc1sJOH06V13R4Bqehp+Ef3XA2RcqrxzsmUi+6PLQ7b3/Ur3dpL85Qhm0JZ5XxF3vyfeMT8hmWMGE9aGLHT15ey195TiqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jx5ea+GrUhp6FrFy/dO+Qh8Dj9HFkbhv0VFbjcz3PJ8=; b=awg7ONKJATY6FplYigTV8sfr1s0g2mETL6O8fWx49RLCjc8BOX7JKHmlj+Qv78rkl2t0STj14iLSusspu8WUcZzuvbeWHGsejI2sQYL00Bv8BC0/JdcBE9OQh2bdym6Ndd6L3w9tYbEUa9DOL2BF8uD9PBMzUmThnwRTsCWOrGeRM4AJzuhBuFBO1J/79FRk6WFisH98RtX39mdiozWeaRiqu6WfSBOPHuWKq04ln5WFbDI3eaCdJ51A2Zd0reVHasqd3g06lKve2OAld5nYQEX0JIliGb9nK1B1lm4Lt/o/19v5Spo4YfBbOuX72u+BExqcbrq/sGnmFiu6q1awpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jx5ea+GrUhp6FrFy/dO+Qh8Dj9HFkbhv0VFbjcz3PJ8=; b=hOZI7aJ8yTiVvc+yU2jPEkmIrEpruTy2J7pWmpdk9DM6oceBnR719sggNZl3JCTy34Ca1Y/Acx+s4y26voaP4D67OdueRI13zh+Hk/iu/Gs2NbqqMG6ebBS/cmkXoWlGwpFYxV9xvdAUYOWXQabpvj7A/uO/V0OfY6wMbZcNZlGPxWgAt7c0WvW1D51Cx8Q4XFwzprg/RacwJGDWc+AWeB2a628cEe4wS2cjU0ATPismwsHipspUnJh4ZJ7F1DzGS/t/XuHB4yFKiCsgYKtxYjOlSL+ptbEOGQRmkQ5KprpUdwJUu8TyRRQu2meiS9wMcFEficSZ1KUdKi48EtNm/g== Received: from MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:c3::12) by SY4P282MB1035.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:af::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Tue, 11 Oct 2022 16:16:43 +0000 Received: from MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM ([fe80::8d3f:fa0b:46f2:57a7]) by MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM ([fe80::8d3f:fa0b:46f2:57a7%8]) with mapi id 15.20.5709.021; Tue, 11 Oct 2022 16:16:43 +0000 References: <17633-98cc85e1fa91e905@postgresql.org> <312797.1665500865@sss.pgh.pa.us> <348879.1665502632@sss.pgh.pa.us> User-agent: mu4e 1.4.14; emacs 27.1 From: Japin Li To: Tom Lane Cc: Richard Guo , jiye_sw@126.com, pgsql-bugs@lists.postgresql.org Subject: Re: BUG #17633: Define rule on views which do insert to another relation trigger cache lookup failed error. In-reply-to: <348879.1665502632@sss.pgh.pa.us> Date: Wed, 12 Oct 2022 00:16:37 +0800 Message-ID: Content-Type: multipart/mixed; boundary="=-=-=" X-TMN: [f8TBd9pDy/wOfdAcNVzFn/TvAHq/ubNS] X-ClientProxiedBy: SI2PR02CA0053.apcprd02.prod.outlook.com (2603:1096:4:196::16) To MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:c3::12) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MEYP282MB1669:EE_|SY4P282MB1035:EE_ X-MS-Office365-Filtering-Correlation-Id: d6c0a4ce-0901-4cf8-af2c-08daaba3fc86 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: olbwIpD9LreKmV7A31HCUvfdTGFicFYtE+2W/I1KL/L2LlnuG3Pgp13pm6k2O/9Paoscyxe08PjuME9efuMMRAR9x8P8s4UhDjQXrkBxNFu8I/rMKDTtJ0uNGkXCg++ruXKsKDUHyGM1u8TdqRqTiYljqlq5jyH0qlpz5wBRuxU5kblqrtfAYL33yRn8G0gRdLsusWBIdDjWTcelG1VZGpPEp/MH6RHjomTYGHmcoKhKfqtMl3YvBIBKuvnDLBwN45Tro7+aJsOXLdwh1Ux8R5cInWYhWb/w/MTTgEt4su5cH/kKQjG1sRlmSzJjMNS0n7NDVYRaYZY7pgbpKMPtTFTI9rrWAKSO+VmOP+8z0gpK+3qC+cRnV4OFnapzN/JsAmbmAmLwd5CIzDEyKZ9ewelg8I2BOEs+cgFTLzzMFaXiLjMkCC/+zVQVBxBgCbwyPWNLWPNpzUbKyGL50d7Y8yiLrO2OtzXIbLccXyaWm2BADeHdblCkMBmamLKQkbr9wXVh8yBb/XlEhnCfw/brQ+Mbz9Gdi9ppxUX7XBJ4F21LULWG9KQtUNGKHrs4DeITmhJ9gTgc54MJcgDKY4b4t8I9YjShEa2Uw66EW35yhe5NcXEP5aWw7OYvF8ONMjy6Gm25EcHH2TPNr64iFhFefz/cWsOj4SY/m1lzQQPlPifFrLPRL/9dA56tS8Sw8xEP X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dhFoVj6+x3clpBXrjICLBxXTEOPb5qYJrW08Rdo2932JPGUE9nHU3JXG1DRS?= =?us-ascii?Q?s9siPVpjAfmK6QwD37t3Bj/MC2ZOTRqJqB0Z7rIfZA9sWYaSDZtOfQkFMJ0x?= =?us-ascii?Q?Fbw5RJg2J+Des8hmSXSb5dClyR1T/RuRKpWUjexzLtDU5aQdWViBv1X9lM/a?= =?us-ascii?Q?I1mmgw7S92ulx9ZFObFVfc1I70HKic9u5luur2ZCSiDLs6Vf8E+Tvd9e873R?= =?us-ascii?Q?rCfsG0G6X4Z9VNMKk8qokGSHYivURZDcXPaA+PoEYx8Lh0qlMCEPd1j6dGBx?= =?us-ascii?Q?IuuDMp6nnJ2GcGc56AG8Y+WvpmZMbKQnJ7pDimhnCc6bU6HpZzW6e0lhe1sl?= =?us-ascii?Q?4+8BeAk6MghiqgX4hWfb33tUWmIb4BImTC4nmsIDtICIazMyzSk7jkRWzCkH?= =?us-ascii?Q?MryjuIQ3NvMHlnHCP6wEoEwt1JbQ2xVOL4xNJ7XLi66jcmSBj7nbaK90oHpu?= =?us-ascii?Q?Uy5l5syVD39io4EvMAWGudmv/tyehBvqWBHxNinKy36OYvjr6IYDuFUOOfC7?= =?us-ascii?Q?eafstg2Mauf/9V1xsqwhMy4+oEpRoyH7nv86veMEzeulbppZCGrjiNK50zpX?= =?us-ascii?Q?UF7AaoSBR/pua2LGh2kwR8rUN1FXNTr6FEKUOFLQBQTecTGr4XjjntiBIrK8?= =?us-ascii?Q?5k1iwy+J2RrUoSFhV443IrWZcIg8Tb53Ck70hX+4L2QIA6SL+dnYAtVrY1vf?= =?us-ascii?Q?jVyQkh2o4FV5aaD+B75MlQ2x+kHCzVK6r3AJotQGkWypEjTfNeTlOwQdtJFs?= =?us-ascii?Q?HWTTqFvtnkyd+IhWtrScGBXDAyCBlaEaCO6cIGWA0fIwfkyZwYMm02WYcde+?= =?us-ascii?Q?AyhSO52JaVMhiHux1kn/58uLvET3s0XZi0oamxgIiy+tnaptMDbkzwE3CNOY?= =?us-ascii?Q?X1mDWLCzpy+bWXcfXf5jyBIGu2LMFqhalPFA6uNN18a5ELfJ3dvU+ffXC33j?= =?us-ascii?Q?lnPkL5iVHcpN3ciC3lwl/lEUwUsWE1mn4CTLM8J6gagUBU34sODBoj/aiskg?= =?us-ascii?Q?yrD68eoXnadrCmuTPfjfJ7FN5Mf/Ofha3s5jKY7GHP6KhiZQDFOspNBsEtUR?= =?us-ascii?Q?bdeV9HERmvld58lcv7XUNNIEziVRsBtUXpD3MJmTFO+vJlqNd2n+iFG+vz6Z?= =?us-ascii?Q?zSEFZvWWef+hjSCYJ9FTdbdCzhFN1CbW1QT76cJZ2Tl6hshIjDvHnTFogyGV?= =?us-ascii?Q?xePgHSmishWQnyfKl5kA9ERCEbQIaf58pPQ7ESi1d0b4bbagYSMSSQ5En4tm?= =?us-ascii?Q?6yArmZfFTQJ1o8fPQG3P1LeUdasdjPHZuXuxh4X+2A=3D=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-746f3.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: d6c0a4ce-0901-4cf8-af2c-08daaba3fc86 X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2022 16:16:43.4331 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY4P282MB1035 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-=-= Content-Type: text/plain On Tue, 11 Oct 2022 at 23:37, Tom Lane wrote: > I wrote: >> I think the basic problem is that the two calls of rewriteValuesRTE >> are really dealing with fundamentally different cases, and we should >> probably not have tried to make the same function do both. I'm going >> to try splitting it into two functions, one for the force_nulls case >> and one for the !force_nulls case. > > As attached. This seems *way* cleaner to me, even if it means we need > two copies of the loops-over-VALUES-list-entries. I didn't write a > regression test yet, but this fixes the submitted bug and passes > check-world. > Great. LGTM. Should we add the test-case for this? -- Regrads, Japin Li. ChengDu WenWu Information Technology Co.,Ltd. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=test-case-for-bug-17633.patch diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index 9dd137415e..2fbc30aaad 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -3585,3 +3585,15 @@ DROP VIEW ruletest_v1; DROP TABLE ruletest_t2; DROP TABLE ruletest_t1; DROP USER regress_rule_user1; +-- +-- Test case for BUG 17633 +-- +CREATE TABLE ruletest_t1 (x int); +CREATE TABLE ruletest_t2 (a int, b int); +CREATE VIEW ruletest_v1 AS SELECT * FROM ruletest_t1; +CREATE RULE rule1 AS ON INSERT TO ruletest_v1 + DO ALSO INSERT INTO ruletest_t2(b) VALUES (NEW.*); +INSERT INTO ruletest_v1 VALUES (default), (default); +DROP VIEW ruletest_v1; +DROP TABLE ruletest_t1; +DROP TABLE ruletest_t2; diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql index bfb5f3b0bb..290ea2bd8a 100644 --- a/src/test/regress/sql/rules.sql +++ b/src/test/regress/sql/rules.sql @@ -1318,3 +1318,19 @@ DROP TABLE ruletest_t2; DROP TABLE ruletest_t1; DROP USER regress_rule_user1; + +-- +-- Test case for BUG 17633 +-- +CREATE TABLE ruletest_t1 (x int); +CREATE TABLE ruletest_t2 (a int, b int); +CREATE VIEW ruletest_v1 AS SELECT * FROM ruletest_t1; + +CREATE RULE rule1 AS ON INSERT TO ruletest_v1 + DO ALSO INSERT INTO ruletest_t2(b) VALUES (NEW.*); + +INSERT INTO ruletest_v1 VALUES (default), (default); + +DROP VIEW ruletest_v1; +DROP TABLE ruletest_t1; +DROP TABLE ruletest_t2; --=-=-=--