pgsql: Fix crash when using partition bound expressions

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема pgsql: Fix crash when using partition bound expressions
Дата
Msg-id E1h8agO-0004Y6-Se@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix crash when using partition bound expressions

Since 7c079d7, partition bounds are able to use generalized expression
syntax when processed, treating "minvalue" and "maxvalue" as specific
cases as they get passed down for transformation as a column references.

The checks for infinite bounds in range expressions have been lax
though, causing crashes when trying to use column reference names with
more than one field.  Here is an example causing a crash:
CREATE TABLE list_parted (a int) PARTITION BY LIST (a);
CREATE TABLE part_list_crash PARTITION OF list_parted
  FOR VALUES IN (somename.somename);

Note that the creation of the second relation should fail as partition
bounds cannot have column references in their expressions, so when
finding an expression which does not match the expected infinite bounds,
then this commit lets the generic transformation machinery check after
it.  The error message generated in this case references as well a
missing RTE, which is confusing.  This problem will be treated
separately as it impacts as well default expressions for some time, and
for now only the cases where a crash can happen are fixed.

While on it, extend the set of regression tests in place for list
partition bounds and add an extra set for range partition bounds.

Reported-by: Alexander Lakhin
Author: Michael Paquier
Reviewed-by: Amit Langote
Discussion: https://postgr.es/m/15668-0377b1981aa1a393@postgresql.org

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/cdde886d36b5a4d7ad9e1d02596f7fa1c8c129e3

Modified Files
--------------
src/backend/parser/parse_utilcmd.c         | 16 +++++++--
src/test/regress/expected/create_table.out | 55 +++++++++++++++++++++++++++++-
src/test/regress/sql/create_table.sql      | 23 ++++++++++++-
3 files changed, 90 insertions(+), 4 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Geoghegan
Дата:
Сообщение: Re: pgsql: tableam: Add helper for indexes to check if acorresponding tabl
Следующее
От: Andres Freund
Дата:
Сообщение: Re: pgsql: tableam: Add helper for indexes to check if acorresponding tabl