Re: timetravel.c - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: timetravel.c
Date
Msg-id 200309111723.h8BHNEH22129@candle.pha.pa.us
Whole thread Raw
In response to Re: timetravel.c  (Böjthe Zoltán <zbojthe@arcinfo.hu>)
List pgsql-patches
I had to modify your patch sligthly to fit more recent code
changes --- updated version attached and applied.

---------------------------------------------------------------------------

B�jthe Zolt�n wrote:
> Bruce Momjian ?rta:
>
> >Patch applied.  Thanks.
> >
> >---------------------------------------------------------------------------
> >
> >
> Hi!
>
> on my timetravel.c I find a bug: after the
> ALTER TABLE mytable drop column last_column_of_table;
>
> the timetravel trigger say on UPDATE/DELETE:
>
> ERROR:  parser: parse error at end of input
>
>
> Here is the patch for this bug
>
> B?jthe Zolt?n

> --- timetravel.c.prev    2003-06-27 19:56:40.000000000 +0200
> +++ timetravel.c    2003-09-02 14:53:21.000000000 +0200
> @@ -306,7 +306,7 @@
>          void    *pplan;
>          Oid    *ctypes;
>          char    sql[8192];
> -        int    j;
> +        char    separ=' ';
>
>          /* allocate ctypes for preparation */
>          ctypes = (Oid *) palloc(natts * sizeof(Oid));
> @@ -319,11 +319,12 @@
>          {
>              ctypes[i - 1] = SPI_gettypeid(tupdesc, i);
>              if(!(tupdesc->attrs[i - 1]->attisdropped))    /* skip dropped columns */
> -                snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d%s",
> -                    i, (i < natts) ? ", " : ")" );
> -//                snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d /* %d */ %s",
> -//                    i, ctypes[i-1], (i < natts) ? ", " : ")" );
> +            {
> +                snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "%c$%d", separ,i);
> +                separ = ',';
> +            }
>          }
> +        snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), ")");
>
>  //        elog(NOTICE, "timetravel (%s) update: sql: %s", relname, sql);
>

>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: contrib/spi/timetravel.c
===================================================================
RCS file: /cvsroot/pgsql-server/contrib/spi/timetravel.c,v
retrieving revision 1.18
diff -c -c -r1.18 timetravel.c
*** contrib/spi/timetravel.c    4 Aug 2003 00:43:11 -0000    1.18
--- contrib/spi/timetravel.c    11 Sep 2003 17:20:08 -0000
***************
*** 309,314 ****
--- 309,315 ----
          void       *pplan;
          Oid           *ctypes;
          char        sql[8192];
+         char        separ=' ';

          /* allocate ctypes for preparation */
          ctypes = (Oid *) palloc(natts * sizeof(Oid));
***************
*** 321,333 ****
          {
              ctypes[i - 1] = SPI_gettypeid(tupdesc, i);
              if (!(tupdesc->attrs[i - 1]->attisdropped)) /* skip dropped columns */
!                 snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d%s",
!                          i, (i < natts) ? ", " : ")");
! #if 0
!             snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "$%d /* %d */ %s",
!                      i, ctypes[i - 1], (i < natts) ? ", " : ")");
! #endif
          }

          elog(DEBUG4, "timetravel (%s) update: sql: %s", relname, sql);

--- 322,333 ----
          {
              ctypes[i - 1] = SPI_gettypeid(tupdesc, i);
              if (!(tupdesc->attrs[i - 1]->attisdropped)) /* skip dropped columns */
!             {
!                 snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), "%c$%d", separ,i);
!                 separ = ',';
!             }
          }
+         snprintf(sql + strlen(sql), sizeof(sql) - strlen(sql), ")");

          elog(DEBUG4, "timetravel (%s) update: sql: %s", relname, sql);


pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] New array functions
Next
From: Bruce Momjian
Date:
Subject: Re: Tiny doc improvement