postgresql/contrib/pg_buffercache
Fujii Masao b70d5672d0 pg_buffercache: restore rowtype verification in pg_buffercache_pages()
Commit 257c8231bf changed pg_buffercache_pages() to materialize its output
directly into a tuplestore. As a result, the function ended up trusting
a caller-supplied RECORD descriptors. That could lead to crashes
if the supplied row definition did not match the actual returned values,
for example by passing bool Datums to tuplestore_putvalues() with
an incompatible descriptor.

Fix this by constructing the correct tuple descriptor for
pg_buffercache_pages() and assigning it to
rsinfo->setDesc after InitMaterializedSRF(). This restores the executor's
tupledesc_match() verification, so incompatible caller-supplied
row definitions are rejected with an error, as before commit 257c8231bf.

Bug: #19508
Reported-by: Nikita Kalinin <n.kalinin@postgrespro.ru>
Author: Fujii Masao <masao.fujii@gmail.com>
Reviewed-by: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Reviewed-by: Ashutosh Sharma <ashu.coek88@gmail.com>
Discussion: https://postgr.es/m/19508-e5f188183279219b@postgresql.org
2026-06-10 12:32:59 +09:00
..
expected pg_buffercache: restore rowtype verification in pg_buffercache_pages() 2026-06-10 12:32:59 +09:00
sql pg_buffercache: restore rowtype verification in pg_buffercache_pages() 2026-06-10 12:32:59 +09:00
.gitignore Add regression test coverage for contrib/pg_buffercache. 2022-07-30 15:33:44 -04:00
Makefile pg_buffercache: Add pg_buffercache_os_pages 2025-11-24 14:29:15 +09:00
meson.build Update copyright for 2026 2026-01-01 13:24:10 -05:00
pg_buffercache--1.0--1.1.sql Add pinning_backends column to the pg_buffercache extension. 2014-08-22 00:28:37 +02:00
pg_buffercache--1.1--1.2.sql Update pg_buffercache extension for parallel query. 2016-06-09 17:18:12 -04:00
pg_buffercache--1.2--1.3.sql Default monitoring roles 2017-03-30 14:18:53 -04:00
pg_buffercache--1.2.sql Update pg_buffercache extension for parallel query. 2016-06-09 17:18:12 -04:00
pg_buffercache--1.3--1.4.sql Add pg_buffercache_usage_counts() to contrib/pg_buffercache. 2023-04-07 14:25:53 -04:00
pg_buffercache--1.4--1.5.sql Add pg_buffercache_evict() function for testing. 2024-04-08 16:23:40 +12:00
pg_buffercache--1.5--1.6.sql pg_buffercache: Change page_num type to bigint 2025-04-08 12:38:42 +02:00
pg_buffercache--1.6--1.7.sql pg_buffercache: Add pg_buffercache_mark_dirty{,_relation,_all}() 2025-11-28 09:04:04 +09:00
pg_buffercache.control pg_buffercache: Add pg_buffercache_os_pages 2025-11-24 14:29:15 +09:00
pg_buffercache_pages.c pg_buffercache: restore rowtype verification in pg_buffercache_pages() 2026-06-10 12:32:59 +09:00