Skip to content

Commit 869d56c

Browse files
authored
Split sharded inserts to allow multirow insert into correct tables (#571)
* initial integration test for insert splitting * refactor config, detect multi-insert queries and error * WIP - actually split inserts * Cleanup and example config for insert splitting * enhanced testing protocol for insert splitting * tweak table name assertion * additional testing
1 parent b560115 commit 869d56c

38 files changed

Lines changed: 1981 additions & 308 deletions

File tree

example.pgdog.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,11 @@ port = 5432
323323
# Role set to replica.
324324
role = "replica"
325325

326+
[rewrite]
327+
enabled = false
328+
shard_key = "ignore"
329+
split_inserts = "error"
330+
326331
#
327332
# TCP tweaks.
328333
#

integration/complex/cancel_query/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
query_timeout = 60000
33
shutdown_timeout = 0
44
shutdown_termination_timeout = 1000
5-
rewrite_shard_key_updates = "ignore"
5+
6+
[rewrite]
7+
enabled = false
8+
shard_key = "ignore"
9+
split_inserts = "error"
610

711
[[databases]]
812
name = "pgdog"

integration/dry_run/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
[general]
22
dry_run = true
3-
rewrite_shard_key_updates = "ignore"
3+
4+
[rewrite]
5+
enabled = false
6+
shard_key = "ignore"
7+
split_inserts = "error"
48

59
[[databases]]
610
name = "pgdog"

integration/failover/pgdog.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ query_timeout = 1_000
66
idle_healthcheck_interval = 1_000
77
client_login_timeout = 1_000
88
load_balancing_algorithm = "round_robin"
9-
rewrite_shard_key_updates = "ignore"
9+
[rewrite]
10+
enabled = false
11+
shard_key = "ignore"
12+
split_inserts = "error"
1013

1114
[[databases]]
1215
name = "failover"

integration/load_balancer/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ pooler_mode = "transaction"
1616
load_balancing_strategy = "round_robin"
1717
auth_type = "trust"
1818
read_write_split = "exclude_primary"
19-
rewrite_shard_key_updates = "ignore"
19+
20+
[rewrite]
21+
enabled = false
22+
shard_key = "ignore"
23+
split_inserts = "error"
2024

2125
# [replica_lag]
2226
# check_interval = 2000

integration/logical/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
[general]
2-
rewrite_shard_key_updates = "ignore"
2+
3+
[rewrite]
4+
enabled = false
5+
shard_key = "ignore"
6+
split_inserts = "error"
37

48
[[databases]]
59
name = "pgdog"

integration/mirror/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
[general]
22
mirror_exposure = 1.0
33
openmetrics_port = 9090
4-
rewrite_shard_key_updates = "ignore"
4+
5+
[rewrite]
6+
enabled = false
7+
shard_key = "ignore"
8+
split_inserts = "error"
59

610
[[databases]]
711
name = "pgdog"

integration/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ openmetrics_namespace = "pgdog_"
1313
prepared_statements_limit = 500
1414
prepared_statements = "extended"
1515
expanded_explain = true
16-
rewrite_shard_key_updates = "ignore"
1716
# dns_ttl = 15_000
1817
query_cache_limit = 500
1918
pub_sub_channel_size = 4098
@@ -22,6 +21,11 @@ healthcheck_port = 8080
2221
tls_certificate = "integration/tls/cert.pem"
2322
tls_private_key = "integration/tls/key.pem"
2423

24+
[rewrite]
25+
enabled = false
26+
shard_key = "ignore"
27+
split_inserts = "error"
28+
2529
# ------------------------------------------------------------------------------
2630
# ----- Database :: pgdog ------------------------------------------------------
2731

integration/plugins/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
[general]
2-
rewrite_shard_key_updates = "ignore"
2+
3+
[rewrite]
4+
enabled = false
5+
shard_key = "ignore"
6+
split_inserts = "error"
37

48
[[plugins]]
59
name = "pgdog_example_plugin"

integration/pub_sub/pgdog.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
[general]
22
pub_sub_channel_size = 4098
3-
rewrite_shard_key_updates = "ignore"
3+
4+
[rewrite]
5+
enabled = false
6+
shard_key = "ignore"
7+
split_inserts = "error"
48

59
[[databases]]
610
name = "pgdog"

0 commit comments

Comments
 (0)