Skip to content

Commit 60f12d1

Browse files
committed
Merge branch 'pathman_pgpro9_5' of gitlab.postgrespro.ru:pgpro-dev/postgrespro into pathman_pgpro9_5
2 parents 5764bb3 + c8f8e38 commit 60f12d1

File tree

6 files changed

+305
-16
lines changed

6 files changed

+305
-16
lines changed

contrib/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ SUBDIRS = \
2828
oid2name \
2929
pageinspect \
3030
passwordcheck \
31+
pathman \
3132
pg_buffercache \
3233
pg_freespacemap \
3334
pg_prewarm \

contrib/pathman/README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ It will require to restart the PostgreSQL instance.
4848

4949
### Partitions Creation
5050
```
51-
CREATE FUNCTION create_hash_partitions(
51+
create_hash_partitions(
5252
relation TEXT,
5353
attribute TEXT,
5454
partitions_count INTEGER)
5555
```
5656
Performs HASH partitioning for `relation` by integer key `attribute`. Creates `partitions_count` partitions and trigger on INSERT. Data doesn't automatically copied from parent table to partitions. Use `partition_data()` function (see below) to migrate data.
5757

5858
```
59-
CREATE FUNCTION create_range_partitions(
59+
create_range_partitions(
6060
relation TEXT,
6161
attribute TEXT,
6262
start_value ANYELEMENT,
@@ -65,7 +65,7 @@ CREATE FUNCTION create_range_partitions(
6565
```
6666
Performs RANGE partitioning for `relation` by partitioning key `attribute`. `start_value` argument specifies initial value, `interval` sets the range of values in a single partition, `premake` is the number of premade partitions (the only one partition will be created if `premake` is 0).
6767
```
68-
CREATE FUNCTION create_range_partitions(
68+
create_range_partitions(
6969
relation TEXT,
7070
attribute TEXT,
7171
start_value ANYELEMENT,
@@ -76,29 +76,29 @@ Same as above but suitable for `DATE` and `TIMESTAMP` partitioning keys.
7676

7777
### Data migration
7878
```
79-
CREATE FUNCTION partition_data(parent text)
79+
partition_data(parent text)
8080
```
8181
Copies data from parent table to its partitions.
8282

8383
### Partitions management
8484
```
85-
CREATE FUNCTION split_range_partition(partition TEXT, value ANYELEMENT)
85+
split_range_partition(partition TEXT, value ANYELEMENT)
8686
```
8787
Splits RANGE `partition` in two by `value`.
8888
```
89-
CREATE FUNCTION merge_range_partitions(partition1 TEXT, partition2 TEXT)
89+
merge_range_partitions(partition1 TEXT, partition2 TEXT)
9090
```
9191
Merge two adjacent RANGE partitions. Data from `partition2` is copied to `partition1`. Then the `partition2` is removed.
9292
```
93-
CREATE FUNCTION append_partition(p_relation TEXT)
93+
append_partition(p_relation TEXT)
9494
```
9595
Appends new partition with the range equal to the range of the previous partition.
9696
```
97-
CREATE FUNCTION prepend_partition(p_relation TEXT)
97+
prepend_partition(p_relation TEXT)
9898
```
9999
Prepends new partition with the range equal to the range of the first partition.
100100
```
101-
CREATE FUNCTION disable_partitioning(relation TEXT)
101+
disable_partitioning(relation TEXT)
102102
```
103103
Disables `pathman` partitioning mechanism for the specified parent table and removes an insert trigger. Partitions itself remain unchanged.
104104

@@ -151,4 +151,4 @@ SELECT append_partition('range_rel');
151151

152152
## Author
153153
Ildar Musin <i.musin@postgrespro.ru> Postgres Professional Ltd., Russia
154-
This module is sponsored by Postgres Professional Ltd., Russia
154+
This module is sponsored by Postgres Professional Ltd., Russia

contrib/pathman/README.rus.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ CHECK ( id >= 200 AND id < 300 )
1919

2020
Несмотря на гибкость, этот механизм обладает недостатками. Так при фильтрации данных оптимизатор вынужден перебирать все дочерние секции и сравнивать условие запроса с CHECK CONSTRAINT-ами секции, чтобы определить из каких секций ему следует загружать данные. При большом количестве секций это создает дополнительные накладные расходы, которые могут свести на нет выигрыш в производительности от применения секционирования.
2121

22-
Модуль `pathman` предоставляет функции для создания и управления секциями (см. следующий раздел) и механизм секционирования, оптимизированный с учетом знания о стуктуре дочерних таблиц. Конфигурация сохраняется таблице `pathman_config`, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, аттрибут и тип разбиения). В процессе инициализации модуля в разделяемую память сохраняется конфигурация дочерних таблиц в удобном для поиска формате. Получив запрос типа `SELECT` к секционированной таблице, `pathman` анализирует дерево условий запроса и выделяет из него условия вида:
22+
Модуль `pathman` предоставляет функции для создания и управления
23+
секциями (см. следующий раздел) и механизм секционирования,
24+
оптимизированный с учетом знания о структуре дочерних таблиц. Конфигурация сохраняется таблице `pathman_config`, каждая строка которой содержит запись для одной секционированной таблицы (название таблицы, атрибут и тип разбиения). В процессе инициализации модуля в разделяемую память сохраняется конфигурация дочерних таблиц в удобном для поиска формате. Получив запрос типа `SELECT` к секционированной таблице, `pathman` анализирует дерево условий запроса и выделяет из него условия вида:
2325

2426
```
2527
ПЕРЕМЕННАЯ ОПЕРАТОР КОНСТАНТА
2628
```
27-
где `ПЕРЕМЕННАЯ` -- это аттрибут, по которому было выполнено разбиение, `ОПЕРАТОР` -- оператор сравнения (поддерживаются =, <, <=, >, >=), `КОНСТАНТА` -- скалярное значение. Например:
29+
где `ПЕРЕМЕННАЯ` -- это атрибут, по которому было выполнено разбиение, `ОПЕРАТОР` -- оператор сравнения (поддерживаются =, <, <=, >, >=), `КОНСТАНТА` -- скалярное значение. Например:
2830

2931
```
3032
WHERE id = 150
@@ -33,7 +35,7 @@ WHERE id = 150
3335

