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,
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to