The SQL test added in this commit check a specific code path that had no coverage until now. When a TOAST datum is rewritten, toast_save_datum() has a dedicated path to make sure that a new value is allocated if it does not exist on the TOAST table yet. This test uses a trick with PLAIN and EXTERNAL storage, with a tuple large enough to be toasted and small enough to fit on a page. It is initially stored in plain more, and the rewrite forces the tuple to be stored externally. The key point is that there is no value allocated during the initial insert, and that there is one after the rewrite. A second pattern checked is the reuse of the same value across rewrites, using \gset. A set of patches under discussion is messing up with this area of the code, so this makes sure that such rewrite cases remain consistent across the board. Author: Nikhil Kumar Veldanda <veldanda.nikhilkumar17@gmail.com> Co-authored-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/CAFAfj_E+kw5P713S8_jZyVgQAGVFfzFiTUJPrgo-TTtJJoazQw@mail.gmail.com
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/devel/. In particular, information about building PostgreSQL from the source code can be found at https://www.postgresql.org/docs/devel/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/.