Skip to content

Commit 3d98a8e

Browse files
committed
Update README
1 parent f3bc599 commit 3d98a8e

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

README.md

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ The `pg_pathman` module provides optimized partitioning mechanism and functions
99

1010
The extension is compatible with:
1111

12-
* PostgreSQL 9.5, 9.6, 10;
12+
* PostgreSQL 9.5, 9.6, 10, 11;
1313
* Postgres Pro Standard 9.5, 9.6;
1414
* Postgres Pro Enterprise;
1515

@@ -63,7 +63,7 @@ More interesting features are yet to come. Stay tuned!
6363
* Effective query planning for partitioned tables (JOINs, subselects etc);
6464
* `RuntimeAppend` & `RuntimeMergeAppend` custom plan nodes to pick partitions at runtime;
6565
* [`PartitionFilter`](#custom-plan-nodes): an efficient drop-in replacement for INSERT triggers;
66-
* [`PartitionRouter`](#custom-plan-nodes) for cross-partition UPDATE queries (instead of triggers);
66+
* [`PartitionRouter`](#custom-plan-nodes) and [`PartitionOverseer`](#custom-plan-nodes) for cross-partition UPDATE queries (instead of triggers);
6767
* Automatic partition creation for new INSERTed data (only for RANGE partitioning);
6868
* Improved `COPY FROM` statement that is able to insert rows directly into partitions;
6969
* [User-defined callbacks](#additional-parameters) for partition creation event handling;
@@ -105,7 +105,7 @@ In order to update pg_pathman:
105105
3. Execute the following queries:
106106

107107
```plpgsql
108-
/* only required for major releases, e.g. 1.3 -> 1.4 */
108+
/* only required for major releases, e.g. 1.4 -> 1.5 */
109109
ALTER EXTENSION pg_pathman UPDATE;
110110
SET pg_pathman.enable = t;
111111
```
@@ -417,6 +417,7 @@ Shows memory consumption of various caches.
417417
- `RuntimeAppend` (overrides `Append` plan node)
418418
- `RuntimeMergeAppend` (overrides `MergeAppend` plan node)
419419
- `PartitionFilter` (drop-in replacement for INSERT triggers)
420+
- `PartitionOverseer` (implements cross-partition UPDATEs)
420421
- `PartitionRouter` (implements cross-partition UPDATEs)
421422

422423
`PartitionFilter` acts as a *proxy node* for INSERT's child scan, which means it can redirect output tuples to the corresponding partition:
@@ -434,20 +435,27 @@ SELECT generate_series(1, 10), random();
434435
(4 rows)
435436
```
436437

437-
`PartitionRouter` is another *proxy node* used in conjunction with `PartitionFilter` to enable cross-partition UPDATEs (i.e. when update of partitioning key requires that we move row to another partition). Since this node has a great deal of side effects (ordinary `UPDATE` becomes slower; cross-partition `UPDATE` is transformed into `DELETE + INSERT`), it is disabled by default. To enable it, refer to the list of [GUCs](#disabling-pg_pathman) below.
438+
`PartitionOverseer` and `PartitionRouter` are another *proxy nodes* used
439+
in conjunction with `PartitionFilter` to enable cross-partition UPDATEs
440+
(i.e. when update of partitioning key requires that we move row to another
441+
partition). Since this node has a great deal of side effects (ordinary `UPDATE` becomes slower;
442+
cross-partition `UPDATE` is transformed into `DELETE + INSERT`),
443+
it is disabled by default.
444+
To enable it, refer to the list of [GUCs](#disabling-pg_pathman) below.
438445

439446
```plpgsql
440447
EXPLAIN (COSTS OFF)
441448
UPDATE partitioned_table
442449
SET value = value + 1 WHERE value = 2;
443-
QUERY PLAN
444-
---------------------------------------------------
445-
Update on partitioned_table_0
446-
-> Custom Scan (PartitionRouter)
450+
QUERY PLAN
451+
---------------------------------------------------------
452+
Custom Scan (PartitionOverseer)
453+
-> Update on partitioned_table_2
447454
-> Custom Scan (PartitionFilter)
448-
-> Seq Scan on partitioned_table_0
449-
Filter: (value = 2)
450-
(5 rows)
455+
-> Custom Scan (PartitionRouter)
456+
-> Seq Scan on partitioned_table_2
457+
Filter: (value = 2)
458+
(6 rows)
451459
```
452460

453461
`RuntimeAppend` and `RuntimeMergeAppend` have much in common: they come in handy in a case when WHERE condition takes form of:

0 commit comments

Comments
 (0)