Add SPLIT PARTITION/MERGE PARTITIONS commands

Started by Dmitry Kovalalmost 4 years ago276 messages
Jump to latest
#1Dmitry Koval
d.koval@postgrespro.ru

Hi, hackers!

There are not many commands in PostgreSQL for working with partitioned
tables. This is an obstacle to their widespread use.
Adding SPLIT PARTITION/MERGE PARTITIONS operations can make easier to
use partitioned tables in PostgreSQL.
(This is especially important when migrating projects from ORACLE DBMS.)

SPLIT PARTITION/MERGE PARTITIONS commands are supported for range
partitioning (BY RANGE) and for list partitioning (BY LIST).
For hash partitioning (BY HASH) these operations are not supported.

=================
1 SPLIT PARTITION
=================
Command for split a single partition.

1.1 Syntax
----------

ALTER TABLE <name> SPLIT PARTITION <partition_name> INTO
(PARTITION <partition_name1> { FOR VALUES <partition_bound_spec> |
DEFAULT },
[ ... ]
PARTITION <partition_nameN> { FOR VALUES <partition_bound_spec> |
DEFAULT })

<partition_bound_spec>:
IN ( <partition_bound_expr> [, ...] ) |
FROM ( { <partition_bound_expr> | MINVALUE | MAXVALUE } [, ...] )
TO ( { <partition_bound_expr> | MINVALUE | MAXVALUE } [, ...] )

1.2 Rules
---------

1.2.1 The <partition_name> partition should be split into two (or more)
partitions.

1.2.2 New partitions should have different names (with existing
partitions too).

1.2.3 Bounds of new partitions should not overlap with new and existing
partitions.

1.2.4 In case split partition is DEFAULT partition, one of new
partitions should be DEFAULT.

1.2.5 In case new partitions or existing partitions contains DEFAULT
partition, new partitions <partition_name1>...<partition_nameN> can have
any bounds inside split partition bound (can be spaces between
partitions bounds).

1.2.6 In case partitioned table does not have DEFAULT partition, DEFAULT
partition can be defined as one of new partition.

1.2.7 In case new partitions not contains DEFAULT partition and
partitioned table does not have DEFAULT partition the following should
be true: sum bounds of new partitions
<partition_name1>...<partition_nameN> should be equal to bound of split
partition <partition_name>.

1.2.8 One of the new partitions <partition_name1>-<partition_nameN> can
have the same name as split partition <partition_name> (this is suitable
in case splitting a DEFAULT partition: we split it, but after splitting
we have a partition with the same name).

1.2.9 Only simple (non-partitioned) partitions can be split.

1.3 Examples
------------

1.3.1 Example for range partitioning (BY RANGE):

CREATE TABLE sales_range (salesman_id INT, salesman_name VARCHAR(30),
sales_amount INT, sales_date DATE) PARTITION BY RANGE (sales_date);
CREATE TABLE sales_jan2022 PARTITION OF sales_range FOR VALUES FROM
('2022-01-01') TO ('2022-02-01');
CREATE TABLE sales_feb_mar_apr2022 PARTITION OF sales_range FOR VALUES
FROM ('2022-02-01') TO ('2022-05-01');
CREATE TABLE sales_others PARTITION OF sales_range DEFAULT;

ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2022 INTO
(PARTITION sales_feb2022 FOR VALUES FROM ('2022-02-01') TO
('2022-03-01'),
PARTITION sales_mar2022 FOR VALUES FROM ('2022-03-01') TO
('2022-04-01'),
PARTITION sales_apr2022 FOR VALUES FROM ('2022-04-01') TO
('2022-05-01'));

1.3.2 Example for list partitioning (BY LIST):

CREATE TABLE sales_list
(salesman_id INT GENERATED ALWAYS AS IDENTITY,
salesman_name VARCHAR(30),
sales_state VARCHAR(20),
sales_amount INT,
sales_date DATE)
PARTITION BY LIST (sales_state);

CREATE TABLE sales_nord PARTITION OF sales_list FOR VALUES IN
('Murmansk', 'St. Petersburg', 'Ukhta');
CREATE TABLE sales_all PARTITION OF sales_list FOR VALUES IN ('Moscow',
'Voronezh', 'Smolensk', 'Bryansk', 'Magadan', 'Kazan', 'Khabarovsk',
'Volgograd', 'Vladivostok');
CREATE TABLE sales_others PARTITION OF sales_list DEFAULT;

ALTER TABLE sales_list SPLIT PARTITION sales_all INTO
(PARTITION sales_west FOR VALUES IN ('Voronezh', 'Smolensk', 'Bryansk'),
PARTITION sales_east FOR VALUES IN ('Magadan', 'Khabarovsk',
'Vladivostok'),
PARTITION sales_central FOR VALUES IN ('Moscow', 'Kazan',
'Volgograd'));

1.4 ToDo:
---------

