0002-Reproducer-of-invalid-cast-to-VciScanState.patch
text/x-patch
Filename: 0002-Reproducer-of-invalid-cast-to-VciScanState.patch
Type: text/x-patch
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0002
Subject: Reproducer of invalid cast to VciScanState
| File | + | − |
|---|---|---|
| contrib/vci/sql/bugs.sql | 20 | 0 |
From 6e0ab587c083f4061a85a448472d0ca258d73018 Mon Sep 17 00:00:00 2001 From: Timur Magomedov <t.magomedov@postgrespro.ru> Date: Wed, 17 Sep 2025 17:59:05 +0300 Subject: [PATCH 2/2] Reproducer of invalid cast to VciScanState --- contrib/vci/sql/bugs.sql | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/contrib/vci/sql/bugs.sql b/contrib/vci/sql/bugs.sql index 3b6b7303acb..49597abcf99 100644 --- a/contrib/vci/sql/bugs.sql +++ b/contrib/vci/sql/bugs.sql @@ -57,3 +57,23 @@ INSERT INTO t6 SELECT id, 'info' || id FROM generate_series(1, 500) id; ANALYZE t6; EXPLAIN (ANALYZE, COSTS FALSE, BUFFERS FALSE, TIMING FALSE, SUMMARY FALSE) SELECT max(id) FROM t6; DROP TABLE t6; + +CREATE TABLE main (id BIGSERIAL PRIMARY KEY); +CREATE TABLE secondary (id BIGSERIAL PRIMARY KEY, main_id BIGINT REFERENCES main (id), val INTEGER); + +CREATE INDEX main_vci ON main USING vci (id); +CREATE INDEX sec_vci ON secondary USING vci (id, main_id, val); + +EXPLAIN (ANALYZE, COSTS FALSE, BUFFERS FALSE, TIMING FALSE, SUMMARY FALSE) +SELECT * + FROM main m + JOIN secondary s + ON m.id = s.main_id + WHERE s.val in ( + SELECT MAX(val) + FROM secondary s2 + WHERE s2.main_id = m.id) + ORDER BY s.val; + +DROP TABLE secondary; +DROP TABLE main; -- 2.43.0