Skip to content
Snippets Groups Projects
  1. Aug 28, 2004
    • Tom Lane's avatar
      Fix relcache to account properly for subtransaction status of 'new' · 1c72d0de
      Tom Lane authored
      relcache entries.  Also, change TransactionIdIsCurrentTransactionId()
      so that if consulted during transaction abort, it will not say that
      the aborted xact is still current.  (It would be better to ensure that
      it's never called at all during abort, but I'm not sure we can easily
      guarantee that.)  In combination, these fix a crash we have seen
      occasionally during parallel regression tests of 8.0.
      1c72d0de
  2. Jul 17, 2004
    • Tom Lane's avatar
      Invent ResourceOwner mechanism as per my recent proposal, and use it to · fe548629
      Tom Lane authored
      keep track of portal-related resources separately from transaction-related
      resources.  This allows cursors to work in a somewhat sane fashion with
      nested transactions.  For now, cursor behavior is non-subtransactional,
      that is a cursor's state does not roll back if you abort a subtransaction
      that fetched from the cursor.  We might want to change that later.
      fe548629
  3. Jul 01, 2004
  4. May 08, 2004
    • Tom Lane's avatar
      Get rid of rd_nblocks field in relcache entries. Turns out this was · 4af34211
      Tom Lane authored
      costing us lots more to maintain than it was worth.  On shared tables
      it was of exactly zero benefit because we couldn't trust it to be
      up to date.  On temp tables it sometimes saved an lseek, but not often
      enough to be worth getting excited about.  And the real problem was that
      we forced an lseek on every relcache flush in order to update the field.
      So all in all it seems best to lose the complexity.
      4af34211
  5. Feb 10, 2004
    • Tom Lane's avatar
      Restructure smgr API as per recent proposal. smgr no longer depends on · 87bd9563
      Tom Lane authored
      the relcache, and so the notion of 'blind write' is gone.  This should
      improve efficiency in bgwriter and background checkpoint processes.
      Internal restructuring in md.c to remove the not-very-useful array of
      MdfdVec objects --- might as well just use pointers.
      Also remove the long-dead 'persistent main memory' storage manager (mm.c),
      since it seems quite unlikely to ever get resurrected.
      87bd9563
  6. Jan 06, 2004
    • Neil Conway's avatar
      Code cleanup, mostly in the smgr: · dfc7e7b7
      Neil Conway authored
           - Update comment in IsReservedName() to the present day
      
           - Improve some variable & function names in commands/vacuum.c. I
             was planning to rewrite this to avoid lappend(), but since I
             still intend to do the list rewrite, there's no need for that.
      
           - Update some smgr comments which seemed to imply that we still
             forced all dirty pages to disk at commit-time.
      
           - Replace some #ifdef DIAGNOSTIC code with assertions.
      
           - Make the distinction between OS-level file descriptors and
             virtual file descriptors a little clearer in a few comments
      
           - Other minor comment improvements in the smgr code
      dfc7e7b7
  7. Nov 29, 2003
    • PostgreSQL Daemon's avatar
      · 55b11325
      PostgreSQL Daemon authored
      make sure the $Id tags are converted to $PostgreSQL as well ...
      55b11325
  8. Nov 12, 2003
    • Tom Lane's avatar
      Cross-data-type comparisons are now indexable by btrees, pursuant to my · fa5c8a05
      Tom Lane authored
      pghackers proposal of 8-Nov.  All the existing cross-type comparison
      operators (int2/int4/int8 and float4/float8) have appropriate support.
      The original proposal of storing the right-hand-side datatype as part of
      the primary key for pg_amop and pg_amproc got modified a bit in the event;
      it is easier to store zero as the 'default' case and only store a nonzero
      when the operator is actually cross-type.  Along the way, remove the
      long-since-defunct bigbox_ops operator class.
      fa5c8a05
  9. Nov 09, 2003
    • Tom Lane's avatar
      Add operator strategy and comparison-value datatype fields to ScanKey. · c1d62bfd
      Tom Lane authored
      Remove the 'strategy map' code, which was a large amount of mechanism
      that no longer had any use except reverse-mapping from procedure OID to
      strategy number.  Passing the strategy number to the index AM in the
      first place is simpler and faster.
      This is a preliminary step in planned support for cross-datatype index
      operations.  I'm committing it now since the ScanKeyEntryInitialize()
      API change touches quite a lot of files, and I want to commit those
      changes before the tree drifts under me.
      c1d62bfd
  10. Sep 24, 2003
    • Tom Lane's avatar
      Repair some REINDEX problems per recent discussions. The relcache is · a56a016c
      Tom Lane authored
      now able to cope with assigning new relfilenode values to nailed-in-cache
      indexes, so they can be reindexed using the fully crash-safe method.  This
      leaves only shared system indexes as special cases.  Remove the 'index
      deactivation' code, since it provides no useful protection in the shared-
      index case.  Require reindexing of shared indexes to be done in standalone
      mode, but remove other restrictions on REINDEX.  -P (IgnoreSystemIndexes)
      now prevents using indexes for lookups, but does not disable index updates.
      It is therefore safe to allow from PGOPTIONS.  Upshot: reindexing system catalogs
      can be done without a standalone backend for all cases except
      shared catalogs.
      a56a016c
  11. Aug 04, 2003
  12. May 28, 2003
    • Tom Lane's avatar
      Replace functional-index facility with expressional indexes. Any column · fc8d970c
      Tom Lane authored
      of an index can now be a computed expression instead of a simple variable.
      Restrictions on expressions are the same as for predicates (only immutable
      functions, no sub-selects).  This fixes problems recently introduced with
      inlining SQL functions, because the inlining transformation is applied to
      both expression trees so the planner can still match them up.  Along the
      way, improve efficiency of handling index predicates (both predicates and
      index expressions are now cached by the relcache) and fix 7.3 oversight
      that didn't record dependencies of predicate expressions.
      fc8d970c
  13. Nov 23, 2002
    • Bruce Momjian's avatar
      This patch implements FOR EACH STATEMENT triggers, per my email to · 1b7f3cc0
      Bruce Momjian authored
      -hackers a couple days ago.
      
      Notes/caveats:
      
              - added regression tests for the new functionality, all
                regression tests pass on my machine
      
              - added pg_dump support
      
              - updated PL/PgSQL to support per-statement triggers; didn't
                look at the other procedural languages.
      
              - there's (even) more code duplication in trigger.c than there
                was previously. Any suggestions on how to refactor the
                ExecXXXTriggers() functions to reuse more code would be
                welcome -- I took a brief look at it, but couldn't see an
                easy way to do it (there are several subtly-different
                versions of the code in question)
      
              - updated the documentation. I also took the liberty of
                removing a big chunk of duplicated syntax documentation in
                the Programmer's Guide on triggers, and moving that
                information to the CREATE TRIGGER reference page.
      
              - I also included some spelling fixes and similar small
                cleanups I noticed while making the changes. If you'd like
                me to split those into a separate patch, let me know.
      
      Neil Conway
      1b7f3cc0
  14. Sep 04, 2002
  15. Aug 11, 2002
  16. Aug 06, 2002
    • Tom Lane's avatar
      Restructure local-buffer handling per recent pghackers discussion. · 5df307c7
      Tom Lane authored
      The local buffer manager is no longer used for newly-created relations
      (unless they are TEMP); a new non-TEMP relation goes through the shared
      bufmgr and thus will participate normally in checkpoints.  But TEMP relations
      use the local buffer manager throughout their lifespan.  Also, operations
      in TEMP relations are not logged in WAL, thus improving performance.
      Since it's no longer necessary to fsync relations as they move out of the
      local buffers into shared buffers, quite a lot of smgr.c/md.c/fd.c code
      is no longer needed and has been removed: there's no concept of a dirty
      relation anymore in md.c/fd.c, and we never fsync anything but WAL.
      Still TODO: improve local buffer management algorithms so that it would
      be reasonable to increase NLocBuffer.
      5df307c7
  17. Jun 20, 2002
  18. Apr 02, 2002
    • Tom Lane's avatar
      Add tgconstrrelid to stored Trigger structures, make RI trigger functions · 789ddcb5
      Tom Lane authored
      depend on this rather than the trigger argument strings to locate the
      other relation to test.  This makes RI triggers function properly in
      the presence of schemas and temp tables.  Along the way, fix bogus lack
      of locking in RI triggers, handle quoting of names fully correctly,
      compute required sizes of query buffers with some semblance of accuracy.
      789ddcb5
  19. Mar 31, 2002
  20. Mar 26, 2002
  21. Feb 19, 2002
    • Tom Lane's avatar
      A bunch of changes aimed at reducing backend startup time... · 78634044
      Tom Lane authored
      Improve 'pg_internal.init' relcache entry preload mechanism so that it is
      safe to use for all system catalogs, and arrange to preload a realistic
      set of system-catalog entries instead of only the three nailed-in-cache
      indexes that were formerly loaded this way.  Fix mechanism for deleting
      out-of-date pg_internal.init files: this must be synchronized with transaction
      commit, not just done at random times within transactions.  Drive it off
      relcache invalidation mechanism so that no special-case tests are needed.
      
      Cache additional information in relcache entries for indexes (their pg_index
      tuples and index-operator OIDs) to eliminate repeated lookups.  Also cache
      index opclass info at the per-opclass level to avoid repeated lookups during
      relcache load.
      
      Generalize 'systable scan' utilities originally developed by Hiroshi,
      move them into genam.c, use in a number of places where there was formerly
      ugly code for choosing either heap or index scan.  In particular this allows
      simplification of the logic that prevents infinite recursion between syscache
      and relcache during startup: we can easily switch to heapscans in relcache.c
      when and where needed to avoid recursion, so IndexScanOK becomes simpler and
      does not need any expensive initialization.
      
      Eliminate useless opening of a heapscan data structure while doing an indexscan
      (this saves an mdnblocks call and thus at least one kernel call).
      78634044
  22. Nov 05, 2001
  23. Oct 28, 2001
  24. Oct 25, 2001
  25. Oct 07, 2001
    • Tom Lane's avatar
      Rearrange fmgr.c and relcache so that it's possible to keep FmgrInfo · 85801a4d
      Tom Lane authored
      lookup info in the relcache for index access method support functions.
      This makes a huge difference for dynamically loaded support functions,
      and should save a few cycles even for built-in ones.  Also tweak dfmgr.c
      so that load_external_function is called only once, not twice, when
      doing fmgr_info for a dynamically loaded function.  All per performance
      gripe from Teodor Sigaev, 5-Oct-01.
      85801a4d
  26. Jun 28, 2001
    • Tom Lane's avatar
      Install infrastructure for shared-memory free space map. Doesn't actually · e0c9301c
      Tom Lane authored
      do anything yet, but it has the necessary connections to initialization
      and so forth.  Make some gestures towards allowing number of blocks in
      a relation to be BlockNumber, ie, unsigned int, rather than signed int.
      (I doubt I got all the places that are sloppy about it, yet.)  On the
      way, replace the hardwired NLOCKS_PER_XACT fudge factor with a GUC
      variable.
      e0c9301c
  27. Jun 22, 2001
  28. Jun 19, 2001
  29. Jun 01, 2001
    • Tom Lane's avatar
      Clean up some minor problems exposed by further thought about Panon's bug · 0b370ea7
      Tom Lane authored
      report on old-style functions invoked by RI triggers.  We had a number of
      other places that were being sloppy about which memory context FmgrInfo
      subsidiary data will be allocated in.  Turns out none of them actually
      cause a problem in 7.1, but this is for arcane reasons such as the fact
      that old-style triggers aren't supported anyway.  To avoid getting burnt
      later, I've restructured the trigger support so that we don't keep trigger
      FmgrInfo structs in relcache memory.  Some other related cleanups too:
      it's not really necessary to call fmgr_info at all while setting up
      the index support info in relcache entries, because those ScanKeyEntry
      structs are never used to invoke the functions.  This should speed up
      relcache initialization a tiny bit.
      0b370ea7
  30. Mar 22, 2001
  31. Jan 24, 2001
  32. Dec 23, 2000
  33. Nov 08, 2000
    • Tom Lane's avatar
      Make DROP TABLE rollback-able: postpone physical file delete until commit. · 3908473c
      Tom Lane authored
      (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
  34. Sep 07, 2000
  35. Jul 15, 2000
    • Tom Lane's avatar
      Cleanup of code for creating index entries. Functional indexes with · 6bfe6403
      Tom Lane authored
      pass-by-ref data types --- eg, an index on lower(textfield) --- no longer
      leak memory during index creation or update.  Clean up a lot of redundant
      code ... did you know that copy, vacuum, truncate, reindex, extend index,
      and bootstrap each basically duplicated the main executor's logic for
      extracting information about an index and preparing index entries?
      Functional indexes should be a little faster now too, due to removal
      of repeated function lookups.
      CREATE INDEX 'opt_type' clause is deimplemented by these changes,
      but I haven't removed it from the parser yet (need to merge with
      Thomas' latest change set first).
      6bfe6403
  36. Jun 30, 2000
    • Tom Lane's avatar
      Use a private memory context to store rule information in each relcache · b41f4ab8
      Tom Lane authored
      entry that has rules.  This allows us to release the rule parsetrees
      on relcache flush without needing a working freeObject() routine.
      Formerly, the rule trees were leaked permanently at relcache flush.
      Also, clean up handling of rule creation and deletion --- there was
      not sufficient locking of the relation being modified, and there was
      no reliable notification of other backends that a relcache reload
      was needed.  Also, clean up relcache.c code so that scans of system
      tables needed to load a relcache entry are done in the caller's
      memory context, not in CacheMemoryContext.  This prevents any
      un-pfreed memory from those scans from becoming a permanent memory
      leak.
      b41f4ab8
  37. Jun 19, 2000
    • Tom Lane's avatar
      Reimplement nodeMaterial to use a temporary BufFile (or even memory, if the · 1ee26b77
      Tom Lane authored
      materialized tupleset is small enough) instead of a temporary relation.
      This was something I was thinking of doing anyway for performance, and Jan
      says he needs it for TOAST because he doesn't want to cope with toasting
      noname relations.  With this change, the 'noname table' support in heap.c
      is dead code, and I have accordingly removed it.  Also clean up 'noname'
      plan handling in planner --- nonames are either sort or materialize plans,
      and it seems less confusing to handle them separately under those names.
      1ee26b77
Loading