s=# alter subscription s1 set publication skip refresh ; NOTICE: removed subscription for table public.t NOTICE: removed subscription for table public.t1 ALTER SUBSCRIPTION s=#
That's a design flaw. Since SKIP is not a reserved word, parser consider it as a publication name. Instead of causing an error, it executes another command (REFRESH) that is the opposite someone expects. Also, as "skip" is not a publication name, it removes all tables in the subscription.
ALTER SUBSCRIPTION name SET PUBLICATION publication_name_list SKIP REFRESH ALTER SUBSCRIPTION name SET PUBLICATION publication_name_list REFRESH opt_definition
I think the first command was a bad design. Why don't we transform SKIP REFRESH into a REFRESH option?
ALTER SUBSCRIPTION sub1 SET PUBLICATION pub1 REFRESH WITH (skip = true);
skip (boolean): specifies that the command will not try to refresh table information. The default is false.