3436
## Installation
3537

36-
Для установки pathman выполните в директории раширения команду:
38+
Для установки pathman выполните в директории расширения команду:
3739
```
3840
make install
3941
```
@@ -114,7 +116,7 @@ INSERT INTO hash_rel (value) SELECT g FROM generate_series(1, 10000) as g;
114116
```
115117
SELECT create_hash_partitions('hash_rel', 'value', 100);
116118
```
117-
Перенсем данные из родительской таблицы в дочерние секции.
119+
Перенесем данные из родительской таблицы в дочерние секции.
118120
```
119121
SELECT partition_data('hash_rel');
120122
```
@@ -132,7 +134,7 @@ SELECT create_range_partitions('range_rel', 'dt', '2010-01-01'::date, '1 month':
132134
```
133135
> Значение `premake` равно 59, а не 60, т.к. 1 секция создается независимо от значения `premake`
134136
135-
Перенсем данные из родительской таблицы в дочерние секции.
137+
Перенесем данные из родительской таблицы в дочерние секции.
136138
```
137139
SELECT partition_data('range_rel');
138140
```
@@ -147,4 +149,4 @@ SELECT split_range_partition('range_rel_1', '2010-02-15'::date);
147149
Добавим новую секцию в конец списка секций:
148150
```
149151
SELECT append_partition('range_rel')
150-
```
152+
```

doc/src/sgml/contrib.sgml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ CREATE EXTENSION <replaceable>module_name</> FROM unpackaged;
124124
&ltree;
125125
&pageinspect;
126126
&passwordcheck;
127+
&pathman;
127128
&pgbuffercache;
128129
&pgcrypto;
129130
&pgfreespacemap;

doc/src/sgml/filelist.sgml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@
127127
<!ENTITY oid2name SYSTEM "oid2name.sgml">
128128
<!ENTITY pageinspect SYSTEM "pageinspect.sgml">
129129
<!ENTITY passwordcheck SYSTEM "passwordcheck.sgml">
130+
<!ENTITY pathman SYSTEM "pathman.sgml">
130131
<!ENTITY pgbuffercache SYSTEM "pgbuffercache.sgml">
131132
<!ENTITY pgcrypto SYSTEM "pgcrypto.sgml">
132133
<!ENTITY pgfreespacemap SYSTEM "pgfreespacemap.sgml">

0 commit comments

Comments
 (0)