1. 28 12月, 2000 1 次提交
  2. 18 12月, 2000 1 次提交
  3. 30 11月, 2000 2 次提交
  4. 29 11月, 2000 1 次提交
    • T
      Significant cleanups in SysV IPC handling (shared mem and semaphores). · c715fdea
      Tom Lane 提交于
      IPC key assignment will now work correctly even when multiple postmasters
      are using same logical port number (which is possible given -k switch).
      There is only one shared-mem segment per postmaster now, not 3.
      Rip out broken code for non-TAS case in bufmgr and xlog, substitute a
      complete S_LOCK emulation using semaphores in spin.c.  TAS and non-TAS
      logic is now exactly the same.
      When deadlock is detected, "Deadlock detected" is now the elog(ERROR)
      message, rather than a NOTICE that comes out before an unhelpful ERROR.
      c715fdea
  5. 09 11月, 2000 1 次提交
    • T
      Make DROP TABLE rollback-able: postpone physical file delete until commit. · 3908473c
      Tom Lane 提交于
      (WAL logging for this is not done yet, however.)  Clean up a number of really
      crufty things that are no longer needed now that DROP behaves nicely.  Make
      temp table mapper do the right things when drop or rename affecting a temp
      table is rolled back.  Also, remove "relation modified while in use" error
      check, in favor of locking tables at first reference and holding that lock
      throughout the statement.
      3908473c
  6. 29 10月, 2000 1 次提交
  7. 20 10月, 2000 1 次提交
  8. 08 8月, 2000 1 次提交
    • T
      TOAST mop-up work: update comments for tuple-size-related symbols such · 02241774
      Tom Lane 提交于
      as MaxHeapAttributeNumber.  Increase MaxAttrSize to something more
      reasonable (given what it's used for, namely checking char(n) declarations,
      I didn't make it the full 1G that it could theoretically be --- 10Mb
      seemed a more reasonable number).  Improve calculation of MaxTupleSize.
      02241774
  9. 15 6月, 2000 1 次提交
  10. 19 5月, 2000 1 次提交
    • T
      Revise FlushRelationBuffers/ReleaseRelationBuffers per discussion with · f923260e
      Tom Lane 提交于
      Hiroshi.  ReleaseRelationBuffers now removes rel's buffers from pool,
      instead of merely marking them nondirty.  The old code would leave valid
      buffers for a deleted relation, which didn't cause any known problems
      but can't possibly be a good idea.  There were several places which called
      ReleaseRelationBuffers *and* FlushRelationBuffers, which is now
      unnecessary; but there were others that did not.  FlushRelationBuffers
      no longer emits a warning notice if it finds dirty buffers to flush,
      because with the current bufmgr behavior that's not an unexpected
      condition.  Also, FlushRelationBuffers will flush out all dirty buffers
      for the relation regardless of block number.  This ensures that
      pg_upgrade's expectations are met about tuple on-row status bits being
      up-to-date on disk.  Lastly, tweak BufTableDelete() to clear the
      buffer's tag so that no one can mistake it for being a still-valid
      buffer for the page it once held.  Formerly, the buffer would not be
      found by buffer hashtable searches after BufTableDelete(), but it would
      still be thought to belong to its old relation by the routines that
      sequentially scan the shared-buffer array.  Again I know of no bugs
      caused by that, but it still can't be a good idea.
      f923260e
  11. 13 4月, 2000 1 次提交
  12. 09 4月, 2000 1 次提交
    • T
      Buffer manager modifications to keep a local buffer-dirtied bit as well · 1f6d8b90
      Tom Lane 提交于
      as a shared dirtybit for each shared buffer.  The shared dirtybit still
      controls writing the buffer, but the local bit controls whether we need
      to fsync the buffer's file.  This arrangement fixes a bug that allowed
      some required fsyncs to be missed, and should improve performance as well.
      For more info see my post of same date on pghackers.
      1f6d8b90
  13. 31 3月, 2000 1 次提交
    • T
      Get rid of SetBufferWriteMode(), which was an accident waiting to happen. · ca05ba2a
      Tom Lane 提交于
      In the event of an elog() while the mode was set to immediate write,
      there was no way for it to be set back to the normal delayed write.
      The mechanism was a waste of space and cycles anyway, since the only user
      was varsup.c, which could perfectly well call FlushBuffer directly.
      Now it does just that, and the notion of a write mode is gone.
      ca05ba2a
  14. 26 1月, 2000 1 次提交
    • B
      Add: · 5c25d602
      Bruce Momjian 提交于
        * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
      
      to all files copyright Regents of Berkeley.  Man, that's a lot of files.
      5c25d602
  15. 17 1月, 2000 1 次提交
    • H
      · 1500e262
      Hiroshi Inoue 提交于
      Fix for TODO item * spinlock stuck problem when elog(FATAL)
      and elog(ERROR) inside bufmgr.
      1500e262
  16. 28 9月, 1999 1 次提交
  17. 24 9月, 1999 2 次提交
    • T
      Several changes here, not very related but touching some of the same files. · e812458b
      Tom Lane 提交于
      * Buffer refcount cleanup (per my "progress report" to pghackers, 9/22).
      * Add links to backend PROC structs to sinval's array of per-backend info,
      and use these links for routines that need to check the state of all
      backends (rather than the slow, complicated search of the ShmemIndex
      hashtable that was used before).  Add databaseOID to PROC structs.
      * Use this to implement an interlock that prevents DESTROY DATABASE of
      a database containing running backends.  (It's a little tricky to prevent
      a concurrently-starting backend from getting in there, since the new
      backend is not able to lock anything at the time it tries to look up
      its database in pg_database.  My solution is to recheck that the DB is
      OK at the end of InitPostgres.  It may not be a 100% solution, but it's
      a lot better than no interlock at all...)
      * In ALTER TABLE RENAME, flush buffers for the relation before doing the
      rename of the physical files, to ensure we don't get failures later from
      mdblindwrt().
      * Update TRUNCATE patch so that it actually compiles against current
      sources :-(.
      You should do "make clean all" after pulling these changes.
      e812458b
    • B
      e7cad7b0
  18. 18 7月, 1999 1 次提交
  19. 16 7月, 1999 1 次提交
  20. 15 7月, 1999 1 次提交
  21. 26 5月, 1999 1 次提交
  22. 14 2月, 1999 1 次提交
  23. 15 12月, 1998 1 次提交
  24. 09 10月, 1998 1 次提交
  25. 01 9月, 1998 1 次提交
  26. 19 8月, 1998 1 次提交
    • B
      heap_fetch requires buffer pointer, must be released; heap_getnext · 79715390
      Bruce Momjian 提交于
      no longer returns buffer pointer, can be gotten from scan;
      	descriptor; bootstrap can create multi-key indexes;
      pg_procname index now is multi-key index; oidint2, oidint4, oidname
      are gone (must be removed from regression tests); use System Cache
      rather than sequential scan in many places; heap_modifytuple no
      longer takes buffer parameter; remove unused buffer parameter in
      a few other functions; oid8 is not index-able; remove some use of
      single-character variable names; cleanup Buffer variables usage
      and scan descriptor looping; cleaned up allocation and freeing of
      tuples; 18k lines of diff;
      79715390
  27. 16 6月, 1998 1 次提交
  28. 24 4月, 1998 1 次提交
  29. 26 2月, 1998 1 次提交
  30. 25 1月, 1998 1 次提交
  31. 13 1月, 1998 1 次提交
    • M
      Some *very* major changes by darrenk@insightdist.com (Darren King) · 374bb5d2
      Marc G. Fournier 提交于
      ==========================================
      What follows is a set of diffs that cleans up the usage of BLCKSZ.
      
      As a side effect, the person compiling the code can change the
      value of BLCKSZ _at_their_own_risk_.  By that, I mean that I've
      tried it here at 4096 and 16384 with no ill-effects.  A value
      of 4096 _shouldn't_ affect much as far as the kernel/file system
      goes, but making it bigger than 8192 can have severe consequences
      if you don't know what you're doing.  16394 worked for me, _BUT_
      when I went to 32768 and did an initdb, the SCSI driver broke and
      the partition that I was running under went to hell in a hand
      basket. Had to reboot and do a good bit of fsck'ing to fix things up.
      
      The patch can be safely applied though.  Just leave BLCKSZ = 8192
      and everything is as before.  It basically only cleans up all of the
      references to BLCKSZ in the code.
      
      If this patch is applied, a comment in the config.h file though above
      the BLCKSZ define with warning about monkeying around with it would
      be a good idea.
      
      Darren  darrenk@insightdist.com
      
      (Also cleans up some of the #includes in files referencing BLCKSZ.)
      ==========================================
      374bb5d2
  32. 09 9月, 1997 2 次提交
  33. 08 9月, 1997 1 次提交
  34. 07 9月, 1997 1 次提交
  35. 20 8月, 1997 1 次提交
  36. 28 3月, 1997 1 次提交
    • M
      From: Dan McGuirk <mcguirk@indirect.com> · 159f8c63
      Marc G. Fournier 提交于
      Reply-To: hackers@hub.org, Dan McGuirk <mcguirk@indirect.com>
      To: hackers@hub.org
      Subject: [HACKERS] tmin writeback optimization
      
      I was doing some profiling of the backend, and noticed that during a certain
      benchmark I was running somewhere between 30% and 75% of the backend's CPU
      time was being spent in calls to TransactionIdDidCommit() from
      HeapTupleSatisfiesNow() or HeapTupleSatisfiesItself() to determine that
      changed rows' transactions had in fact been committed even though the rows'
      tmin values had not yet been set.
      
      When a query looks at a given row, it needs to figure out whether the
      transaction that changed the row has been committed and hence it should pay
      attention to the row, or whether on the other hand the transaction is still
      in progress or has been aborted and hence the row should be ignored.  If
      a tmin value is set, it is known definitively that the row's transaction
      has been committed.  However, if tmin is not set, the transaction
      referred to in xmin must be looked up in pg_log, and this is what the
      backend was spending a lot of time doing during my benchmark.
      
      So, implementing a method suggested by Vadim, I created the following
      patch that, the first time a query finds a committed row whose tmin value
      is not set, sets it, and marks the buffer where the row is stored as
      dirty.  (It works for tmax, too.)  This doesn't result in the boost in
      real time performance I was hoping for, however it does decrease backend
      CPU usage by up to two-thirds in certain situations, so it could be
      rather beneficial in high-concurrency settings.
      159f8c63
  37. 16 1月, 1997 1 次提交