Peter Geoghegan 1e2c38da76 Avoid nbtree index scan SAOP scanBehind confusion.
Consistently reset so->scanBehind at the beginning of nbtree array
advancement, even during sktrig_required=false calls (calls where array
advancement is triggered by an unsatisfied non-required array scan key).
Otherwise, it's possible for queries to fail to return all relevant
tuples to the scan given a low-order required scan key that was
previously deemed "satisfied" by a truncated high key attribute value.
This only happened at the point where a later non-required array scan
key needed to be "advanced" once on the next leaf page (that is, once
the right sibling of the truncated high key page was reached).

The underlying issue was that later code within _bt_advance_array_keys
assumed that the so->scanBehind flag must have been set using the
current page's high key (not the previous page's high key).  Any later
successful recheck call to _bt_check_compare would therefore spuriously
be prevented from making _bt_advance_array_keys return true, based on
the faulty belief that the truncated attribute must be from the scan's
current tuple (i.e. the non-pivot tuple at the start of the next page).
_bt_advance_array_keys would return false for the tuple, ultimately
resulting in _bt_checkkeys failing to return a matching tuple.

Oversight in commit 5bf748b8, which enhanced nbtree ScalarArrayOp
execution.

Author: Peter Geoghegan <pg@bowt.ie>
Discussion: https://postgr.es/m/CAH2-WzkJKncfqyAUTeuB5GgRhT1vhsWO2q11dbZNqKmvjopP_g@mail.gmail.com
Backpatch: 17-, where commit 5bf748b8 first appears.
2025-02-25 19:35:46 +00:00
2025-02-07 16:53:29 +00:00
2025-02-18 08:23:36 +00:00
2024-09-25 20:45:09 +01:00
2019-12-18 09:13:13 +01:00
2025-01-07 20:43:59 +00:00
2020-02-10 20:47:50 +01:00
2025-01-07 20:43:59 +00:00

Percona Server for PostgreSQL

Percona Server for PostgreSQL is a free, enhanced, fully compatible, open source, drop-in replacement for the PostgreSQL Database Management System with enterprise-grade features. It requires no changes to PostgreSQL applications or code.

PostgreSQL is an advanced object-relational database management system that supports an extended subset of the SQL standard, including transactions, foreign keys, subqueries, triggers, user-defined types and functions. This distribution also contains C language bindings.

Copyright and license information can be found in the file COPYRIGHT.

General documentation about this version of Percona Server for PostgreSQL can be found at https://docs.percona.com/postgresql/17/. In particular, information about building PostgreSQL from the source code can be found at https://docs.percona.com/postgresql/17/installing.html.

Submit a bug report or a feature request

If you find a bug in Percona Server for PostgreSQL, you can submit a report to the project's Jira issue tracker

As a general rule of thumb, please try to create a bug report that is:

Reproducible - include the steps on how to reproduce the issue

Specific - include as much detail as possible, such as which version, which environment, etc.

Unique - do not duplicate existing tickets

Scoped to a single issue - only one issue per report

Description
he World's Most Advanced Open Source Relational Database.
Readme 744 MiB
Languages
C 85.3%
PLpgSQL 6%
Perl 4.4%
Yacc 1.2%
Meson 0.7%
Other 2.2%