1. 29 Sep, 2009 2 commits
    • Tom Lane's avatar
      Allow MOVE FORWARD n, MOVE BACKWARD n, MOVE FORWARD ALL, MOVE BACKWARD ALL · 960d7ff0
      Tom Lane authored
      in plpgsql.  Clean up a couple of corner cases in the MOVE/FETCH syntax.
      
      Pavel Stehule
      960d7ff0
    • Tom Lane's avatar
      Fix equivclass.c's not-quite-right strategy for handling X=X clauses. · 25549edb
      Tom Lane authored
      The original coding correctly noted that these aren't just redundancies
      (they're effectively X IS NOT NULL, assuming = is strict).  However, they
      got treated that way if X happened to be in a single-member EquivalenceClass
      already, which could happen if there was an ORDER BY X clause, for instance.
      The simplest and most reliable solution seems to be to not try to process
      such clauses through the EquivalenceClass machinery; just throw them back
      for traditional processing.  The amount of work that'd be needed to be
      smarter than that seems out of proportion to the benefit.
      
      Per bug #5084 from Bernt Marius Johnsen, and analysis by Andrew Gierth.
      25549edb
  2. 28 Sep, 2009 2 commits
  3. 27 Sep, 2009 6 commits
  4. 26 Sep, 2009 4 commits
    • Tom Lane's avatar
      Hmm, seems a lot of the buildfarm is running versions of awk that · 23cf415a
      Tom Lane authored
      don't have gensub().  Use sub() instead, tedious though it be.
      23cf415a
    • Tom Lane's avatar
      Revert my ill-considered change that made formrdesc not insert the correct · ca70c3cf
      Tom Lane authored
      relation rowtype OID into the relcache entries it builds.  This ensures
      that catcache copies of the relation tupdescs will be fully correct.
      While the deficiency doesn't seem to have any effect in the current
      sources, we have been bitten by not-quite-right catcache tupdescs before,
      so it seems like a good idea to maintain the rule that they should be right.
      ca70c3cf
    • Tom Lane's avatar
      Extend the BKI infrastructure to allow system catalogs to be given · 49856352
      Tom Lane authored
      hand-assigned rowtype OIDs, even when they are not "bootstrapped" catalogs
      that have handmade type rows in pg_type.h.  Give pg_database such an OID.
      Restore the availability of C macros for the rowtype OIDs of the bootstrapped
      catalogs.  (These macros are now in the individual catalogs' .h files,
      though, not in pg_type.h.)
      
      This commit doesn't do anything especially useful by itself, but it's
      necessary infrastructure for reverting some ill-considered changes in
      relcache.c.
      49856352
    • Tom Lane's avatar
      Fix RelationCacheInitializePhase2 (Phase3, in HEAD) to cope with the · c2e228d4
      Tom Lane authored
      possibility of shared-inval messages causing a relcache flush while it tries
      to fill in missing data in preloaded relcache entries.  There are actually
      two distinct failure modes here:
      
      1. The flush could delete the next-to-be-processed cache entry, causing
      the subsequent hash_seq_search calls to go off into the weeds.  This is
      the problem reported by Michael Brown, and I believe it also accounts
      for bug #5074.  The simplest fix is to restart the hashtable scan after
      we've read any new data from the catalogs.  It appears that pre-8.4
      branches have not suffered from this failure, because by chance there were
      no other catalogs sharing the same hash chains with the catalogs that
      RelationCacheInitializePhase2 had work to do for.  However that's obviously
      pretty fragile, and it seems possible that derivative versions with
      additional system catalogs might be vulnerable, so I'm back-patching this
      part of the fix anyway.
      
      2. The flush could delete the *current* cache entry, in which case the
      pointer to the newly-loaded data would end up being stored into an
      already-deleted Relation struct.  As long as it was still deleted, the only
      consequence would be some leaked space in CacheMemoryContext.  But it seems
      possible that the Relation struct could already have been recycled, in
      which case this represents a hard-to-reproduce clobber of cached data
      structures, with unforeseeable consequences.  The fix here is to pin the
      entry while we work on it.
      
      In passing, also change RelationCacheInitializePhase2 to Assert that
      formrdesc() set up the relation's cached TupleDesc (rd_att) with the
      correct type OID and hasoids values.  This is more appropriate than
      silently updating the values, because the original tupdesc might already
      have been copied into the catcache.  However this part of the patch is
      not in HEAD because it fails due to some questionable recent changes in
      formrdesc :-(.  That will be cleaned up in a subsequent patch.
      c2e228d4
  5. 25 Sep, 2009 2 commits
  6. 23 Sep, 2009 1 commit
  7. 22 Sep, 2009 3 commits
  8. 21 Sep, 2009 3 commits
  9. 20 Sep, 2009 1 commit
    • Tom Lane's avatar
      Allow plpgsql IN parameters to be assigned to. Since the parameters are just · 0f427dfe
      Tom Lane authored
      preinitialized local variables, this does not affect the function's semantics
      as seen by callers; allowing assignment simply avoids the need to create more
      local variables in some cases.  In any case we were being rather inconsistent
      since only scalar parameters were getting marked constant.
      
      No documentation change, since parameters were never documented as being
      marked constant anyway.
      
      Steve Prentice
      0f427dfe
  10. 19 Sep, 2009 5 commits
  11. 18 Sep, 2009 5 commits
  12. 17 Sep, 2009 5 commits
  13. 16 Sep, 2009 1 commit