Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u0mGu-007i5Y-9q for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Apr 2025 19:00:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u0mGt-003XMC-14 for pgsql-hackers@arkaria.postgresql.org; Fri, 04 Apr 2025 19:00:07 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u0mGs-003XM4-HS for pgsql-hackers@lists.postgresql.org; Fri, 04 Apr 2025 19:00:06 +0000 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u0mGq-002y4C-1k for pgsql-hackers@lists.postgresql.org; Fri, 04 Apr 2025 19:00:05 +0000 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-39c1ee0fd43so2006545f8f.0 for ; Fri, 04 Apr 2025 12:00:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743793203; x=1744398003; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=54FD/oPb/ILiNSKCF2686KJs6i2ODOi/pZLKw5xeH40=; b=aeQcU2RZ/C4zPCJL3gZpjUtNl6bQ+SxyCcEG2BROdS7oTdWCTYt9f+L0eZGzMUUF7r +WzPkXoFu8eaUxSdqoHsmAYNrHRNw5GVAF7VQgpMc8R3Rny7xC2Lu8xVSGAaOZ494fWS nFblmaGpuPtTcbCiTEn4uem0mUqKW141CPNWI/s9DuhcOenMBZkhaNhP5FX+JJZNa3GD nNkEvG7DShCMNWLGkKgOYYYYcfNzPWyV2V1f1Mx4DdhfsOECNG/yedvHUd0RiRnG7go8 y1f06ollEAm0O84JojVWTYYwdtrnJfSQH9ruE3ggQ1egCZgrMUyu72NJ+vNpDSLEXAXz kUcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743793203; x=1744398003; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=54FD/oPb/ILiNSKCF2686KJs6i2ODOi/pZLKw5xeH40=; b=rfpXMFc9V7vLfR0TBLXWIBZA+BcbSdhgVEyFZ1IGRq3HKYnJtwgBYp+mslJXqSkXJn SzrGLxuIL7xaERMiCwcsSOUVTR3hLSlBcd174zjbckU5QVNkfSAsy8uxFsyy+1WYzNRo 7gmxZMJau9DVRITxz7ksV2depfJKDFIsVeTqklWvW0De/QknRRN+/Tmo0J8iHv8a7Czb vBCAI8/siQe+feENm20ULFX6kiLqJ78hCHg7fAdKaFxiiTSk1ChCuid/yO5c6TOXgJH1 fnECnN+YkyeNlAR1pfv2ddga0LTzGDYFrh2NhbfUkOq2/J+O24tE7ufdoIPNg0JaHWBM BUUw== X-Forwarded-Encrypted: i=1; AJvYcCUPe8cK0rV/a/p+0/SEX0VIQZax/5hBhGOjZ2XurcsjtEghcxMtjGSsbysfkqlalU602PhyHx0lzehXjEh1@lists.postgresql.org X-Gm-Message-State: AOJu0YyvS+waTBFYA+tr6dksf8hvRKrNDmXCUWyTPgBz56RgGQ5jKHR4 LcYx/sDdqY03E0VhUunTronYo9gJ6g7FPLdnUKVBHkx/8hfKkSV+ X-Gm-Gg: ASbGnctvQw0EVz+1XA/JF1BevtWIy68pm3fUgmsi/ei86hbQxF8wVomwea5taRgH5ty cnPR09bZHA+dtetpWrG4OqTffndgDwpcpR3BUo4GnWbLjEuH95gesiF7VAyvbR4nfPe1f/y4k1S czUCDO5kUF03hCupKMwyTkXxDpvf/gc3T9Sh8eUFTzRUuT2nIWZb5yR1UGXKuvKbhRSsgknfckK 8P5oe+hezzyiS8cofcega789rixCt78w48PmvG2x4TL6mLq64y9J/n30uo8aSIuPNnZcl8nOIGB HZ9zFQ16zfSYbgJD/zjpkHCGeA38dzlT1OEq8XIy8t/TvSg= X-Google-Smtp-Source: AGHT+IG7F5bjP111g/04hSs/z4PBofF5XsT4Lhe/xyPlZx/Oobn5Oqywu606XnJeyVgO3EZ6lkVBoQ== X-Received: by 2002:a5d:5f48:0:b0:38f:3e1c:211d with SMTP id ffacd0b85a97d-39cba9329b4mr4225983f8f.14.1743793202753; Fri, 04 Apr 2025 12:00:02 -0700 (PDT) Received: from [192.168.0.50] ([89.149.68.176]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-39c3020da17sm5055837f8f.64.2025.04.04.12.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Apr 2025 12:00:02 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------n3e0KqPme27aS5kxQ3srUzy2" Message-ID: <6d442183-102c-498a-81d1-eeeb086cdc5a@gmail.com> Date: Fri, 4 Apr 2025 22:00:01 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQLFunctionCache and generic plans To: Tom Lane Cc: Alexander Pyhalov , Pavel Stehule , Alexander Korotkov , pgsql-hackers@lists.postgresql.org, Ronan Dunklau References: <8216639.NyiUUSuA9g@aivenlaptop> <445556.1738612687@sss.pgh.pa.us> <464677.1738620525@sss.pgh.pa.us> <1fc18af56d5fb27bf3e153ffaa2ed70d@postgrespro.ru> <2615770.1740688857@sss.pgh.pa.us> <448c63cf9b4f917c01802309b9c29eb9@postgrespro.ru> <2827970.1741890560@sss.pgh.pa.us> <337e011069b6831e063bfa346f49bb46@postgrespro.ru> <3344719.1741985546@sss.pgh.pa.us> <2691107.1743257329@sss.pgh.pa.us> <3605427.1743351017@sss.pgh.pa.us> <248291.1743463745@sss.pgh.pa.us> <1101294.1743617356@sss.pgh.! pa.us> <0fde377a-3870-4d18-946a-ce008ee5bb88@gmail.com> <1454289.1743707630@sss.pgh.pa.us> Content-Language: en-US From: Alexander Lakhin In-Reply-To: <1454289.1743707630@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------n3e0KqPme27aS5kxQ3srUzy2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello Tom, 03.04.2025 22:13, Tom Lane wrpte: > Drat. I thought I'd tested the empty-function-body case, but > evidently that was a few changes too far back. Will fix, > thanks for catching it. I've stumbled upon another defect introduced with 0dca5d68d: CREATE FUNCTION f(VARIADIC ANYARRAY) RETURNS ANYELEMENT AS $$ SELECT x FROM generate_series(1,1) g(i) $$ LANGUAGE SQL IMMUTABLE; SELECT f(1); SELECT f(1); fails under Valgrind with: 2025-04-04 18:31:13.771 UTC [242811] LOG:  statement: SELECT f(1); ==00:00:00:19.324 242811== Invalid read of size 4 ==00:00:00:19.324 242811==    at 0x48D610: copyObjectImpl (copyfuncs.c:187) ==00:00:00:19.324 242811==    by 0x490194: _copyAlias (copyfuncs.funcs.c:48) ==00:00:00:19.324 242811==    by 0x48D636: copyObjectImpl (copyfuncs.switch.c:19) ==00:00:00:19.324 242811==    by 0x491CBF: _copyRangeFunction (copyfuncs.funcs.c:1279) ==00:00:00:19.324 242811==    by 0x48DC9C: copyObjectImpl (copyfuncs.switch.c:271) ==00:00:00:19.324 242811==    by 0x4A295C: list_copy_deep (list.c:1652) ==00:00:00:19.324 242811==    by 0x4900FA: copyObjectImpl (copyfuncs.c:192) ==00:00:00:19.324 242811==    by 0x4931E4: _copySelectStmt (copyfuncs.funcs.c:2109) ==00:00:00:19.324 242811==    by 0x48E00C: copyObjectImpl (copyfuncs.switch.c:436) ==00:00:00:19.324 242811==    by 0x492F85: _copyRawStmt (copyfuncs.funcs.c:2026) ==00:00:00:19.324 242811==    by 0x48DFBC: copyObjectImpl (copyfuncs.switch.c:421) ==00:00:00:19.324 242811==    by 0x76DCCE: CreateCachedPlan (plancache.c:213) ==00:00:00:19.324 242811==  Address 0x11b478d0 is 4,032 bytes inside a block of size 8,192 alloc'd ==00:00:00:19.324 242811==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so) ==00:00:00:19.324 242811==    by 0x7AA15D: AllocSetContextCreateInternal (aset.c:444) ==00:00:00:19.324 242811==    by 0x43CF56: init_sql_fcache (functions.c:616) ==00:00:00:19.324 242811==    by 0x43CF56: fmgr_sql (functions.c:1484) ==00:00:00:19.324 242811==    by 0x423E13: ExecInterpExpr (execExprInterp.c:926) ==00:00:00:19.324 242811==    by 0x41EB54: ExecInterpExprStillValid (execExprInterp.c:2299) ... Best regards, Alexander Lakhin Neon (https://neon.tech) --------------n3e0KqPme27aS5kxQ3srUzy2 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Hello Tom,

03.04.2025 22:13, Tom Lane wrpte:
Drat.  I thought I'd tested the empty-function-body case, but
evidently that was a few changes too far back.  Will fix,
thanks for catching it.

I've stumbled upon another defect introduced with 0dca5d68d:
CREATE FUNCTION f(VARIADIC ANYARRAY) RETURNS ANYELEMENT AS $$ SELECT x FROM generate_series(1,1) g(i) $$ LANGUAGE SQL IMMUTABLE;
SELECT f(1);
SELECT f(1);

fails under Valgrind with:
2025-04-04 18:31:13.771 UTC [242811] LOG:  statement: SELECT f(1);
==00:00:00:19.324 242811== Invalid read of size 4
==00:00:00:19.324 242811==    at 0x48D610: copyObjectImpl (copyfuncs.c:187)
==00:00:00:19.324 242811==    by 0x490194: _copyAlias (copyfuncs.funcs.c:48)
==00:00:00:19.324 242811==    by 0x48D636: copyObjectImpl (copyfuncs.switch.c:19)
==00:00:00:19.324 242811==    by 0x491CBF: _copyRangeFunction (copyfuncs.funcs.c:1279)
==00:00:00:19.324 242811==    by 0x48DC9C: copyObjectImpl (copyfuncs.switch.c:271)
==00:00:00:19.324 242811==    by 0x4A295C: list_copy_deep (list.c:1652)
==00:00:00:19.324 242811==    by 0x4900FA: copyObjectImpl (copyfuncs.c:192)
==00:00:00:19.324 242811==    by 0x4931E4: _copySelectStmt (copyfuncs.funcs.c:2109)
==00:00:00:19.324 242811==    by 0x48E00C: copyObjectImpl (copyfuncs.switch.c:436)
==00:00:00:19.324 242811==    by 0x492F85: _copyRawStmt (copyfuncs.funcs.c:2026)
==00:00:00:19.324 242811==    by 0x48DFBC: copyObjectImpl (copyfuncs.switch.c:421)
==00:00:00:19.324 242811==    by 0x76DCCE: CreateCachedPlan (plancache.c:213)
==00:00:00:19.324 242811==  Address 0x11b478d0 is 4,032 bytes inside a block of size 8,192 alloc'd
==00:00:00:19.324 242811==    at 0x4846828: malloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==00:00:00:19.324 242811==    by 0x7AA15D: AllocSetContextCreateInternal (aset.c:444)
==00:00:00:19.324 242811==    by 0x43CF56: init_sql_fcache (functions.c:616)
==00:00:00:19.324 242811==    by 0x43CF56: fmgr_sql (functions.c:1484)
==00:00:00:19.324 242811==    by 0x423E13: ExecInterpExpr (execExprInterp.c:926)
==00:00:00:19.324 242811==    by 0x41EB54: ExecInterpExprStillValid (execExprInterp.c:2299)
...

Best regards,
Alexander Lakhin
Neon (https://neon.tech) --------------n3e0KqPme27aS5kxQ3srUzy2--