postgres/contrib/pg_stat_statements
Álvaro Herrera 16edc1b94f
pg_stat_statements: Fix handling of duplicate constant locations
Two or more constants can have the same location.  We handled this
correctly for non squashed constants, but failed to do it if squashed
(resulting in out-of-bounds memory access), because the code structure
became broken by commit 0f65f3eec478: we failed to update 'last_loc'
correctly when skipping these squashed constants.

The simplest fix seems to be to get rid of 'last_loc' altogether -- in
hindsight, it's quite pointless.  Also, when ignoring a constant because
of this, make sure to fulfill fill_in_constant_lengths's duty of setting
its length to -1.

Lastly, we can use == instead of <= because the locations have been
sorted beforehand, so the < case cannot arise.

Co-authored-by: Sami Imseih <samimseih@gmail.com>
Co-authored-by: Dmitry Dolgov <9erthalion6@gmail.com>
Reported-by: Konstantin Knizhnik <knizhnik@garret.ru>
Backpatch-through: 18
Discussion: https://www.postgresql.org/message-id/2b91e358-0d99-43f7-be44-d2d4dbce37b3%40garret.ru
2025-10-29 12:35:02 +01:00
..
expected pg_stat_statements: Fix handling of duplicate constant locations 2025-10-29 12:35:02 +01:00
sql pg_stat_statements: Fix handling of duplicate constant locations 2025-10-29 12:35:02 +01:00
t Update copyright for 2025 2025-01-01 11:21:55 -05:00
.gitignore pg_stat_statements: Add .gitignore file for tests 2016-11-13 08:24:43 -05:00
Makefile pg_stat_statements: Add counters for generic and custom plans 2025-07-31 11:37:37 +09:00
meson.build pg_stat_statements: Add counters for generic and custom plans 2025-07-31 11:37:37 +09:00
pg_stat_statements--1.1--1.2.sql
pg_stat_statements--1.2--1.3.sql Add stats for min, max, mean, stddev times to pg_stat_statements. 2015-03-27 15:43:22 -04:00
pg_stat_statements--1.3--1.4.sql Update pg_stat_statements extension for parallel query. 2016-06-10 10:42:01 -04:00
pg_stat_statements--1.4--1.5.sql Default monitoring roles 2017-03-30 14:18:53 -04:00
pg_stat_statements--1.4.sql Update pg_stat_statements extension for parallel query. 2016-06-10 10:42:01 -04:00
pg_stat_statements--1.5--1.6.sql Revoke pg_stat_statements_reset() permissions 2018-09-25 09:55:44 +09:00
pg_stat_statements--1.6--1.7.sql Extend pg_stat_statements_reset to reset statistics specific to a 2019-01-11 08:50:09 +05:30
pg_stat_statements--1.7--1.8.sql Change the display of WAL usage statistics in Explain. 2020-05-05 08:00:53 +05:30
pg_stat_statements--1.8--1.9.sql Merge v1.10 of pg_stat_statements into v1.9 2021-04-08 15:15:17 +02:00
pg_stat_statements--1.9--1.10.sql Add JIT counters to pg_stat_statements 2022-04-08 13:52:16 +02:00
pg_stat_statements--1.10--1.11.sql Track statement entry timestamp in contrib/pg_stat_statements 2023-11-27 02:52:17 +02:00
pg_stat_statements--1.11--1.12.sql pg_stat_statements: Add wal_buffers_full 2025-02-17 13:55:17 +09:00
pg_stat_statements--1.12--1.13.sql pg_stat_statements: Add counters for generic and custom plans 2025-07-31 11:37:37 +09:00
pg_stat_statements--1.0--1.1.sql
pg_stat_statements.c pg_stat_statements: Fix handling of duplicate constant locations 2025-10-29 12:35:02 +01:00
pg_stat_statements.conf Revert "pg_stat_statements: Add coverage for entry_dealloc()" 2023-12-31 15:30:57 +01:00
pg_stat_statements.control pg_stat_statements: Add counters for generic and custom plans 2025-07-31 11:37:37 +09:00