> @@ -5963,8 +5967,20 @@ describePublications(const char *pattern) > { > /* Get the tables for the specified publication */ > printfPQExpBuffer(&buf, > - "SELECT n.nspname, > c.relname\n" > - "FROM > pg_catalog.pg_class c,\n" > + "SELECT n.nspname, > c.relname, \n"); > + if (pset.sversion >= 150000) > + appendPQExpBufferStr(&buf, > + " > CASE WHEN pr.prattrs IS NOT NULL THEN\n" > + " > pg_catalog.array_to_string" > + > "(ARRAY(SELECT attname\n" > + " > FROM pg_catalog.generate_series(0, > pg_catalog.array_upper(pr.prattrs::int[], 1)) s,\n" > + " > pg_catalog.pg_attribute\n" > + " > WHERE attrelid = c.oid AND attnum = prattrs[s]), ', ')\n" > + " > ELSE NULL END AS columns"); > + else > + appendPQExpBufferStr(&buf, "NULL as columns"); > + appendPQExpBuffer(&buf, > + "\nFROM > pg_catalog.pg_class c,\n" > " > pg_catalog.pg_namespace n,\n" > " > pg_catalog.pg_publication_rel pr\n" > "WHERE c.relnamespace > = n.oid\n"
I suppose this should use pr.prattrs::pg_catalog.int2[] ? Did the DatumGetBool issue expose a deficiency in testing ? I think the !am_partition path was never being hit. -- Justin