On Wed, Mar 18, 2020 at 12:06 PM Amit Langote <amitlangot...@gmail.com> wrote:
> Hi Peter,
>
> On Mon, Mar 16, 2020 at 9:49 PM Peter Eisentraut
> <peter.eisentr...@2ndquadrant.com> wrote:
> >
> > I was trying to extract some preparatory work from the remaining patches
> > and came up with the attached.  This is part of your patch 0003, but
> > also relevant for part 0004.  The problem was that COPY (SELECT *) is
> > not sufficient when the table has generated columns, so we need to build
> > the column list explicitly.
> >
> > Thoughts?
>
> Thank you for that.
>
> +   if (isnull || !remote_is_publishable)
> +       ereport(ERROR,
> +               (errmsg("table \"%s.%s\" on the publisher is not publishable",
> +                       nspname, relname)));
>
> Maybe add a one-line comment above this to say it's an "not supposed
> to happen" error or am I missing something?  Wouldn't elog() suffice
> for this?
>
> Other than that, looks good.

Wait, the following Assert in copy_table() should now be gone:

    Assert(relmapentry->localrel->rd_rel->relkind == RELKIND_RELATION);

because just below it:

    /* Start copy on the publisher. */
    initStringInfo(&cmd);
-   appendStringInfo(&cmd, "COPY %s TO STDOUT",
-                    quote_qualified_identifier(lrel.nspname, lrel.relname));
+   if (lrel.relkind == RELKIND_RELATION)
+       appendStringInfo(&cmd, "COPY %s TO STDOUT",
+                        quote_qualified_identifier(lrel.nspname,
lrel.relname));
+   else
+   {
+       /*
+        * For non-tables, we need to do COPY (SELECT ...), but we can't just
+        * do SELECT * because we need to not copy generated columns.
+        */

By the way, I have rebased the patches, although maybe you've got your
own copies; attached.

-- 
Thank you,
Amit

Attachment: v12-0003-Add-subscription-support-to-replicate-into-parti.patch
Description: Binary data

Attachment: v12-0002-Some-refactoring-of-logical-worker.c.patch
Description: Binary data

Attachment: v12-0004-Publish-partitioned-table-inserts-as-its-own.patch
Description: Binary data

Reply via email to