Skip to content

Commit 9f5ab43

Browse files
committed
storage/roflmarket: Fix roflmarket table constrains
1 parent 81e32f1 commit 9f5ab43

File tree

5 files changed

+49
-11
lines changed

5 files changed

+49
-11
lines changed

.changelog/1063.bugfix.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
storage/roflmarket: Fix roflmarket tables constrains

analyzer/queries/queries.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1451,9 +1451,8 @@ var (
14511451
RuntimeRoflmarketOfferUpsert = `
14521452
INSERT INTO chain.roflmarket_offers (runtime, id, provider, resources, payment, capacity, metadata)
14531453
VALUES ($1, $2, $3, $4, $5, $6, $7)
1454-
ON CONFLICT (runtime, id) DO UPDATE
1454+
ON CONFLICT (runtime, provider, id) DO UPDATE
14551455
SET
1456-
provider = excluded.provider,
14571456
resources = excluded.resources,
14581457
payment = excluded.payment,
14591458
capacity = excluded.capacity,
@@ -1462,9 +1461,8 @@ var (
14621461
RuntimeRoflmarketInstanceUpsert = `
14631462
INSERT INTO chain.roflmarket_instances (runtime, id, provider, offer_id, status, creator, admin, node_id, metadata, resources, deployment, created_at, updated_at, paid_from, paid_until, payment, payment_address, refund_data, cmd_next_id, cmd_count, cmds)
14641463
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21)
1465-
ON CONFLICT (runtime, id) DO UPDATE
1464+
ON CONFLICT (runtime, provider, id) DO UPDATE
14661465
SET
1467-
provider = excluded.provider,
14681466
offer_id = excluded.offer_id,
14691467
status = excluded.status,
14701468
creator = excluded.creator,
@@ -1513,13 +1511,15 @@ var (
15131511
removed = TRUE
15141512
WHERE
15151513
runtime = $1 AND
1516-
id = $2`
1514+
provider = $2 AND
1515+
id = $3`
15171516

15181517
RuntimeRoflmarketInstanceRemoved = `
15191518
UPDATE chain.roflmarket_instances
15201519
SET
15211520
removed = TRUE
15221521
WHERE
15231522
runtime = $1 AND
1524-
id = $2`
1523+
provider = $2 AND
1524+
id = $3`
15251525
)

analyzer/roflmarket/roflmarket.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ func (p *processor) queueRoflmarketOffersRefresh(ctx context.Context, batch *sto
206206
batch.Queue(
207207
queries.RuntimeRoflmarketOfferRemoved,
208208
p.runtime,
209+
providerAddress.String(),
209210
offerID,
210211
)
211212
}
@@ -287,6 +288,7 @@ func (p *processor) queueRoflmarketInstancesRefresh(ctx context.Context, batch *
287288
batch.Queue(
288289
queries.RuntimeRoflmarketInstanceRemoved,
289290
p.runtime,
291+
providerAddress.String(),
290292
instanceID,
291293
)
292294
}

storage/migrations/25_runtime_roflmarket.up.sql

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ CREATE TABLE chain.roflmarket_providers (
4040
CREATE TABLE chain.roflmarket_offers (
4141
runtime runtime NOT NULL,
4242
id BYTEA NOT NULL,
43-
PRIMARY KEY (runtime, id),
43+
PRIMARY KEY (runtime, id), -- Removed in 40_runtime_roflmarket_constraints_fix.up.sql.
44+
-- PRIMARY KEY (runtime, provider, id), -- Added in 40_runtime_roflmarket_constraints_fix.up.sql.
4445

4546
provider oasis_addr NOT NULL,
4647
FOREIGN KEY (runtime, provider) REFERENCES chain.roflmarket_providers(runtime, address) DEFERRABLE INITIALLY DEFERRED,
@@ -52,18 +53,20 @@ CREATE TABLE chain.roflmarket_offers (
5253

5354
removed BOOLEAN NOT NULL DEFAULT FALSE
5455
);
55-
CREATE INDEX ix_roflmarket_offers_provider ON chain.roflmarket_offers (runtime, provider);
56+
CREATE INDEX ix_roflmarket_offers_provider ON chain.roflmarket_offers (runtime, provider); -- Removed in 40_runtime_roflmarket_constraints_fix.up.sql.
5657

5758
CREATE TABLE chain.roflmarket_instances (
5859
runtime runtime NOT NULL,
5960
id BYTEA NOT NULL,
60-
PRIMARY KEY (runtime, id),
61+
PRIMARY KEY (runtime, id), -- Removed in 40_runtime_roflmarket_constraints_fix.up.sql.
62+
-- PRIMARY KEY (runtime, provider, id), -- Added in 40_runtime_roflmarket_constraints_fix.up.sql.
6163

6264
provider oasis_addr NOT NULL,
6365
FOREIGN KEY (runtime, provider) REFERENCES chain.roflmarket_providers(runtime, address) DEFERRABLE INITIALLY DEFERRED,
6466

6567
offer_id BYTEA NOT NULL,
66-
FOREIGN KEY (runtime, offer_id) REFERENCES chain.roflmarket_offers(runtime, id) DEFERRABLE INITIALLY DEFERRED,
68+
FOREIGN KEY (runtime, offer_id) REFERENCES chain.roflmarket_offers(runtime, id) DEFERRABLE INITIALLY DEFERRED, -- Removed in 40_runtime_roflmarket_constraints_fix.up.sql.
69+
-- FOREIGN KEY (runtime, provider, offer_id) REFERENCES chain.roflmarket_offers(runtime, provider, id) DEFERRABLE INITIALLY DEFERRED, -- Added in 40_runtime_roflmarket_constraints_fix.up.sql.
6770

6871
status SMALLINT CHECK (status >= 0 AND status <= 255),
6972
creator oasis_addr,
@@ -88,7 +91,7 @@ CREATE TABLE chain.roflmarket_instances (
8891

8992
removed BOOLEAN NOT NULL DEFAULT FALSE
9093
);
91-
CREATE INDEX ix_roflmarket_instances_provider ON chain.roflmarket_instances (runtime, provider);
94+
CREATE INDEX ix_roflmarket_instances_provider ON chain.roflmarket_instances (runtime, provider); -- Removed in 40_runtime_roflmarket_constraints_fix.up.sql.
9295
-- CREATE INDEX ix_roflmarket_instances_admin ON chain.roflmarket_instances (runtime, admin); -- Added in 38_runtime_roflmarket_instances_admin.up.sql.
9396

9497
-- Grant others read-only use.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
BEGIN;
2+
3+
-- Drop existing invalid FKs on roflmarket_instances.
4+
ALTER TABLE chain.roflmarket_instances
5+
DROP CONSTRAINT roflmarket_instances_runtime_offer_id_fkey;
6+
7+
-- Drop existing invalid PKs on roflmarket_offers and roflmarket_instances.
8+
ALTER TABLE chain.roflmarket_offers
9+
DROP CONSTRAINT roflmarket_offers_pkey;
10+
11+
ALTER TABLE chain.roflmarket_instances
12+
DROP CONSTRAINT roflmarket_instances_pkey;
13+
14+
-- Add new PKs with provider included.
15+
ALTER TABLE chain.roflmarket_offers
16+
ADD PRIMARY KEY (runtime, provider, id);
17+
18+
ALTER TABLE chain.roflmarket_instances
19+
ADD PRIMARY KEY (runtime, provider, id);
20+
21+
-- Add new FKs with provider included.
22+
ALTER TABLE chain.roflmarket_instances
23+
ADD CONSTRAINT roflmarket_instances_runtime_provider_offer_id_fkey
24+
FOREIGN KEY (runtime, provider, offer_id)
25+
REFERENCES chain.roflmarket_offers(runtime, provider, id)
26+
DEFERRABLE INITIALLY DEFERRED;
27+
28+
-- Drop unneded index with the new PKs.
29+
DROP INDEX IF EXISTS chain.ix_roflmarket_offers_provider;
30+
DROP INDEX IF EXISTS chain.ix_roflmarket_instances_provider;
31+
32+
COMMIT;

0 commit comments

Comments
 (0)