Как создать_reference_table из другой БД (не postgres)? - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь создать новую базу данных, когда таблицы в ней, а затем сделать их распределенными, но не могу использовать create_reference_table () в новой базе данных (она не найдена). Если я попытаюсь запустить create_reference_table ('newbie.schema.new_table), я получу сообщение об ошибке "ОШИБКА: ссылки на разные базы данных не реализованы":

CREATE DATABASE newbie;
SELECT * from master_add_node('citus-worker1', 5432);
SELECT * from master_add_node('citus-worker2', 5432);
SELECT run_command_on_workers('CREATE DATABASE newbie;');

\c newbie

create table new_table
SELECT create_reference_table('schema.new_table');

приводит к ОШИБКА: функция create_reference_table (unknown) не существует выглядит как замкнутый круг (

1 Ответ

0 голосов
/ 15 марта 2019

Вам необходимо запустить CREATE EXTENSION Citus для всех баз данных отдельно (если вы, конечно, хотите распределить несколько таблиц в этих базах данных). Citus хранит метаданные распределенного объекта в соответствующей базе данных.

Эти шаги должны работать:

\c newbie
CREATE EXTENSION Citus;
CREATE SCHEMA s;
CREATE TABLE s.new_table(id int);
SELECT create_reference_table('s.new_table');

Если вы запускаете CREATE DATABASE ... при включенном расширении Citus, вы можете увидеть сообщения справки:

postgres=# create database new_db;
NOTICE:  Citus partially supports CREATE DATABASE for distributed databases
DETAIL:  Citus does not propagate CREATE DATABASE command to workers
HINT:  You can manually create a database and its extensions on workers.

Также не забудьте запустить master_add_node(), чтобы добавить рабочие узлы в новую базу данных. Рабочие метаданные также хранятся в связанной базе данных.

...