pgsql: Fix alignment and toasting bugs in range types.
От | Tom Lane |
---|---|
Тема | pgsql: Fix alignment and toasting bugs in range types. |
Дата | |
Msg-id | E1RQ8yY-0004sE-By@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix alignment and toasting bugs in range types. A range type whose element type has 'd' alignment must have 'd' alignment itself, else there is no guarantee that the element value can be used in-place. (Because range_deserialize uses att_align_pointer which forcibly aligns the given pointer, violations of this rule did not lead to SIGBUS but rather to garbage data being extracted, as in one of the added regression test cases.) Also, you can't put a toast pointer inside a range datum, since the referenced value could disappear with the range datum still present. For consistency with the handling of arrays and records, I also forced decompression of in-line-compressed bound values. It would work to store them as-is, but our policy is to avoid situations that might result in double compression. Add assorted regression tests for this, and bump catversion because of fixes to built-in pg_type entries. Also some marginal cleanup of inconsistent/unnecessary error checks. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/ad50934eaadb626de682defe0ad270bbf31e92a2 Modified Files -------------- src/backend/commands/typecmds.c | 34 +++-- src/backend/utils/adt/rangetypes.c | 219 +++++++++++++++-------------- src/include/catalog/catversion.h | 2 +- src/include/catalog/pg_type.h | 18 ++-- src/test/regress/expected/rangetypes.out | 10 ++- src/test/regress/expected/type_sanity.out | 32 ++++ src/test/regress/sql/rangetypes.sql | 6 +- src/test/regress/sql/type_sanity.sql | 24 +++ 8 files changed, 215 insertions(+), 130 deletions(-)
В списке pgsql-committers по дате отправления: