首页 > 解决方案 > pglogical.replicate_ddl_command 报价处理

问题描述

提供者在 OEL 7 postgres 12.4 上,订阅者在 RDS 13.2 上

只要命令的开头和结尾之间没有引号,pglogical.replicate_ddl_command 就可以正常工作。例如,下面工作正常

select pglogical.replicate_ddl_command('create table public.foo ( like public.orders including all)','{default}'::text[]);

设置事件触发器以将此新创建的表添加到默认的 replication_set。

接下来,我们需要将表 foo 作为分区附加到表 order 中,这就是 FOR VALUES 中的引号成为问题的地方。

select pglogical.replicate_ddl_command('Alter table public.orders attach partition public.foo for values from ('2021-05-01') TO ('2021-06-01')','{default}'::text[]);
ERROR:  syntax error at or near "2021"
LINE 1: ...ers attach partition public.foo for values from ('2021-05-01...
 
                                                          ^

在与此相关的文档中找不到任何内容。请帮忙。

标签: postgresqlpglogical

解决方案


虽然我能够通过使用双引号来避免错误'',因为command函数上的参数是文本,ATTACH PARTITION但没有复制。虽然这与我在这个问题中提出的问题不同,但感谢任何反馈和想法。

将此笔记留给遇到我情况的其他人。要求是您需要将父分区及其所有分区添加到同一复制集。就我而言,我添加了所有分区,但没有添加父分区。


推荐阅读