1. 02 12月, 2006 2 次提交
  2. 01 12月, 2006 2 次提交
    • T
      Minor adjustments to make failures in startup/shutdown behave more cleanly. · 5f60086e
      Tom Lane 提交于
      StartupXLOG and ShutdownXLOG no longer need to be critical sections, because
      in all contexts where they are invoked, elog(ERROR) would be translated to
      elog(FATAL) anyway.  (One change in bgwriter.c is needed to make this true:
      set ExitOnAnyError before trying to exit.  This is a good fix anyway since
      the existing code would have gone into an infinite loop on elog(ERROR) during
      shutdown.)  That avoids a misleading report of PANIC during semi-orderly
      failures.  Modify the postmaster to include the startup process in the set of
      processes that get SIGTERM when a fast shutdown is requested, and also fix it
      to not try to restart the bgwriter if the bgwriter fails while trying to write
      the shutdown checkpoint.  Net result is that "pg_ctl stop -m fast" does
      something reasonable for a system in warm standby mode, and so should Unix
      system shutdown (ie, universal SIGTERM).  Per gripe from Stephen Harris and
      some corner-case testing of my own.
      5f60086e
    • T
      Fix bug with page deletion. If inner page is removed and it tries to · ef148d6b
      Teodor Sigaev 提交于
      remove page on next level linked from next inner page, ginScanToDelete()
      wrongly sets parent page. Bug reveals when many item pointers from index
      was deleted ( several hundred thousands).
      
      Bug is discovered by hubert depesz lubaczewski <depesz@gmail.com>
      
      Suppose, we need rc2 before release...
      ef148d6b
  3. 29 11月, 2006 1 次提交
  4. 28 11月, 2006 2 次提交
  5. 27 11月, 2006 1 次提交
  6. 25 11月, 2006 3 次提交
    • B
      Revert (too late in beta): · 9b15b140
      Bruce Momjian 提交于
      Fix to_char() locale handling to honor LC_TIME, not LC_MESSAGES.
      
      Euler Taveira de Oliveira
      9b15b140
    • T
      Change pg_stat_all_tables and sister views to put the recently-added · 988a87a0
      Tom Lane 提交于
      vacuum/analyze timestamp columns at the end, rather than at a random
      spot in the middle as in the original patch.  This was deemed more usable
      as well as less likely to break existing application code.  initdb forced
      accordingly.  In passing, remove former kluge for initializing
      pg_stat_file()'s pg_proc entry --- bootstrap mode was fixed recently
      so that this can be done without any hacks, but I overlooked this usage.
      988a87a0
    • P
      Translation updates · 2c82df2a
      Peter Eisentraut 提交于
      2c82df2a
  7. 24 11月, 2006 2 次提交
  8. 23 11月, 2006 2 次提交
    • N
      Add a comment noting that heap_copytuple_with_tuple() results in a · 546d6848
      Neil Conway 提交于
      HeapTuple that is no longer allocated as a single palloc() block; if
      used carelessly, this might result in a subsequent memory leak after
      heap_freetuple().
      546d6848
    • T
      Several changes to reduce the probability of running out of memory during · 395249ec
      Tom Lane 提交于
      AbortTransaction, which would lead to recursion and eventual PANIC exit
      as illustrated in recent report from Jeff Davis.  First, in xact.c create
      a special dedicated memory context for AbortTransaction to run in.  This
      solves the problem as long as AbortTransaction doesn't need more than 32K
      (or whatever other size we create the context with).  But in corner cases
      it might.  Second, in trigger.c arrange to keep pending after-trigger event
      records in separate contexts that can be freed near the beginning of
      AbortTransaction, rather than having them persist until CleanupTransaction
      as before.  Third, in portalmem.c arrange to free executor state data
      earlier as well.  These two changes should result in backing off the
      out-of-memory condition before AbortTransaction needs any significant
      amount of memory, at least in typical cases such as memory overrun due
      to too many trigger events or too big an executor hash table.  And all
      the same for subtransaction abort too, of course.
      395249ec
  9. 22 11月, 2006 3 次提交
    • T
      Prevent intratransaction memory leak when a subtransaction is aborted · 7ec1c5a8
      Tom Lane 提交于
      in the middle of executing a SPI query.  This doesn't entirely fix the
      problem of memory leakage in plpgsql exception handling, but it should
      get rid of the lion's share of leakage.
      7ec1c5a8
    • T
      Suppress timezone (%Z) part of timestamp display when running on Windows, · 5fc2d7e4
      Tom Lane 提交于
      because on that platform strftime produces localized zone names in varying
      encodings.  Even though it's only in a comment, this can cause encoding
      errors when reloading the dump script.  Per suggestion from Andreas
      Seltenreich.  Also, suppress %Z on Windows in the %s escape of
      log_line_prefix ... not sure why this one is different from the other two,
      but it shouldn't be.
      5fc2d7e4
    • T
      On systems that have setsid(2) (which should be just about everything except · 3ad0728c
      Tom Lane 提交于
      Windows), arrange for each postmaster child process to be its own process
      group leader, and deliver signals SIGINT, SIGTERM, SIGQUIT to the whole
      process group not only the direct child process.  This provides saner behavior
      for archive and recovery scripts; in particular, it's possible to shut down a
      warm-standby recovery server using "pg_ctl stop -m immediate", since delivery
      of SIGQUIT to the startup subprocess will result in killing the waiting
      recovery_command.  Also, this makes Query Cancel and statement_timeout apply
      to scripts being run from backends via system().  (There is no support in the
      core backend for that, but it's widely done using untrusted PLs.)  Per gripe
      from Stephen Harris and subsequent discussion.
      3ad0728c
  10. 21 11月, 2006 2 次提交
    • T
      Change the default setting for log_min_error_statement to ERROR. Per · 414c7a53
      Tom Lane 提交于
      recent discussion in which majority opinion was that this is a more
      widely useful setting than the previous default of PANIC.
      414c7a53
    • T
      Adjust elog.c so that elog(FATAL) exits (including cases where ERROR is · e82d9e62
      Tom Lane 提交于
      promoted to FATAL) end in exit(1) not exit(0).  Then change the postmaster to
      allow exit(1) without a system-wide panic, but not for the startup subprocess
      or the bgwriter.  There were a couple of places that were using exit(1) to
      deliberately force a system-wide panic; adjust these to be exit(2) instead.
      This fixes the problem noted back in July that if the startup process exits
      with elog(ERROR), the postmaster would think everything is hunky-dory and
      proceed to start up.  Alternative solutions such as trying to run the entire
      startup process as a critical section seem less clean, primarily because of
      the fact that a fair amount of startup code is shared by all postmaster
      children in the EXEC_BACKEND case.  We'd need an ugly special case somewhere
      near the head of main.c to make it work if it's the child process's
      responsibility to determine what happens; and what's the point when the
      postmaster already treats different children differently?
      e82d9e62
  11. 20 11月, 2006 2 次提交
    • T
      When truncating a relation in-place (eg during VACUUM), do not try to unlink · 1a5c450f
      Tom Lane 提交于
      any no-longer-needed segments; just truncate them to zero bytes and leave
      the files in place for possible future re-use.  This avoids problems when
      the segments are re-used due to relation growth shortly after truncation.
      Before, the bgwriter, and possibly other backends, could still be holding
      open file references to the old segment files, and would write dirty blocks
      into those files where they'd disappear from the view of other processes.
      
      Back-patch as far as 8.0.  I believe the 7.x branches are not vulnerable,
      because they had no bgwriter, and "blind" writes by other backends would
      always be done via freshly-opened file references.
      1a5c450f
    • T
      Repair problems with hash indexes that span multiple segments: the hash code's · d68efb3f
      Tom Lane 提交于
      preference for filling pages out-of-order tends to confuse the sanity checks
      in md.c, as per report from Balazs Nagy in bug #2737.  The fix is to ensure
      that the smgr-level code always has the same idea of the logical EOF as the
      hash index code does, by using ReadBuffer(P_NEW) where we are adding a single
      page to the end of the index, and using smgrextend() to reserve a large batch
      of pages when creating a new splitpoint.  The patch is a bit ugly because it
      avoids making any changes in md.c, which seems the most prudent approach for a
      backpatchable beta-period fix.  After 8.3 development opens, I'll take a look
      at a cleaner but more invasive patch, in particular getting rid of the now
      unnecessary hack to allow reading beyond EOF in mdread().
      
      Backpatch as far as 7.4.  The bug likely exists in 7.3 as well, but because
      of the magnitude of the 7.3-to-7.4 changes in hash, the later-version patch
      doesn't even begin to apply.  Given the other known bugs in the 7.3-era hash
      code, it does not seem worth trying to develop a separate patch for 7.3.
      d68efb3f
  12. 18 11月, 2006 2 次提交
  13. 16 11月, 2006 2 次提交
  14. 12 11月, 2006 1 次提交
  15. 11 11月, 2006 4 次提交
  16. 10 11月, 2006 1 次提交
  17. 09 11月, 2006 4 次提交
    • T
      Change Windows rename and unlink substitutes so that they time out after · dcbdf9b1
      Tom Lane 提交于
      30 seconds instead of retrying forever.  Also modify xlog.c so that if
      it fails to rename an old xlog segment up to a future slot, it will
      unlink the segment instead.  Per discussion of bug #2712, in which it
      became apparent that Windows can handle unlinking a file that's being
      held open, but not renaming it.
      dcbdf9b1
    • T
      Modify aset.c to track the next intended block allocation size explicitly. · 808b3190
      Tom Lane 提交于
      The former coding relied on the actual allocated size of the last block,
      which made it behave strangely if the first allocation in a context was
      larger than ALLOC_CHUNK_LIMIT: subsequent allocations would be referenced
      to that and not to the intended series of block sizes.  Noted while
      studying a memory wastage gripe from Tatsuo.
      808b3190
    • T
      Tweak accumArrayResult() to double the size of its working arrays when · fc5eb3f6
      Tom Lane 提交于
      more space is needed, instead of incrementing by a fixed amount; the old
      method wastes lots of space and time when the ultimate size is large.
      Per gripe from Tatsuo.
      fc5eb3f6
    • T
      Fix performance issues in replace_text(), replace_text_regexp(), and · a5cf12e2
      Tom Lane 提交于
      text_to_array(): they all had O(N^2) behavior on long input strings in
      multibyte encodings, because of repeated rescanning of the input text to
      identify substrings whose positions/lengths were computed in characters
      instead of bytes.  Fix by tracking the current source position as a char
      pointer as well as a character-count.  Also avoid some unnecessary palloc
      operations.  text_to_array() also leaked memory intracall due to failure
      to pfree temporary strings.  Per gripe from Tatsuo Ishii.
      a5cf12e2
  18. 08 11月, 2006 1 次提交
  19. 07 11月, 2006 2 次提交
    • T
      Repair bug #2694 concerning an ARRAY[] construct whose inputs are empty · f0395d50
      Tom Lane 提交于
      sub-arrays.  Per discussion, if all inputs are empty arrays then result
      must be an empty array too, whereas a mix of empty and nonempty arrays
      should (and already did) draw an error.  In the back branches, the
      construct was strict: any NULL input immediately yielded a NULL output;
      so I left that behavior alone.  HEAD was simply ignoring NULL sub-arrays,
      which doesn't seem very sensible.  For lack of a better idea it now
      treats NULL sub-arrays the same as empty ones.
      f0395d50
    • T
      Remove temporary Windows-specific debugging code; it seems the problem · 36e012e7
      Tom Lane 提交于
      with fopen() not using FILE_SHARE_DELETE was indeed the bug we were after,
      given lack of recent reports.
      36e012e7
  20. 06 11月, 2006 1 次提交