ALTER TABLE ... MERGE PARTITIONS / SPLIT PARTITION builds a new partition via createPartitionTable(), but never gives it a TOAST table. When the source rows carried out-of-line varlena values, the move into the new partition entered heap_toast_insert_or_update() with reltoastrelid = InvalidOid: the externalization step is skipped, the value falls back to inline storage and heap_insert() fails with "row is too big" error. Also, TOAST table is needed if the new partition receives out-of-line varlena values after the DDL operation is complete. Call NewRelationCreateToastTable() right after the new partition is created in createPartitionTable(), mirroring what DefineRelation() does for regular CREATE TABLE. NewRelationCreateToastTable() decides on its own whether a TOAST table is actually required, so partitions with no toast-eligible columns are unaffected. Reported-by: Justin Pryzby <pryzby@telsasoft.com> Discussion: https://postgr.es/m/ai_c4-v8iLA2kXFV%40pryzbyj2023 Reviewed-by: Pavel Borisov <pashkin.elfe@gmail.com> Reviewed-by: Jian He <jian.universality@gmail.com> |
||
|---|---|---|
| .github | ||
| config | ||
| contrib | ||
| doc | ||
| src | ||
| .dir-locals.el | ||
| .editorconfig | ||
| .git-blame-ignore-revs | ||
| .gitattributes | ||
| .gitignore | ||
| .mailmap | ||
| aclocal.m4 | ||
| configure | ||
| configure.ac | ||
| COPYRIGHT | ||
| GNUmakefile.in | ||
| HISTORY | ||
| Makefile | ||
| meson.build | ||
| meson_options.txt | ||
| 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/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/.