Skip to content
Snippets Groups Projects
  1. Dec 29, 2010
    • Tom Lane's avatar
      Reclassify DEFAULT as a column_constraint item in the CREATE TABLE syntax. · 31d2efae
      Tom Lane authored
      This is how it was documented originally, but several years ago somebody
      decided that DEFAULT isn't a type of constraint.  Well, the grammar thinks
      it is.  The documentation was wrong in two ways: it alleged that DEFAULT
      had to appear before any other kind of constraint, and it alleged that you
      can't prefix a DEFAULT clause with a "CONSTRAINT name" clause, when in fact
      you can.  (The latter behavior probably isn't SQL-standard, but our grammar
      has always allowed it.)
      
      This patch responds to Fujii Masao's observation that the ALTER TABLE
      documentation mistakenly implied that you couldn't include DEFAULT in
      ALTER TABLE ADD COLUMN; though this isn't the way he proposed fixing it.
      31d2efae
  2. Dec 28, 2010
  3. Dec 27, 2010
  4. Dec 25, 2010
  5. Dec 24, 2010
  6. Dec 23, 2010
    • Heikki Linnakangas's avatar
      Rewrite the GiST insertion logic so that we don't need the post-recovery · 9de3aa65
      Heikki Linnakangas authored
      cleanup stage to finish incomplete inserts or splits anymore. There was two
      reasons for the cleanup step:
      
      1. When a new tuple was inserted to a leaf page, the downlink in the parent
      needed to be updated to contain (ie. to be consistent with) the new key.
      Updating the parent in turn might require recursively updating the parent of
      the parent. We now handle that by updating the parent while traversing down
      the tree, so that when we insert the leaf tuple, all the parents are already
      consistent with the new key, and the tree is consistent at every step.
      
      2. When a page is split, we need to insert the downlink for the new right
      page(s), and update the downlink for the original page to not include keys
      that moved to the right page(s). We now handle that by setting a new flag,
      F_FOLLOW_RIGHT, on the non-rightmost pages in the split. When that flag is
      set, scans always follow the rightlink, regardless of the NSN mechanism used
      to detect concurrent page splits. That way the tree is consistent right after
      split, even though the downlink is still missing. This is very similar to the
      way B-tree splits are handled. When the downlink is inserted in the parent,
      the flag is cleared. To keep the insertion algorithm simple, when an
      insertion sees an incomplete split, indicated by the F_FOLLOW_RIGHT flag, it
      finishes the split before doing anything else.
      
      These changes allow removing the whole "invalid tuple" mechanism, but I
      retained the scan code to still follow invalid tuples correctly. While we
      don't create any such tuples anymore, we want to handle them gracefully in
      case you pg_upgrade a GiST index that has them. If we encounter any on an
      insert, though, we just throw an error saying that you need to REINDEX.
      
      The issue that got me into doing this is that if you did a checkpoint while
      an insert or split was in progress, and the checkpoint finishes quickly so
      that there is no WAL record related to the insert between RedoRecPtr and the
      checkpoint record, recovery from that checkpoint would not know to finish
      the incomplete insert. IOW, we have the same issue we solved with the
      rm_safe_restartpoint mechanism during normal operation too. It's highly
      unlikely to happen in practice, and this fix is far too large to backpatch,
      so we're just going to live with in previous versions, but this refactoring
      fixes it going forward.
      
      With this patch, you don't get the annoying
      'index "FOO" needs VACUUM or REINDEX to finish crash recovery' notices
      anymore if you crash at an unfortunate moment.
      9de3aa65
    • Bruce Momjian's avatar
      Document that BBU's do not allow partial page writes to be safely turned · 7a1ca897
      Bruce Momjian authored
      off unless they guarantee that all writes to the BBU arrive in 8kB chunks.
      
      Per discussion with Greg Smith
      7a1ca897
  7. Dec 22, 2010
  8. Dec 20, 2010
  9. Dec 19, 2010
    • Magnus Hagander's avatar
      Support for collecting crash dumps on Windows · dcb09b59
      Magnus Hagander authored
      Add support for collecting "minidump" style crash dumps on
      Windows, by setting up an exception handling filter. Crash
      dumps will be generated in PGDATA/crashdumps if the directory
      is created (the existance of the directory is used as on/off
      switch for the generation of the dumps).
      
      Craig Ringer and Magnus Hagander
      dcb09b59
  10. Dec 17, 2010
  11. Dec 16, 2010
  12. Dec 15, 2010
  13. Dec 14, 2010
  14. Dec 13, 2010
  15. Dec 11, 2010
  16. Dec 09, 2010
    • Tom Lane's avatar
      Force default wal_sync_method to be fdatasync on Linux. · 576477e7
      Tom Lane authored
      Recent versions of the Linux system header files cause xlogdefs.h to
      believe that open_datasync should be the default sync method, whereas
      formerly fdatasync was the default on Linux.  open_datasync is a bad
      choice, first because it doesn't actually outperform fdatasync (in fact
      the reverse), and second because we try to use O_DIRECT with it, causing
      failures on certain filesystems (e.g., ext4 with data=journal option).
      This part of the patch is largely per a proposal from Marti Raudsepp.
      More extensive changes are likely to follow in HEAD, but this is as much
      change as we want to back-patch.
      
      Also clean up confusing code and incorrect documentation surrounding the
      fsync_writethrough option.  Those changes shouldn't result in any actual
      behavioral change, but I chose to back-patch them anyway to keep the
      branches looking similar in this area.
      
      In 9.0 and HEAD, also do some copy-editing on the WAL Reliability
      documentation section.
      
      Back-patch to all supported branches, since any of them might get used
      on modern Linux versions.
      576477e7
  17. Dec 08, 2010
  18. Dec 04, 2010
  19. Dec 03, 2010
    • Robert Haas's avatar
    • Tom Lane's avatar
      Create core infrastructure for KNNGIST. · d583f10b
      Tom Lane authored
      This is a heavily revised version of builtin_knngist_core-0.9.  The
      ordering operators are no longer mixed in with actual quals, which would
      have confused not only humans but significant parts of the planner.
      Instead, ordering operators are carried separately throughout planning and
      execution.
      
      Since the API for ambeginscan and amrescan functions had to be changed
      anyway, this commit takes the opportunity to rationalize that a bit.
      RelationGetIndexScan no longer forces a premature index_rescan call;
      instead, callers of index_beginscan must call index_rescan too.  Aside from
      making the AM-side initialization logic a bit less peculiar, this has the
      advantage that we do not make a useless extra am_rescan call when there are
      runtime key values.  AMs formerly could not assume that the key values
      passed to amrescan were actually valid; now they can.
      
      Teodor Sigaev and Tom Lane
      d583f10b
  20. Nov 29, 2010
  21. Nov 27, 2010
Loading