Skip to content

Commit e4eca16

Browse files
committed
Hash by persistence_id only
1 parent 8cb812d commit e4eca16

File tree

6 files changed

+17
-18
lines changed

6 files changed

+17
-18
lines changed

core/src/test/resources/schema/postgres/nested-partitions-schema.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ CREATE TABLE public.journal_persistence_ids(
7777
max_sequence_number BIGINT NOT NULL,
7878
min_ordering BIGINT NOT NULL,
7979
max_ordering BIGINT NOT NULL,
80-
PRIMARY KEY (id, persistence_id)
81-
) PARTITION BY HASH(id);
80+
PRIMARY KEY (persistence_id)
81+
) PARTITION BY HASH(persistence_id);
8282

8383
CREATE TABLE public.journal_persistence_ids_0 PARTITION OF public.journal_persistence_ids FOR VALUES WITH (MODULUS 2, REMAINDER 0);
8484
CREATE TABLE public.journal_persistence_ids_1 PARTITION OF public.journal_persistence_ids FOR VALUES WITH (MODULUS 2, REMAINDER 1);
@@ -89,7 +89,7 @@ DECLARE
8989
BEGIN
9090
INSERT INTO public.journal_persistence_ids (persistence_id, max_sequence_number, max_ordering, min_ordering)
9191
VALUES (NEW.persistence_id, NEW.sequence_number, NEW.ordering, NEW.ordering)
92-
ON CONFLICT (id, persistence_id) DO UPDATE
92+
ON CONFLICT (persistence_id) DO UPDATE
9393
SET
9494
max_sequence_number = NEW.sequence_number,
9595
max_ordering = NEW.ordering,

core/src/test/resources/schema/postgres/partitioned-schema.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ CREATE TABLE public.journal_persistence_ids(
7878
max_sequence_number BIGINT NOT NULL,
7979
min_ordering BIGINT NOT NULL,
8080
max_ordering BIGINT NOT NULL,
81-
PRIMARY KEY (id, persistence_id)
82-
) PARTITION BY HASH(id);
81+
PRIMARY KEY (persistence_id)
82+
) PARTITION BY HASH(persistence_id);
8383

8484
CREATE TABLE public.journal_persistence_ids_0 PARTITION OF public.journal_persistence_ids FOR VALUES WITH (MODULUS 2, REMAINDER 0);
8585
CREATE TABLE public.journal_persistence_ids_1 PARTITION OF public.journal_persistence_ids FOR VALUES WITH (MODULUS 2, REMAINDER 1);
@@ -90,7 +90,7 @@ DECLARE
9090
BEGIN
9191
INSERT INTO public.journal_persistence_ids (persistence_id, max_sequence_number, max_ordering, min_ordering)
9292
VALUES (NEW.persistence_id, NEW.sequence_number, NEW.ordering, NEW.ordering)
93-
ON CONFLICT (id, persistence_id) DO UPDATE
93+
ON CONFLICT (persistence_id) DO UPDATE
9494
SET
9595
max_sequence_number = NEW.sequence_number,
9696
max_ordering = NEW.ordering,

core/src/test/resources/schema/postgres/plain-schema.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ CREATE TABLE public.journal_persistence_ids(
5151
max_sequence_number BIGINT NOT NULL,
5252
min_ordering BIGINT NOT NULL,
5353
max_ordering BIGINT NOT NULL,
54-
PRIMARY KEY (id, persistence_id)
55-
) PARTITION BY HASH(id);
54+
PRIMARY KEY (persistence_id)
55+
) PARTITION BY HASH(persistence_id);
5656

5757
CREATE TABLE public.journal_persistence_ids_0 PARTITION OF public.journal_persistence_ids FOR VALUES WITH (MODULUS 2, REMAINDER 0);
5858
CREATE TABLE public.journal_persistence_ids_1 PARTITION OF public.journal_persistence_ids FOR VALUES WITH (MODULUS 2, REMAINDER 1);
@@ -63,7 +63,7 @@ DECLARE
6363
BEGIN
6464
INSERT INTO public.journal_persistence_ids (persistence_id, max_sequence_number, max_ordering, min_ordering)
6565
VALUES (NEW.persistence_id, NEW.sequence_number, NEW.ordering, NEW.ordering)
66-
ON CONFLICT (id, persistence_id) DO UPDATE
66+
ON CONFLICT (persistence_id) DO UPDATE
6767
SET
6868
max_sequence_number = NEW.sequence_number,
6969
max_ordering = NEW.ordering,

