Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 11b3cf6

Browse files
committed
Update rules for shared tables in alter_table function
1 parent 8db5be4 commit 11b3cf6

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

pg_shardman--1.0.sql

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,7 +1438,9 @@ DECLARE
14381438
repl shardman.replicas;
14391439
create_table text;
14401440
create_rules text;
1441+
rules text = '';
14411442
alters text = '';
1443+
node_id int;
14421444
BEGIN
14431445
IF shardman.redirect_to_shardlord(format('alter_table(%L,%L)', rel_name, alter_clause))
14441446
THEN
@@ -1452,6 +1454,12 @@ BEGIN
14521454
IF t.master_node IS NOT NULL
14531455
THEN
14541456
SELECT shardman.gen_create_rules_sql(t.relation, format('%s_fdw', t.relation)) INTO create_rules;
1457+
FOR node_id IN SELECT * FROM shardman.nodes WHERE id<>t.master_node
1458+
LOOP
1459+
rules := format('%s{%s:%s}',
1460+
rules, node_id, create_rules);
1461+
END LOOP;
1462+
PERFORM shardman.broadcast(rules);
14551463
END IF;
14561464
UPDATE shardman.tables SET create_sql=create_table, create_rules_sql=create_rules WHERE relation=t.relation;
14571465

@@ -1493,9 +1501,9 @@ BEGIN
14931501
WHERE i.indrelid = rel_name::regclass
14941502
AND i.indisprimary;
14951503

1496-
RETURN format('CREATE RULE on_update AS ON UPDATE TO %I DO INSTEAD UPDATE %I SET (%s) = (%s) WHERE %s;
1497-
CREATE RULE on_insert AS ON INSERT TO %I DO INSTEAD INSERT INTO %I (%s) VALUES (%s);
1498-
CREATE RULE on_delete AS ON DELETE TO %I DO INSTEAD DELETE FROM %I WHERE %s;',
1504+
RETURN format('CREATE OR REPLACE RULE on_update AS ON UPDATE TO %I DO INSTEAD UPDATE %I SET (%s) = (%s) WHERE %s;
1505+
CREATE OR REPLACE RULE on_insert AS ON INSERT TO %I DO INSTEAD INSERT INTO %I (%s) VALUES (%s);
1506+
CREATE OR REPLACE RULE on_delete AS ON DELETE TO %I DO INSTEAD DELETE FROM %I WHERE %s;',
14991507
rel_name, fdw_name, dst, src, pk,
15001508
rel_name, fdw_name, dst, src,
15011509
rel_name, fdw_name, pk);

0 commit comments

Comments
 (0)