Skip to content

Commit 11d25cd

Browse files
Using numeric(20,0) for chain_selector and blocks in ccv_chain_statuses (#21303)
DB migration fix
1 parent eee7208 commit 11d25cd

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
-- +goose Up
2+
-- Change chain_selector and finalized_block_height from TEXT to NUMERIC(20, 0)
3+
-- These columns store uint64 values which fit within NUMERIC(20, 0)
4+
5+
-- Drop the primary key constraint temporarily since chain_selector is part of it
6+
ALTER TABLE ccv_chain_statuses DROP CONSTRAINT ccv_chain_statuses_pkey;
7+
8+
-- Change column types
9+
-- The USING clause will cast existing TEXT values to NUMERIC
10+
-- Since the code stores numeric strings (e.g., "123456"), the cast will work correctly
11+
ALTER TABLE ccv_chain_statuses ALTER COLUMN chain_selector TYPE NUMERIC(20, 0) USING chain_selector::NUMERIC(20, 0);
12+
ALTER TABLE ccv_chain_statuses ALTER COLUMN finalized_block_height TYPE NUMERIC(20, 0) USING finalized_block_height::NUMERIC(20, 0);
13+
14+
-- Recreate the primary key constraint
15+
ALTER TABLE ccv_chain_statuses ADD PRIMARY KEY (chain_selector, verifier_id);
16+
17+
-- +goose Down
18+
-- Revert back to TEXT type
19+
ALTER TABLE ccv_chain_statuses DROP CONSTRAINT ccv_chain_statuses_pkey;
20+
ALTER TABLE ccv_chain_statuses ALTER COLUMN chain_selector TYPE TEXT USING chain_selector::TEXT;
21+
ALTER TABLE ccv_chain_statuses ALTER COLUMN finalized_block_height TYPE TEXT USING finalized_block_height::TEXT;
22+
ALTER TABLE ccv_chain_statuses ADD PRIMARY KEY (chain_selector, verifier_id);
23+

0 commit comments

Comments
 (0)