Re: reloptions with a "namespace" - Mailing list pgsql-hackers

From Euler Taveira de Oliveira
Subject Re: reloptions with a "namespace"
Date
Msg-id 4983D7ED.6070807@timbira.com
Whole thread Raw
In response to Re: reloptions with a "namespace"  (Euler Taveira de Oliveira <euler@timbira.com>)
List pgsql-hackers
Euler Taveira de Oliveira escreveu:

[Forgot the first patch...]

> Alvaro Herrera escreveu:
>> New patch attached, with pg_dump support (thanks to Tom for the SQL
>> heads-up).
>>
> Great! We're close. Just two minor gripes:
>
> +     char       *validnsps[] = { "toast" };
>
> Surely, you forgot to add a NULL at the end. Patch is attached.
>
> IIRC, my last patch includes a partial validation code for RESET cases. For
> example, the last SQL will not be atomic (invalid reloption silently ignored).
> So, why not apply the namespace validation code to RESET case too? Patch is
> attached too. It does not handle the reloptions validation because the relOpts
> initialization code is at parseRelOptions(); i leave it for a future refactor.
>
> euler=# create table foo (a text) with (fillfactor=10);
> CREATE TABLE
> euler=# \d+ foo
>                  Tabela "public.foo"
>  Coluna | Tipo | Modificadores | Storage  | Descrição
> --------+------+---------------+----------+-----------
>  a      | text |               | extended |
> Têm OIDs: não
> Options: fillfactor=10
>
> euler=# alter table foo reset (fillfactor,foo.fillfactor);
> ALTER TABLE
> euler=# \d+ foo
>                  Tabela "public.foo"
>  Coluna | Tipo | Modificadores | Storage  | Descrição
> --------+------+---------------+----------+-----------
>  a      | text |               | extended |
> Têm OIDs: não
>
>
>
>
> ------------------------------------------------------------------------
>
>


--
  Euler Taveira de Oliveira
  http://www.timbira.com/
diff -cr pgsql.alvaro/src/backend/commands/tablecmds.c pgsql.euler/src/backend/commands/tablecmds.c
*** pgsql.alvaro/src/backend/commands/tablecmds.c    2009-01-31 02:01:22.000000000 -0200
--- pgsql.euler/src/backend/commands/tablecmds.c    2009-01-31 01:47:32.000000000 -0200
***************
*** 351,357 ****
      Datum        reloptions;
      ListCell   *listptr;
      AttrNumber    attnum;
!     char       *validnsps[] = { "toast" };

      /*
       * Truncate relname to appropriate length (probably a waste of time, as
--- 351,357 ----
      Datum        reloptions;
      ListCell   *listptr;
      AttrNumber    attnum;
!     static char       *validnsps[] = { "toast", NULL };

      /*
       * Truncate relname to appropriate length (probably a waste of time, as
***************
*** 6459,6465 ****
      Datum        repl_val[Natts_pg_class];
      bool        repl_null[Natts_pg_class];
      bool        repl_repl[Natts_pg_class];
!     char       *validnsps[] = { "toast" };

      if (defList == NIL)
          return;                    /* nothing to do */
--- 6459,6465 ----
      Datum        repl_val[Natts_pg_class];
      bool        repl_null[Natts_pg_class];
      bool        repl_repl[Natts_pg_class];
!     static char       *validnsps[] = { "toast", NULL };

      if (defList == NIL)
          return;                    /* nothing to do */
diff -cr pgsql.alvaro/src/backend/executor/execMain.c pgsql.euler/src/backend/executor/execMain.c
*** pgsql.alvaro/src/backend/executor/execMain.c    2009-01-31 02:01:22.000000000 -0200
--- pgsql.euler/src/backend/executor/execMain.c    2009-01-31 01:48:19.000000000 -0200
***************
*** 2832,2838 ****
      Oid            intoRelationId;
      TupleDesc    tupdesc;
      DR_intorel *myState;
!     char       *validnsps[] = { "toast" };

      Assert(into);

--- 2832,2838 ----
      Oid            intoRelationId;
      TupleDesc    tupdesc;
      DR_intorel *myState;
!     static char       *validnsps[] = { "toast", NULL };

      Assert(into);

Somente em pgsql.euler/src/backend/parser: gram.c
Somente em pgsql.euler/src/backend/parser: gram.h
Somente em pgsql.euler/src/backend/parser: scan.c
diff -cr pgsql.alvaro/src/backend/tcop/utility.c pgsql.euler/src/backend/tcop/utility.c
*** pgsql.alvaro/src/backend/tcop/utility.c    2009-01-31 02:01:22.000000000 -0200
--- pgsql.euler/src/backend/tcop/utility.c    2009-01-31 01:47:51.000000000 -0200
***************
*** 424,430 ****
                      if (IsA(stmt, CreateStmt))
                      {
                          Datum    toast_options;
!                         char   *validnsps[] = { "toast" };

                          /* Create the table itself */
                          relOid = DefineRelation((CreateStmt *) stmt,
--- 424,430 ----
                      if (IsA(stmt, CreateStmt))
                      {
                          Datum    toast_options;
!                         static char   *validnsps[] = { "toast", NULL };

                          /* Create the table itself */
                          relOid = DefineRelation((CreateStmt *) stmt,

pgsql-hackers by date:

Previous
From: Euler Taveira de Oliveira
Date:
Subject: Re: reloptions with a "namespace"
Next
From: KaiGai Kohei
Date:
Subject: Re: How to get SE-PostgreSQL acceptable