migration/src/main/scala/akka/persistence/postgres/migration/journal/JournalSchema.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ private[journal] trait JournalSchema {
3737
#$maxSequenceNumber BIGINT NOT NULL,
3838
#$maxOrdering BIGINT NOT NULL,
3939
#$minOrdering BIGINT NOT NULL,
40-
PRIMARY KEY (#$id, #$persistenceId)
41-
) PARTITION BY HASH(#$id)"""
40+
PRIMARY KEY (#$persistenceId)
41+
) PARTITION BY HASH(#$persistenceId)"""
4242
_ <-
4343
sqlu"""CREATE TABLE #${fullTableName}_0 PARTITION OF #$fullTableName FOR VALUES WITH (MODULUS 2, REMAINDER 0)"""
4444
_ <-
@@ -111,7 +111,7 @@ private[journal] trait JournalSchema {
111111
BEGIN
112112
INSERT INTO #$fullTableName (#$persistenceId, #$maxSequenceNumber, #$maxOrdering, #$minOrdering)
113113
VALUES (NEW.#$jPersistenceId, NEW.#$sequenceNumber, NEW.#$ordering, NEW.#$ordering)
114-
ON CONFLICT (#$id, #$persistenceId) DO UPDATE
114+
ON CONFLICT (#$persistenceId) DO UPDATE
115115
SET
116116
#$maxSequenceNumber = NEW.#$sequenceNumber,
117117
#$maxOrdering = NEW.#$ordering,

scripts/migration-0.6.0/1-create-journal-persistence-ids-table.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ DECLARE
99
jpi_max_sequence_number_column CONSTANT TEXT := 'max_sequence_number';
1010
jpi_max_ordering_column CONSTANT TEXT := 'max_ordering';
1111
jpi_min_ordering_column CONSTANT TEXT := 'min_ordering';
12-
jpi_partitions_table_name_perfix CONSTANT TEXT := 'journal_persistence_ids_';
12+
jpi_partitions_table_name_prefix CONSTANT TEXT := 'journal_persistence_ids_';
1313
jpi_partitions_number CONSTANT INTEGER := 10;
1414

1515
-- variables
@@ -25,13 +25,13 @@ BEGIN
2525
jpi_max_sequence_number_column || ' BIGINT NOT NULL, ' ||
2626
jpi_max_ordering_column || ' BIGINT NOT NULL, ' ||
2727
jpi_min_ordering_column || ' BIGINT NOT NULL, ' ||
28-
'PRIMARY KEY (' || jpi_id_column || ', ' || jpi_persistence_id_column || ')' ||
29-
') PARTITION BY HASH(' || jpi_id_column || ')';
28+
'PRIMARY KEY (' || jpi_persistence_id_column || ')' ||
29+
') PARTITION BY HASH(' || jpi_persistence_id_column || ')';
3030

3131
EXECUTE sql;
3232

3333
FOR i IN 0..(jpi_partitions_number - 1) LOOP
34-
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || jpi_partitions_table_name_perfix || i ||
34+
EXECUTE 'CREATE TABLE IF NOT EXISTS ' || jpi_partitions_table_name_prefix || i ||
3535
' PARTITION OF ' || jpi_table ||
3636
' FOR VALUES WITH (MODULUS ' || jpi_partitions_number || ', REMAINDER ' || i || ')';
3737
END LOOP;

scripts/migration-0.6.0/2-create-function-update-journal-persistence-ids.sql

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ DECLARE
99
j_sequence_number_column CONSTANT TEXT := 'sequence_number';
1010
j_ordering_column CONSTANT TEXT := 'ordering';
1111
jpi_table_name CONSTANT TEXT := 'journal_persistence_ids';
12-
jpi_id_column CONSTANT TEXT := 'id';
1312
jpi_persistence_id_column CONSTANT TEXT := 'persistence_id';
1413
jpi_max_sequence_number_column CONSTANT TEXT := 'max_sequence_number';
1514
jpi_max_ordering_column CONSTANT TEXT := 'max_ordering';
@@ -32,7 +31,7 @@ BEGIN
3231
jpi_min_ordering_column || ' = LEAST(' || jpi_table || '.' || jpi_min_ordering_column || ', ($1).' || j_ordering_column || ')';
3332

3433
sql := 'INSERT INTO ' || jpi_table || ' (' || cols || ') VALUES (' || vals || ') ' ||
35-
'ON CONFLICT (' || jpi_id_column || ', ' || jpi_persistence_id_column || ') DO UPDATE SET ' || upds;
34+
'ON CONFLICT (' || jpi_persistence_id_column || ') DO UPDATE SET ' || upds;
3635

3736
EXECUTE sql USING NEW;
3837
RETURN NEW;

0 commit comments

Comments
 (0)