Re: virtual generated column as partition key

Поиск
Список
Период
Сортировка
От jian he
Тема Re: virtual generated column as partition key
Дата
Msg-id CACJufxEV2dre3dti4+wRGEd-gDbWi0VFNG5qq0AB+Xj4n78PGQ@mail.gmail.com
обсуждение исходный текст
Ответ на virtual generated column as partition key  (jian he <jian.universality@gmail.com>)
Список pgsql-hackers
hi.

rebased and refactored a lot.

In pg_partitioned_table.partattrs, value 0 indicates that the corresponding
partition key is an expression, non-0 means key is column reference.

For a virtual generated column, partattrs refers to the attribute number of the
virtual generated column, and the corresponding generation expression is stored
in partvirtualexprs. (see below demo).
Because of this, we need to double check all the occurrences of
RelationGetPartitionKey.

CREATE TABLE gtest_part_keyxx  (f2 bigint, f3 bigint GENERATED ALWAYS
AS (f2 * 2) VIRTUAL) PARTITION BY RANGE (f3, f3, f2, f3, (f2+1));
SELECT pg_get_partkeydef('gtest_part_keyxx'::regclass);
         pg_get_partkeydef
------------------------------------
 RANGE (f3, f3, f2, f3, ((f2 + 1)))
(1 row)

SELECT partrelid::regclass, partnatts, partattrs FROM
pg_partitioned_table WHERE partrelid = ('gtest_part_keyxx'::regclass);
    partrelid     | partnatts | partattrs
------------------+-----------+-----------
 gtest_part_keyxx |         5 | 2 2 1 2 0
(1 row)

Вложения

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