Re: Pluggable Storage - Andres's take - Mailing list pgsql-hackers

From Andres Freund
Subject Re: Pluggable Storage - Andres's take
Date
Msg-id 20190112004440.u6xbdpesetwjohxh@alap3.anarazel.de
Whole thread Raw
In response to Re: Pluggable Storage - Andres's take  (Dmitry Dolgov <9erthalion6@gmail.com>)
Responses Re: Pluggable Storage - Andres's take  (Dmitry Dolgov <9erthalion6@gmail.com>)
List pgsql-hackers
Hi,

On 2019-01-12 01:35:06 +0100, Dmitry Dolgov wrote:
> > On Sat, Dec 15, 2018 at 8:37 PM Andres Freund <andres@anarazel.de> wrote:
> >
> > We need to dump the table access method at dump time, otherwise we loose
> > that information.
> 
> As a result of the discussion in [1] (btw, thanks for starting it), here is
> proposed solution with tracking current default_table_access_method. Next I'll
> tackle similar issue for psql and probably add some tests for both patches.

Thanks!

> +/*
> + * Set the proper default_table_access_method value for the table.
> + */
> +static void
> +_selectTableAccessMethod(ArchiveHandle *AH, const char *tableam)
> +{
> +    PQExpBuffer cmd = createPQExpBuffer();
> +    const char *want, *have;
> +
> +    have = AH->currTableAm;
> +    want = tableam;
> +
> +    if (!want)
> +        return;
> +
> +    if (have && strcmp(want, have) == 0)
> +        return;
> +
> +
> +    appendPQExpBuffer(cmd, "SET default_table_access_method = %s;", tableam);

This needs escaping, at the very least with "", but better with proper
routines for dealing with identifiers.



> @@ -5914,7 +5922,7 @@ getTables(Archive *fout, int *numTables)
>                            "tc.relfrozenxid AS tfrozenxid, "
>                            "tc.relminmxid AS tminmxid, "
>                            "c.relpersistence, c.relispopulated, "
> -                          "c.relreplident, c.relpages, "
> +                          "c.relreplident, c.relpages, am.amname AS amname, "

That AS doesn't do anything, does it?


>          /* other fields were zeroed above */
>  
> @@ -9355,7 +9370,7 @@ dumpComment(Archive *fout, const char *type, const char *name,
>           * post-data.
>           */
>          ArchiveEntry(fout, nilCatalogId, createDumpId(),
> -                     tag->data, namespace, NULL, owner,
> +                     tag->data, namespace, NULL, owner, NULL,
>                       "COMMENT", SECTION_NONE,
>                       query->data, "", NULL,
>                       &(dumpId), 1,

We really ought to move the arguments to a struct, so we don't generate
quite as much useless diffs whenever we do a change around one of
these...

Greetings,

Andres Freund


pgsql-hackers by date:

Previous
From: Donald Dong
Date:
Subject: Re: Unified logging system for command-line programs
Next
From: Andres Freund
Date:
Subject: Re: Remove all "INTERFACE ROUTINES" style comments