1.4.1 Possibility to specify tablespace for each of the new partitions
(currently new partitions are created in the same tablespace as split
partition).
1.4.2 Possibility to use CONCURRENTLY mode that allows (during the SPLIT
operation) not blocking partitions that are not splitting.

==================
2 MERGE PARTITIONS
==================
Command for merge several partitions into one partition.

2.1 Syntax
----------

ALTER TABLE <name> MERGE PARTITIONS (<partition_name1>,
<partition_name2>[, ...]) INTO <new_partition_name>;

2.2 Rules
---------

2.2.1 The number of partitions that are merged into the new partition
<new_partition_name> should be at least two.

2.2.2
If DEFAULT partition is not in the list of partitions <partition_name1>,
<partition_name2>[, ...]:
* for range partitioning (BY RANGE) is necessary that the ranges of
the partitions <partition_name1>, <partition_name2>[, ...] can be merged
into one range without spaces and overlaps (otherwise an error will be
generated).
The combined range will be the range for the partition
<new_partition_name>.
* for list partitioning (BY LIST) the values lists of all partitions
<partition_name1>, <partition_name2>[, ...] are combined and form a list
of values of partition <new_partition_name>.

If DEFAULT partition is in the list of partitions <partition_name1>,
<partition_name2>[, ...]:
* the partition <new_partition_name> will be the DEFAULT partition;
* for both partitioning types (BY RANGE, BY LIST) the ranges and
lists of values of the merged partitions can be any.

2.2.3 The new partition <new_partition_name> can have the same name as
one of the merged partitions.

2.2.4 Only simple (non-partitioned) partitions can be merged.

2.3 Examples
------------

2.3.1 Example for range partitioning (BY RANGE):

CREATE TABLE sales_range (salesman_id INT, salesman_name VARCHAR(30),
sales_amount INT, sales_date DATE) PARTITION BY RANGE (sales_date);
CREATE TABLE sales_jan2022 PARTITION OF sales_range FOR VALUES FROM
('2022-01-01') TO ('2022-02-01');
CREATE TABLE sales_feb2022 PARTITION OF sales_range FOR VALUES FROM
('2022-02-01') TO ('2022-03-01');
CREATE TABLE sales_mar2022 PARTITION OF sales_range FOR VALUES FROM
('2022-03-01') TO ('2022-04-01');
CREATE TABLE sales_apr2022 PARTITION OF sales_range FOR VALUES FROM
('2022-04-01') TO ('2022-05-01');
CREATE TABLE sales_others PARTITION OF sales_range DEFAULT;

ALTER TABLE sales_range MERGE PARTITIONS (sales_feb2022, sales_mar2022,
sales_apr2022) INTO sales_feb_mar_apr2022;

2.3.2 Example for list partitioning (BY LIST):

CREATE TABLE sales_list
(salesman_id INT GENERATED ALWAYS AS IDENTITY,
salesman_name VARCHAR(30),
sales_state VARCHAR(20),
sales_amount INT,
sales_date DATE)
PARTITION BY LIST (sales_state);

CREATE TABLE sales_nord PARTITION OF sales_list FOR VALUES IN
('Murmansk', 'St. Petersburg', 'Ukhta');
CREATE TABLE sales_west PARTITION OF sales_list FOR VALUES IN
('Voronezh', 'Smolensk', 'Bryansk');
CREATE TABLE sales_east PARTITION OF sales_list FOR VALUES IN
('Magadan', 'Khabarovsk', 'Vladivostok');
CREATE TABLE sales_central PARTITION OF sales_list FOR VALUES IN
('Moscow', 'Kazan', 'Volgograd');
CREATE TABLE sales_others PARTITION OF sales_list DEFAULT;

ALTER TABLE sales_list MERGE PARTITIONS (sales_west, sales_east,
sales_central) INTO sales_all;

2.4 ToDo:
---------

2.4.1 Possibility to specify tablespace for the new partition (currently
new partition is created in the same tablespace as partitioned table).
2.4.2 Possibility to use CONCURRENTLY mode that allows (during the MERGE
operation) not blocking partitions that are not merging.
2.4.3 New syntax for ALTER TABLE ... MERGE PARTITIONS command for range
partitioning (BY RANGE):

ALTER TABLE <name> MERGE PARTITIONS <partition_name1> TO
<partition_name2> INTO <new_partition_name>;

This command can merge all partitions between <partition_name1> and
<partition_name2> into new partition <new_partition_name>.
This can be useful for this example cases: need to merge all one-month
partitions into a year partition or need to merge all one-day partitions
into a month partition.

Your opinions are very much welcome!

--
With best regards,
Dmitry Koval.

Attachments:

v1-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v1-0001-partitions-split-merge.patchDownload+5318-29
#2Matthias van de Meent
boekewurm+postgres@gmail.com
In reply to: Dmitry Koval (#1)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Tue, 31 May 2022 at 11:33, Dmitry Koval <d.koval@postgrespro.ru> wrote:

Hi, hackers!

There are not many commands in PostgreSQL for working with partitioned
tables. This is an obstacle to their widespread use.
Adding SPLIT PARTITION/MERGE PARTITIONS operations can make easier to
use partitioned tables in PostgreSQL.

That is quite a nice and useful feature to have.

(This is especially important when migrating projects from ORACLE DBMS.)

SPLIT PARTITION/MERGE PARTITIONS commands are supported for range
partitioning (BY RANGE) and for list partitioning (BY LIST).
For hash partitioning (BY HASH) these operations are not supported.

Just out of curiosity, why is SPLIT / MERGE support not included for
HASH partitions? Because sibling partitions can have a different
modulus, you should be able to e.g. split a partition with (modulus,
remainder) of (3, 1) into two partitions with (mod, rem) of (6, 1) and
(6, 4) respectively, with the reverse being true for merge operations,
right?

Kind regards,

Matthias van de Meent

#3Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Dmitry Koval (#1)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Tue, 2022-05-31 at 12:32 +0300, Dmitry Koval wrote:

There are not many commands in PostgreSQL for working with partitioned
tables. This is an obstacle to their widespread use.
Adding SPLIT PARTITION/MERGE PARTITIONS operations can make easier to
use partitioned tables in PostgreSQL.
(This is especially important when migrating projects from ORACLE DBMS.)

SPLIT PARTITION/MERGE PARTITIONS commands are supported for range
partitioning (BY RANGE) and for list partitioning (BY LIST).
For hash partitioning (BY HASH) these operations are not supported.

+1 on the general idea.

At least, it will makes these operations simpler, but probably also less
invasive (no need to detach the affected partitions).

I didn't read the patch, but what lock level does that place on the
partitioned table? Anything more than ACCESS SHARE?

Yours,
Laurenz Albe

#4Dmitry Koval
d.koval@postgrespro.ru
In reply to: Matthias van de Meent (#2)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

Just out of curiosity, why is SPLIT / MERGE support not included for
HASH partitions? Because sibling partitions can have a different
modulus, you should be able to e.g. split a partition with (modulus,
remainder) of (3, 1) into two partitions with (mod, rem) of (6, 1) and
(6, 4) respectively, with the reverse being true for merge operations,
right?

You are right, SPLIT/MERGE operations can be added for HASH-partitioning
in the future. But HASH-partitioning is rarer than RANGE- and
LIST-partitioning and I decided to skip it in the first step.
Maybe community will say that SPLIT/MERGE commands are not needed... (At
first step I would like to make sure that it is no true)

P.S. I attached patch with 1-line warning fix (for cfbot).
--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v2-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v2-0001-partitions-split-merge.patchDownload+5318-29
#5Dmitry Koval
d.koval@postgrespro.ru
In reply to: Laurenz Albe (#3)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

I didn't read the patch, but what lock level does that place on the
partitioned table? Anything more than ACCESS SHARE?

Current patch locks a partitioned table with ACCESS EXCLUSIVE lock.
Unfortunately only this lock guarantees that other session can not work
with partitions that are splitting or merging.

I want add CONCURRENTLY mode in future. With this mode partitioned table
during SPLIT/MERGE operation will be locked with SHARE UPDATE EXCLUSIVE
(as ATTACH/DETACH PARTITION commands in CONCURRENTLY mode).
But in this case queries from other sessions that want to work with
partitions that are splitting/merging at this time should receive an
error (like "Partition data is moving. Repeat the operation later")
because old partitions will be deleted at the end of SPLIT/MERGE operation.
I hope exists a better solution, but I don't know it now...

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

#6Zhihong Yu
zyu@yugabyte.com
In reply to: Dmitry Koval (#4)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Tue, May 31, 2022 at 12:43 PM Dmitry Koval <d.koval@postgrespro.ru>
wrote:

Just out of curiosity, why is SPLIT / MERGE support not included for
HASH partitions? Because sibling partitions can have a different
modulus, you should be able to e.g. split a partition with (modulus,
remainder) of (3, 1) into two partitions with (mod, rem) of (6, 1) and
(6, 4) respectively, with the reverse being true for merge operations,
right?

You are right, SPLIT/MERGE operations can be added for HASH-partitioning
in the future. But HASH-partitioning is rarer than RANGE- and
LIST-partitioning and I decided to skip it in the first step.
Maybe community will say that SPLIT/MERGE commands are not needed... (At
first step I would like to make sure that it is no true)

P.S. I attached patch with 1-line warning fix (for cfbot).
--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Hi,
For attachPartTable, the parameter wqueue is missing from comment.
The parameters of CloneRowTriggersToPartition are called parent
and partition. I think it is better to name the parameters to
attachPartTable in a similar manner.

For struct SplitPartContext, SplitPartitionContext would be better name.

+ /* Store partition contect into list. */
contect -> context

Cheers

#7Zhihong Yu
zyu@yugabyte.com
In reply to: Zhihong Yu (#6)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Tue, May 31, 2022 at 1:43 PM Zhihong Yu <zyu@yugabyte.com> wrote:

On Tue, May 31, 2022 at 12:43 PM Dmitry Koval <d.koval@postgrespro.ru>
wrote:

Just out of curiosity, why is SPLIT / MERGE support not included for
HASH partitions? Because sibling partitions can have a different
modulus, you should be able to e.g. split a partition with (modulus,
remainder) of (3, 1) into two partitions with (mod, rem) of (6, 1) and
(6, 4) respectively, with the reverse being true for merge operations,
right?

You are right, SPLIT/MERGE operations can be added for HASH-partitioning
in the future. But HASH-partitioning is rarer than RANGE- and
LIST-partitioning and I decided to skip it in the first step.
Maybe community will say that SPLIT/MERGE commands are not needed... (At
first step I would like to make sure that it is no true)

P.S. I attached patch with 1-line warning fix (for cfbot).
--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Hi,
For attachPartTable, the parameter wqueue is missing from comment.
The parameters of CloneRowTriggersToPartition are called parent
and partition. I think it is better to name the parameters to
attachPartTable in a similar manner.

For struct SplitPartContext, SplitPartitionContext would be better name.

+ /* Store partition contect into list. */
contect -> context

Cheers

Hi,
For transformPartitionCmdForMerge(), nested loop is used to detect
duplicate names.
If the number of partitions in partcmd->partlist, we should utilize map to
speed up the check.

For check_parent_values_in_new_partitions():

+           if (!find_value_in_new_partitions(&key->partsupfunc[0],
+                                             key->partcollation, parts,
nparts, datum, false))
+               found = false;

It seems we can break out of the loop when found is false.

Cheers

#8Dmitry Koval
d.koval@postgrespro.ru
In reply to: Zhihong Yu (#6)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

Hi,

1)

For attachPartTable, the parameter wqueue is missing from comment.
The parameters of CloneRowTriggersToPartition are called parent and partition.
I think it is better to name the parameters to attachPartTable in a similar manner.

For struct SplitPartContext, SplitPartitionContext would be better name.

+ /* Store partition contect into list. */
contect -> context

Thanks, changed.

2)

For transformPartitionCmdForMerge(), nested loop is used to detect duplicate names.
If the number of partitions in partcmd->partlist, we should utilize map to speed up the check.

I'm not sure what we should utilize map in this case because chance that
number of merging partitions exceed dozens is low.
Is there a function example that uses a map for such a small number of
elements?

3)

For check_parent_values_in_new_partitions():

+           if (!find_value_in_new_partitions(&key->partsupfunc[0],
+                                             key->partcollation, parts, nparts, datum, false))
+               found = false;

It seems we can break out of the loop when found is false.

We have implicit "break" in "for" construction:

+ for (i = 0; i < boundinfo->ndatums && found; i++)

I'll change it to explicit "break;" to avoid confusion.

Attached patch with the changes described above.
--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v3-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v3-0001-partitions-split-merge.patchDownload+5323-29
#9Zhihong Yu
zyu@yugabyte.com
In reply to: Dmitry Koval (#8)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Wed, Jun 1, 2022 at 11:58 AM Dmitry Koval <d.koval@postgrespro.ru> wrote:

Hi,

1)

For attachPartTable, the parameter wqueue is missing from comment.
The parameters of CloneRowTriggersToPartition are called parent and

partition.

I think it is better to name the parameters to attachPartTable in a

similar manner.

For struct SplitPartContext, SplitPartitionContext would be better name.

+ /* Store partition contect into list. */
contect -> context

Thanks, changed.

2)

For transformPartitionCmdForMerge(), nested loop is used to detect

duplicate names.

If the number of partitions in partcmd->partlist, we should utilize map

to speed up the check.

I'm not sure what we should utilize map in this case because chance that
number of merging partitions exceed dozens is low.
Is there a function example that uses a map for such a small number of
elements?

3)

For check_parent_values_in_new_partitions():

+           if (!find_value_in_new_partitions(&key->partsupfunc[0],
+                                             key->partcollation, parts,

nparts, datum, false))

+ found = false;

It seems we can break out of the loop when found is false.

We have implicit "break" in "for" construction:

+ for (i = 0; i < boundinfo->ndatums && found; i++)

I'll change it to explicit "break;" to avoid confusion.

Attached patch with the changes described above.
--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Hi,
Thanks for your response.

w.r.t. #2, I think using nested loop is fine for now.
If, when this feature is merged, some user comes up with long merge list,
we can revisit this topic.

Cheers

#10Dmitry Koval
d.koval@postgrespro.ru
In reply to: Dmitry Koval (#1)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

Hi!

Patch stop applying due to changes in upstream.
Here is a rebased version.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v4-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v4-0001-partitions-split-merge.patchDownload+5298-29
#11Zhihong Yu
zyu@yugabyte.com
In reply to: Dmitry Koval (#10)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Wed, Jul 13, 2022 at 11:28 AM Dmitry Koval <d.koval@postgrespro.ru>
wrote:

Hi!

Patch stop applying due to changes in upstream.
Here is a rebased version.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Hi,

+attachPartTable(List **wqueue, Relation rel, Relation partition,
PartitionBoundSpec *bound)

I checked naming of existing methods, such as AttachPartitionEnsureIndexes.
I think it would be better if the above method is
named attachPartitionTable.

+   if (!defaultPartCtx && OidIsValid(defaultPartOid))
+   {
+       pc = createSplitPartitionContext(table_open(defaultPartOid,
AccessExclusiveLock));

Since the value of pc would be passed to defaultPartCtx, there is no need
to assign to pc above. You can assign directly to defaultPartCtx.

+ /* Drop splitted partition. */

splitted -> split

+ /* Rename new partition if it is need. */

need -> needed.

Cheers

#12Dmitry Koval
d.koval@postgrespro.ru
In reply to: Zhihong Yu (#11)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

Thanks you!
I've fixed all things mentioned.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v5-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v5-0001-partitions-split-merge.patchDownload+5296-29
#13Zhihong Yu
zyu@yugabyte.com
In reply to: Dmitry Koval (#12)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Wed, Jul 13, 2022 at 1:05 PM Dmitry Koval <d.koval@postgrespro.ru> wrote:

Thanks you!
I've fixed all things mentioned.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Hi,
Toward the end of ATExecSplitPartition():

+ /* Unlock new partition. */
+ table_close(newPartRel, NoLock);

Why is NoLock passed (instead of AccessExclusiveLock) ?

Cheers

#14Dmitry Koval
d.koval@postgrespro.ru
In reply to: Zhihong Yu (#13)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

+       /* Unlock new partition. */
+       table_close(newPartRel, NoLock);

 Why is NoLock passed (instead of AccessExclusiveLock) ?

Thanks!

You're right, I replaced the comment with "Keep the lock until commit.".

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v6-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v6-0001-partitions-split-merge.patchDownload+5296-29
#15Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Dmitry Koval (#14)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

This is not a review, but I think the isolation tests should be
expanded. At least, include the case of serializable transactions being
involved.

--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"Pensar que el espectro que vemos es ilusorio no lo despoja de espanto,
sólo le suma el nuevo terror de la locura" (Perelandra, C.S. Lewis)

#16Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alvaro Herrera (#15)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

This is not a review, but I think the isolation tests should be
expanded. At least, include the case of serializable transactions being
involved.

Thanks!
I will expand the tests for the next commitfest.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

#17Dmitry Koval
d.koval@postgrespro.ru
In reply to: Dmitry Koval (#1)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

Hi!

Patch stop applying due to changes in upstream.
Here is a rebased version.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v7-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v7-0001-partitions-split-merge.patchDownload+5293-29
#18Dmitry Koval
d.koval@postgrespro.ru
In reply to: Dmitry Koval (#16)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

I will expand the tests for the next commitfest.

Hi!

Combinations of isolation modes (READ COMMITTED/REPEATABLE
READ/SERIALIZABLE) were added to test

src/test/isolation/specs/partition-split-merge.spec

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v8-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v8-0001-partitions-split-merge.patchDownload+5675-29
#19Dmitry Koval
d.koval@postgrespro.ru
In reply to: Dmitry Koval (#16)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

Hi!

Patch stop applying due to changes in upstream.
Here is a rebased version.

--
With best regards,
Dmitry Koval

Postgres Professional: http://postgrespro.com

Attachments:

v9-0001-partitions-split-merge.patchtext/plain; charset=UTF-8; name=v9-0001-partitions-split-merge.patchDownload+5675-29
#20Justin Pryzby
pryzby@telsasoft.com
In reply to: Dmitry Koval (#19)
Re: Add SPLIT PARTITION/MERGE PARTITIONS commands

On Wed, Sep 07, 2022 at 08:03:09PM +0300, Dmitry Koval wrote:

Hi!

Patch stop applying due to changes in upstream.
Here is a rebased version.

This crashes on freebsd with -DRELCACHE_FORCE_RELEASE
https://cirrus-ci.com/task/6565371623768064
https://cirrus-ci.com/task/6145355992530944

Note that that's a modified cirrus script from my CI improvements branch
which also does some extra/different things.

--
Justin

#21Dmitry Koval
d.koval@postgrespro.ru
In reply to: Justin Pryzby (#20)
#22Justin Pryzby
pryzby@telsasoft.com
In reply to: Dmitry Koval (#21)
#23Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Justin Pryzby (#22)
#24Dmitry Koval
d.koval@postgrespro.ru
In reply to: Justin Pryzby (#22)
#25Dmitry Koval
d.koval@postgrespro.ru
In reply to: Justin Pryzby (#22)
#26Robert Haas
robertmhaas@gmail.com
In reply to: Dmitry Koval (#1)
#27Dmitry Koval
d.koval@postgrespro.ru
In reply to: Robert Haas (#26)
#28Robert Haas
robertmhaas@gmail.com
In reply to: Dmitry Koval (#27)
#29Dmitry Koval
d.koval@postgrespro.ru
In reply to: Robert Haas (#26)
#30Zhihong Yu
zyu@yugabyte.com
In reply to: Dmitry Koval (#29)
#31Zhihong Yu
zyu@yugabyte.com
In reply to: Zhihong Yu (#30)
#32Dmitry Koval
d.koval@postgrespro.ru
In reply to: Zhihong Yu (#31)
#33Dmitry Koval
d.koval@postgrespro.ru
In reply to: Justin Pryzby (#22)
#34stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#33)
#35Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#34)
#36stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#35)
#37Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#36)
#38stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#37)
#39Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#38)
#40Daniel Gustafsson
daniel@yesql.se
In reply to: Dmitry Koval (#39)
#41Dmitry Koval
d.koval@postgrespro.ru
In reply to: Daniel Gustafsson (#40)
#42stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#41)
#43Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#42)
#44stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#43)
#45Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#44)
#46Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#42)
#47vignesh C
vignesh21@gmail.com
In reply to: Dmitry Koval (#46)
#48Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: vignesh C (#47)
#49Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Alvaro Herrera (#48)
#50Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alvaro Herrera (#49)
#51Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alvaro Herrera (#49)
#52Andrey Borodin
amborodin@acm.org
In reply to: Dmitry Koval (#51)
#53Dmitry Koval
d.koval@postgrespro.ru
In reply to: Andrey Borodin (#52)
#54stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#53)
#55stephane tachoires
stephane.tachoires@gmail.com
In reply to: stephane tachoires (#54)
#56Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#55)
#57Alexander Korotkov
aekorotkov@gmail.com
In reply to: Robert Haas (#28)
#58Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#56)
#59Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#58)
#60Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#59)
#61Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#60)
#62Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#60)
#63Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#62)
#64Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#63)
#65stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#64)
#66Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#64)
#67Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#66)
#68Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Korotkov (#66)
#69Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Lakhin (#68)
#70Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Korotkov (#69)
#71Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#70)
#72Tender Wang
tndrwang@gmail.com
In reply to: Alexander Korotkov (#66)
#73Alexander Lakhin
exclusion@gmail.com
In reply to: Tender Wang (#72)
#74Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#73)
#75Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#74)
#76Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Korotkov (#75)
#77Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Lakhin (#76)
#78Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#77)
#79Richard Guo
guofenglinux@gmail.com
In reply to: Dmitry Koval (#78)
#80Dmitry Koval
d.koval@postgrespro.ru
In reply to: Richard Guo (#79)
#81Alexander Lakhin
exclusion@gmail.com
In reply to: Dmitry Koval (#80)
#82Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#81)
#83Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#82)
#84Alexander Lakhin
exclusion@gmail.com
In reply to: Dmitry Koval (#82)
#85Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Lakhin (#84)
#86Robert Haas
robertmhaas@gmail.com
In reply to: Alexander Korotkov (#85)
#87Dmitry Koval
d.koval@postgrespro.ru
In reply to: Robert Haas (#86)
#88Alexander Lakhin
exclusion@gmail.com
In reply to: Dmitry Koval (#87)
#89Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#88)
#90Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#89)
#91Robert Haas
robertmhaas@gmail.com
In reply to: Alexander Korotkov (#90)
#92Alexander Lakhin
exclusion@gmail.com
In reply to: Robert Haas (#91)
#93Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#90)
#94Robert Haas
robertmhaas@gmail.com
In reply to: Alexander Lakhin (#92)
#95Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#93)
#96Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Korotkov (#95)
In reply to: Alexander Lakhin (#96)
#98Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Alexander Lakhin (#96)
#99Robert Haas
robertmhaas@gmail.com
In reply to: Alexander Korotkov (#95)
#100Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Korotkov (#95)
#101Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#96)
#102Alexander Lakhin
exclusion@gmail.com
In reply to: Alvaro Herrera (#98)
#103Justin Pryzby
pryzby@telsasoft.com
In reply to: Robert Haas (#86)
#104Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#101)
#105Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Korotkov (#104)
#106Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Korotkov (#105)
#107Pavel Borisov
pashkin.elfe@gmail.com
In reply to: Justin Pryzby (#106)
#108Alexander Korotkov
aekorotkov@gmail.com
In reply to: Pavel Borisov (#107)
#109Alexander Korotkov
aekorotkov@gmail.com
In reply to: Justin Pryzby (#106)
#110Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Korotkov (#108)
#111Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Lakhin (#110)
#112Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Korotkov (#109)
#113David G. Johnston
david.g.johnston@gmail.com
In reply to: Alexander Lakhin (#110)
#114David G. Johnston
david.g.johnston@gmail.com
In reply to: Alexander Lakhin (#110)
#115Justin Pryzby
pryzby@telsasoft.com
In reply to: Justin Pryzby (#112)
#116Alexander Lakhin
exclusion@gmail.com
In reply to: Dmitry Koval (#101)
#117Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#116)
#118Alexander Lakhin
exclusion@gmail.com
In reply to: Dmitry Koval (#117)
#119Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Lakhin (#84)
#120Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#118)
#121Dmitry Koval
d.koval@postgrespro.ru
In reply to: Justin Pryzby (#119)
#122Justin Pryzby
pryzby@telsasoft.com
In reply to: Dmitry Koval (#121)
#123Alexander Korotkov
aekorotkov@gmail.com
In reply to: Justin Pryzby (#122)
#124Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Korotkov (#123)
#125Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#120)
#126Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Korotkov (#124)
#127Alexander Korotkov
aekorotkov@gmail.com
In reply to: Justin Pryzby (#126)
#128Alexander Lakhin
exclusion@gmail.com
In reply to: Alexander Korotkov (#125)
#129Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#128)
#130Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Lakhin (#128)
#131Daniel Gustafsson
daniel@yesql.se
In reply to: Dmitry Koval (#130)
#132Dmitry Koval
d.koval@postgrespro.ru
In reply to: Daniel Gustafsson (#131)
#133Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#132)
#134Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Korotkov (#127)
#135Alexander Korotkov
aekorotkov@gmail.com
In reply to: Justin Pryzby (#134)
#136Pavel Borisov
pashkin.elfe@gmail.com
In reply to: Alexander Korotkov (#135)
#137Alexander Korotkov
aekorotkov@gmail.com
In reply to: Pavel Borisov (#136)
#138Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alexander Korotkov (#137)
#139Alexander Lakhin
exclusion@gmail.com
In reply to: Tom Lane (#138)
#140Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Lakhin (#139)
#141Justin Pryzby
pryzby@telsasoft.com
In reply to: Alexander Korotkov (#123)
#142Alexander Korotkov
aekorotkov@gmail.com
In reply to: Justin Pryzby (#141)
#143Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Korotkov (#140)
#144Noah Misch
noah@leadboat.com
In reply to: Alexander Korotkov (#66)
#145Alexander Korotkov
aekorotkov@gmail.com
In reply to: Noah Misch (#144)
#146Dmitry Koval
d.koval@postgrespro.ru
In reply to: Noah Misch (#144)
#147Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#146)
#148Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#147)
#149Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#148)
#150Pavel Borisov
pashkin.elfe@gmail.com
In reply to: Alexander Korotkov (#149)
#151Alexander Korotkov
aekorotkov@gmail.com
In reply to: Pavel Borisov (#150)
#152Pavel Borisov
pashkin.elfe@gmail.com
In reply to: Alexander Korotkov (#151)
#153Alexander Korotkov
aekorotkov@gmail.com
In reply to: Pavel Borisov (#152)
#154Robert Haas
robertmhaas@gmail.com
In reply to: Alexander Korotkov (#153)
#155Jonathan S. Katz
jkatz@postgresql.org
In reply to: Robert Haas (#154)
#156Alexander Korotkov
aekorotkov@gmail.com
In reply to: Robert Haas (#154)
#157Robert Haas
robertmhaas@gmail.com
In reply to: Alexander Korotkov (#156)
#158Alexander Korotkov
aekorotkov@gmail.com
In reply to: Robert Haas (#157)
#159Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#158)
#160Robert Haas
robertmhaas@gmail.com
In reply to: Dmitry Koval (#159)
#161Dmitry Koval
d.koval@postgrespro.ru
In reply to: Robert Haas (#160)
#162Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#161)
#163Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#162)
#164stephane tachoires
stephane.tachoires@gmail.com
In reply to: Dmitry Koval (#163)
#165Dmitry Koval
d.koval@postgrespro.ru
In reply to: stephane tachoires (#164)
#166Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#165)
#167Alexander Korotkov
aekorotkov@gmail.com
In reply to: Robert Haas (#157)
#168Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#163)
#169Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#168)
#170Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Dmitry Koval (#169)
#171vignesh C
vignesh21@gmail.com
In reply to: Dmitry Koval (#169)
#172Dmitry Koval
d.koval@postgrespro.ru
In reply to: vignesh C (#171)
#173Dmitry Koval
d.koval@postgrespro.ru
In reply to: vignesh C (#171)
#174Dmitry Koval
d.koval@postgrespro.ru
In reply to: vignesh C (#171)
#175jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#173)
#176Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#175)
#177jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#176)
#178Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#177)
#179jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#178)
#180Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#179)
#181Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#180)
#182Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#174)
#183Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#182)
#184Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#182)
#185jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#184)
#186Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#185)
#187Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#186)
#188jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#186)
#189jian he
jian.universality@gmail.com
In reply to: jian he (#188)
#190jian he
jian.universality@gmail.com
In reply to: jian he (#189)
#191Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#187)
#192Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#188)
#193jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#192)
#194jian he
jian.universality@gmail.com
In reply to: jian he (#193)
#195Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#190)
#196jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#195)
#197Junwang Zhao
zhjwpku@gmail.com
In reply to: Dmitry Koval (#195)
#198Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#196)
#199jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#198)
#200jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#198)
#201Dmitry Koval
d.koval@postgrespro.ru
In reply to: Junwang Zhao (#197)
#202jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#201)
#203jian he
jian.universality@gmail.com
In reply to: jian he (#202)
#204jian he
jian.universality@gmail.com
In reply to: jian he (#203)
#205Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#200)
#206jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#205)
#207Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#206)
#208jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#207)
#209jian he
jian.universality@gmail.com
In reply to: jian he (#208)
#210Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#209)
#211jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#210)
#212Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#211)
#213jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#212)
#214Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#213)
#215jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#214)
#216Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#215)
#217jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#216)
#218Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#217)
#219jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#218)
#220Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#219)
#221Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#220)
#222Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#221)
#223jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#222)
#224jian he
jian.universality@gmail.com
In reply to: jian he (#223)
#225jian he
jian.universality@gmail.com
In reply to: jian he (#224)
#226jian he
jian.universality@gmail.com
In reply to: jian he (#225)
#227Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#226)
#228jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#227)
#229Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#228)
#230Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#229)
#231Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Korotkov (#230)
#232Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#231)
#233jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#232)
#234Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#233)
#235jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#234)
#236Chao Li
li.evan.chao@gmail.com
In reply to: Dmitry Koval (#234)
#237jian he
jian.universality@gmail.com
In reply to: jian he (#235)
#238Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#237)
#239Dmitry Koval
d.koval@postgrespro.ru
In reply to: Chao Li (#236)
#240jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#239)
#241Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#240)
#242jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#241)
#243Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#242)
#244jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#243)
#245Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#244)
#246jian he
jian.universality@gmail.com
In reply to: Dmitry Koval (#245)
#247Dmitry Koval
d.koval@postgrespro.ru
In reply to: jian he (#246)
#248Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#243)
#249Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#248)
#250Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#249)
#251Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#250)
#252Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#251)
#253Dmitry Koval
d.koval@postgrespro.ru
In reply to: Alexander Korotkov (#252)
#254Alexander Korotkov
aekorotkov@gmail.com
In reply to: Dmitry Koval (#253)
#255stephane tachoires
stephane.tachoires@gmail.com
In reply to: Alexander Korotkov (#254)
#256Alexander Korotkov
aekorotkov@gmail.com
In reply to: stephane tachoires (#255)
#257Alexander Korotkov
aekorotkov@gmail.com
In reply to: Alexander Korotkov (#256)
#258zengman
zengman@halodbtech.com
In reply to: Alexander Korotkov (#257)
#259Alexander Korotkov
aekorotkov@gmail.com
In reply to: zengman (#258)
#260Alexander Korotkov
aekorotkov@gmail.com
In reply to: zengman (#258)
#261zengman
zengman@halodbtech.com
In reply to: Alexander Korotkov (#260)
#262Alexander Korotkov
aekorotkov@gmail.com
In reply to: zengman (#261)
#263Tender Wang
tndrwang@gmail.com
In reply to: Alexander Korotkov (#262)
#264Kirill Reshke
reshkekirill@gmail.com
In reply to: Alexander Korotkov (#262)
#265Alexander Korotkov
aekorotkov@gmail.com
In reply to: Kirill Reshke (#264)
#266Alexander Korotkov
aekorotkov@gmail.com
In reply to: Tender Wang (#263)
#267jian he
jian.universality@gmail.com
In reply to: Alexander Korotkov (#265)
#268Alexander Korotkov
aekorotkov@gmail.com
In reply to: jian he (#267)
#269Kirill Reshke
reshkekirill@gmail.com
In reply to: Alexander Korotkov (#268)
#270Tender Wang
tndrwang@gmail.com
In reply to: Alexander Korotkov (#266)
#271Kirill Reshke
reshkekirill@gmail.com
In reply to: Tender Wang (#270)
#272Alexander Korotkov
aekorotkov@gmail.com
In reply to: Kirill Reshke (#271)
#273Kirill Reshke
reshkekirill@gmail.com
In reply to: Alexander Korotkov (#272)
#274Tender Wang
tndrwang@gmail.com
In reply to: Kirill Reshke (#273)
#275Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tender Wang (#274)
#276Tender Wang
tndrwang@gmail.com
In reply to: Alvaro Herrera (#275)