Posso alimentar algum SQL que crie uma visão para o Slony?
Eu tenho algum SQL que faz CREATE OR REPLACE VIEW name_of_view
e assim por diante, passa para slonik_execute_script
e, em seguida, tenta executar slonik_create_set
um conjunto Slony temporário contendo apenas essa exibição.
Eu sou rejeitado com ERROR: Slony-I: table "public"."name_of_view" has no primary key
erro. Que eu saiba, as exibições não oferecem suporte a chaves primárias.
Isso significa que não há como, usando os scripts de administração do Slony, adicionar uma exibição à replicação e que devo apenas instalá-la manualmente em todos os membros do meu cluster de replicação?
Slony é baseado em gatilho. Como você não pode ter gatilhos em visualizações, não pode usar o Slony para replicar visualizações.
No entanto, você pode obter o efeito desejado usando o Slony para replicar as tabelas usadas por suas exibições e duplicar as definições de exibição em seus servidores escravos.
De acordo com os documentos, apenas tabelas comuns são suportadas:
http://slony.info/documentation/stmtsetaddtable.html
Há uma verificação no código para aplicar este http://slony.info/documentation/function.setaddtable-int-integer-integer-text-name-text.html .
A mensagem de erro que você recebe parece correta, pois suponho que você não especificou nenhuma chave primária ou exclusiva em slon_tools.conf para a exibição. Mas e se você realmente especificar uma chave primária ou única - que deve ser uma coluna retornada pela exibição? Então, eu esperaria que slonik_create_set passasse na verificação de chave primária/exclusiva e, em vez disso, falhasse com o erro:
Esses são meus 2 centavos.