Teach nbtree's _bt_killitems to leave the so->currPos page that it sets LP_DEAD items on in whatever state it was in when _bt_killitems was called. In particular, make sure that so->dropPin scans don't acquire a pin whose reference is saved in so->currPos.buf. Allowing _bt_killitems to change so->currPos.buf like this is wrong. The immediate consequence of allowing it is that code in _bt_steppage (that copies so->currPos into so->markPos) will behave as if the scan is a !so->dropPin scan. so->markPos will therefore retain the buffer pin indefinitely, even though _bt_killitems only needs to acquire a pin (along with a lock) for long enough to mark known-dead items LP_DEAD. This issue came to light following a report of a failure of an assertion from recent commit |
7 months ago | |
|---|---|---|
| config | jit: Remove {llvm-config,clang}-N configure probes. | 2 years ago |
| contrib | pg_prewarm: Allow autoprewarm to use more than 1GB to dump blocks. | 7 months ago |
| doc | Doc: you must own the target object to use SECURITY LABEL. | 7 months ago |
| src | Make _bt_killitems drop pins it acquired itself. | 7 months ago |
| .cirrus.star | Remove duplicate words in docs and code comments. | 2 years ago |
| .cirrus.tasks.yml | ci: Upgrade FreeBSD image | 10 months ago |
| .cirrus.yml | ci: Make compute resources for CI configurable | 2 years ago |
| .dir-locals.el |
…
|
|
| .editorconfig |
…
|
|
| .git-blame-ignore-revs |
Add commit 7229ebe011 to .git-blame-ignore-revs.
|
1 year ago |
| .gitattributes | Exclude LLVM files from whitespace checks | 1 year ago |
| .gitignore | Update top-level .gitignore. | 3 years ago |
| COPYRIGHT | Align organization wording in copyright statement | 7 months ago |
| GNUmakefile.in | Allow selecting the git revision to be packaged by "make dist". | 2 years ago |
| HISTORY |
…
|
|
| Makefile | Adapt REL_17_STABLE to its new status as a stable branch | 2 years ago |
| README.md | Adapt REL_17_STABLE to its new status as a stable branch | 2 years ago |
| aclocal.m4 | autoconf: Move export_dynamic determination to configure | 3 years ago |
| configure | Make our usage of memset_s() conform strictly to the C11 standard. | 7 months ago |
| configure.ac | Make our usage of memset_s() conform strictly to the C11 standard. | 7 months ago |
| meson.build | Make our usage of memset_s() conform strictly to the C11 standard. | 7 months ago |
| meson_options.txt | Allow selecting the git revision to be packaged by "make dist". | 2 years ago |
README.md
PostgreSQL Database Management System
This directory contains the source code distribution of the PostgreSQL database management system.
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 PostgreSQL can be found at https://www.postgresql.org/docs/17/. In particular, information about building PostgreSQL from the source code can be found at https://www.postgresql.org/docs/17/installation.html.
The latest version of this software, and related software, may be obtained at https://www.postgresql.org/download/. For more information look at our web site located at https://www.postgresql.org/.