pgstattuple does not contain CHECK_FOR_INTERRUPTS()

Поиск
Список
Период
Сортировка
От Tatsuhito Kasahara
Тема pgstattuple does not contain CHECK_FOR_INTERRUPTS()
Дата
Msg-id 4BB5C3D1.3060104@oss.ntt.co.jp
обсуждение исходный текст
Ответы Re: pgstattuple does not contain CHECK_FOR_INTERRUPTS()
Список pgsql-hackers
Hi,

pgstattuple (and pgstatindex) does not contain CHECK_FOR_INTERRUPTS().
Therefore, we can not stop pgstattuple() by using the signal while a
large table is processed.

Here is the patch to solve it.

Best regards,

--
NTT OSS Center
Tatsuhito Kasahara
diff -cr pgsql/contrib/pgstattuple/pgstattuple.c pgsql_work/contrib/pgstattuple/pgstattuple.c
*** pgsql/contrib/pgstattuple/pgstattuple.c    2009-06-11 23:48:52.000000000 +0900
--- pgsql_work/contrib/pgstattuple/pgstattuple.c    2010-04-02 18:52:05.000000000 +0900
***************
*** 276,281 ****
--- 276,283 ----
      /* scan the relation */
      while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL)
      {
+         CHECK_FOR_INTERRUPTS();
+
          /* must hold a buffer lock to call HeapTupleSatisfiesVisibility */
          LockBuffer(scan->rs_cbuf, BUFFER_LOCK_SHARE);

***************
*** 302,307 ****
--- 304,311 ----

          while (block <= tupblock)
          {
+             CHECK_FOR_INTERRUPTS();
+
              buffer = ReadBuffer(rel, block);
              LockBuffer(buffer, BUFFER_LOCK_SHARE);
              stat.free_space += PageGetHeapFreeSpace((Page) BufferGetPage(buffer));
***************
*** 313,318 ****
--- 317,324 ----

      while (block < nblocks)
      {
+         CHECK_FOR_INTERRUPTS();
+
          buffer = ReadBuffer(rel, block);
          LockBuffer(buffer, BUFFER_LOCK_SHARE);
          stat.free_space += PageGetHeapFreeSpace((Page) BufferGetPage(buffer));
***************
*** 454,459 ****
--- 460,467 ----
      blkno = start;
      for (;;)
      {
+         CHECK_FOR_INTERRUPTS();
+
          /* Get the current relation length */
          LockRelationForExtension(rel, ExclusiveLock);
          nblocks = RelationGetNumberOfBlocks(rel);

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Compile fail, alpha5 & gcc 4.3.3 in elog.c
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: Compile fail, alpha5 & gcc 4.3.3 in elog.c