22 lines
695 B
MySQL
22 lines
695 B
MySQL
|
|
CREATE ROLE electric_sync WITH LOGIN REPLICATION;
|
||
|
|
|
||
|
|
GRANT CONNECT ON DATABASE remote TO electric_sync;
|
||
|
|
GRANT USAGE ON SCHEMA public TO electric_sync;
|
||
|
|
|
||
|
|
CREATE PUBLICATION electric_publication_default;
|
||
|
|
|
||
|
|
CREATE OR REPLACE FUNCTION electric_sync_table(p_schema text, p_table text)
|
||
|
|
RETURNS void
|
||
|
|
LANGUAGE plpgsql
|
||
|
|
AS $$
|
||
|
|
DECLARE
|
||
|
|
qualified text := format('%I.%I', p_schema, p_table);
|
||
|
|
BEGIN
|
||
|
|
EXECUTE format('ALTER TABLE %s REPLICA IDENTITY FULL', qualified);
|
||
|
|
EXECUTE format('GRANT SELECT ON TABLE %s TO electric_sync', qualified);
|
||
|
|
EXECUTE format('ALTER PUBLICATION %I ADD TABLE %s', 'electric_publication_default', qualified);
|
||
|
|
END;
|
||
|
|
$$;
|
||
|
|
|
||
|
|
SELECT electric_sync_table('public', 'shared_tasks');
|