1. 10 Oct, 2011 5 commits
    • Bruce Momjian's avatar
      e26d5fcd
    • Robert Haas's avatar
      Attempt to reduce local dependencies in regression tests. · 3e9a2672
      Robert Haas authored
      This appears to be another case where the relative sort order of letters
      vs. numbers can throw things off.
      
      Pavel Stehule
      3e9a2672
    • Bruce Momjian's avatar
      In pg_upgrade, add -o/-O options to pass parameters to the servers, and · 0dc3f57b
      Bruce Momjian authored
      document its use for config-only directory installs.
      0dc3f57b
    • Robert Haas's avatar
      Fix ALTER TABLE ONLY .. DROP CONSTRAINT. · c0f03aae
      Robert Haas authored
      When I consolidated two copies of the HOT-chain search logic in commit
      4da99ea4, I introduced a behavior
      change: the old code wouldn't necessarily traverse the entire chain,
      if the most recently returned tuple were updated while the HOT chain
      traversal is in progress.  The new behavior seems more correct, but
      unfortunately, the code here relies on a scan with SnapshotNow failing
      to see its own updates.  That seems pretty shaky even with the old HOT
      chain traversal behavior, since there's no guarantee that these
      updates will always be HOT, but it's trivial to broke a failure with
      the new HOT search logic.  Fix by updating just the first matching
      pg_constraint tuple, rather than all of them, since there should be
      only one anyway.  But since nobody has reproduced this failure on older
      versions, no back-patch for now.
      
      Report and test case by Alex Hunsaker; tablecmds.c changes by me.
      c0f03aae
    • Robert Haas's avatar
      Revert accidental change to pg_config_manual.h. · c980426c
      Robert Haas authored
      This was broken in commit 53dbc27c, which
      introduced unlogged tables.  Fortunately, as debugging tools go, this one
      is pretty cheap, which is probably why it took nine months for someone to
      notice, but it's not intended to be enabled by default, so revert.
      
      Noted by Fujii Masao.
      c980426c
  2. 09 Oct, 2011 3 commits
    • Heikki Linnakangas's avatar
      Clean up a couple of box gist helper functions. · d50e1251
      Heikki Linnakangas authored
      The original idea of this patch was to make box picksplit run faster, by
      eliminating unnecessary palloc() overhead, but that was obsoleted by the new
      double-sorting split algorithm that doesn't call these functions so heavily
      anymore. Nevertheless, the code looks better this way.
      
      Original patch by me, reviewed and tidied up after the double-sorting patch
      by Kevin Grittner.
      d50e1251
    • Tom Lane's avatar
      Improve index-only scans to avoid repeated access to the index page. · cbfa92c2
      Tom Lane authored
      We copy all the matched tuples off the page during _bt_readpage, instead of
      expensively re-locking the page during each subsequent tuple fetch.  This
      costs a bit more local storage, but not more than 2*BLCKSZ worth, and the
      reduction in LWLock traffic is certainly worth that.  What's more, this
      lets us get rid of the API wart in the original patch that said an index AM
      could randomly decline to supply an index tuple despite having asserted
      pg_am.amcanreturn.  That will be important for future improvements in the
      index-only-scan feature, since the executor will now be able to rely on
      having the index data available.
      cbfa92c2
    • Tom Lane's avatar
      Prevent index-only scans in stats regression test. · 45401c1c
      Tom Lane authored
      This bollixes the test because it's expecting to see the idx_tup_fetch
      counter increase, which won't happen if heap fetches were avoided by use
      of an index-only scan.  Per buildfarm results.
      
      While at it, let's just make sure that enable_seqscan and enable_indexscan
      are ON for this test ...
      45401c1c
  3. 08 Oct, 2011 7 commits
  4. 07 Oct, 2011 1 commit
  5. 06 Oct, 2011 8 commits
  6. 05 Oct, 2011 2 commits
  7. 04 Oct, 2011 6 commits
    • Tom Lane's avatar
      Improve define_custom_variable's handling of pre-existing settings. · 41e461d3
      Tom Lane authored
      Arrange for any problems with pre-existing settings to be reported as
      WARNING not ERROR, so that we don't undesirably abort the loading of the
      incoming add-on module.  The bad setting is just discarded, as though it
      had never been applied at all.  (This requires a change in the API of
      set_config_option.  After some thought I decided the most potentially
      useful addition was to allow callers to just pass in a desired elevel.)
      
      Arrange to restore the complete stacked state of the variable, rather than
      cheesily reinstalling only the active value.  This ensures that custom GUCs
      will behave unsurprisingly even when the module loading operation occurs
      within nested subtransactions that have changed the active value.  Since a
      module load could occur as a result of, eg, a PL function call, this is not
      an unlikely scenario.
      41e461d3
    • Tom Lane's avatar
      Fix uninitialized-variable bug. · fa56a0c3
      Tom Lane authored
      fa56a0c3
    • Tom Lane's avatar
      Add sourcefile/sourceline data to EXEC_BACKEND GUC transmission files. · 4bcb82a7
      Tom Lane authored
      This oversight meant that on Windows, the pg_settings view would not
      display source file or line number information for values coming from
      postgresql.conf, unless the backend had received a SIGHUP since starting.
      
      In passing, also make the error detection in read_nondefault_variables a
      tad more thorough, and fix it to not lose precision on float GUCs (these
      changes are already in HEAD as of my previous commit).
      4bcb82a7
    • Tom Lane's avatar
      Remember the source GucContext for each GUC parameter. · 9f5836d2
      Tom Lane authored
      We used to just remember the GucSource, but saving GucContext too provides
      a little more information --- notably, whether a SET was done by a
      superuser or regular user.  This allows us to rip out the fairly dodgy code
      that define_custom_variable used to use to try to infer the context to
      re-install a pre-existing setting with.  In particular, it now works for
      a superuser to SET a extension's SUSET custom variable before loading the
      associated extension, because GUC can remember whether the SET was done as
      a superuser or not.  The plperl regression tests contain an example where
      this is useful.
      9f5836d2
    • Alvaro Herrera's avatar
      Use callbacks in SlruScanDirectory for the actual action · 09e196e4
      Alvaro Herrera authored
      Previously, the code assumed that the only possible action to take was
      to delete files behind a certain cutoff point.  The async notify code
      was already a crock: it used a different "pagePrecedes" function for
      truncation than for regular operation.  By allowing it to pass a
      callback to SlruScanDirectory it can do cleanly exactly what it needs to
      do.
      
      The clog.c code also had its own use for SlruScanDirectory, which is
      made a bit simpler with this.
      09e196e4
    • Tom Lane's avatar
      Remove the custom_variable_classes parameter. · 1a00c0ef
      Tom Lane authored
      This variable provides only marginal error-prevention capability (since
      it can only check the prefix of a qualified GUC name), and the consensus
      is that that isn't worth the amount of hassle that maintaining the setting
      creates for DBAs.  So, let's just remove it.
      
      With this commit, the system will silently accept a value for any qualified
      GUC name at all, whether it has anything to do with any known extension or
      not.  (Unqualified names still have to match known built-in settings,
      though; and you will get a WARNING at extension load time if there's an
      unrecognized setting with that extension's prefix.)
      
      There's still some discussion ongoing about whether to tighten that up and
      if so how; but if we do come up with a solution, it's not likely to look
      anything like custom_variable_classes.
      1a00c0ef
  8. 03 Oct, 2011 1 commit
  9. 02 Oct, 2011 1 commit
    • Tom Lane's avatar
      Restructure error handling in reading of postgresql.conf. · d56b3afc
      Tom Lane authored
      This patch has two distinct purposes: to report multiple problems in
      postgresql.conf rather than always bailing out after the first one,
      and to change the policy for whether changes are applied when there are
      unrelated errors in postgresql.conf.
      
      Formerly the policy was to apply no changes if any errors could be
      detected, but that had a significant consistency problem, because in some
      cases specific values might be seen as valid by some processes but invalid
      by others.  This meant that the latter processes would fail to adopt
      changes in other parameters even though the former processes had done so.
      
      The new policy is that during SIGHUP, the file is rejected as a whole
      if there are any errors in the "name = value" syntax, or if any lines
      attempt to set nonexistent built-in parameters, or if any lines attempt
      to set custom parameters whose prefix is not listed in (the new value of)
      custom_variable_classes.  These tests should always give the same results
      in all processes, and provide what seems a reasonably robust defense
      against loading values from badly corrupted config files.  If these tests
      pass, all processes will apply all settings that they individually see as
      good, ignoring (but logging) any they don't.
      
      In addition, the postmaster does not abandon reading a configuration file
      after the first syntax error, but continues to read the file and report
      syntax errors (up to a maximum of 100 syntax errors per file).
      
      The postmaster will still refuse to start up if the configuration file
      contains any errors at startup time, but these changes allow multiple
      errors to be detected and reported before quitting.
      
      Alexey Klyukin, reviewed by Andy Colson and av (Alexander ?)
      with some additional hacking by Tom Lane
      d56b3afc
  10. 01 Oct, 2011 3 commits
    • Tom Lane's avatar
      Improve generated column names for cases involving sub-SELECTs. · 5ec6b7f1
      Tom Lane authored
      We'll now use "exists" for EXISTS(SELECT ...), "array" for ARRAY(SELECT
      ...), or the sub-select's own result column name for a simple expression
      sub-select.  Previously, you usually got "?column?" in such cases.
      
      Marti Raudsepp, reviewed by Kyotaro Horiugchi
      5ec6b7f1
    • Bruce Momjian's avatar
      878b74e0
    • Tom Lane's avatar
      Cache the result of makesign() across calls of gtrgm_penalty(). · 0a5d5a49
      Tom Lane authored
      Since gtrgm_penalty() is usually called many times in a row with the same
      "newval" (to determine which item on an index page newval fits into best),
      the makesign() calculation is repetitious.  It's expensive enough to make
      it worth caching the result, so do so.  On my machine this is good for
      more than a 40% savings in the time needed to build a trigram index on
      /usr/share/dict/words.  This is all per a suggestion of Heikki's.
      
      In passing, make some mostly-cosmetic improvements in the caching logic in
      the other functions in this file that rely on caching info in fn_extra.
      0a5d5a49
  11. 30 Sep, 2011 1 commit
    • Tom Lane's avatar
      Support GiST index support functions that want to cache data across calls. · d22a09dc
      Tom Lane authored
      pg_trgm was already doing this unofficially, but the implementation hadn't
      been thought through very well and leaked memory.  Restructure the core
      GiST code so that it actually works, and document it.  Ordinarily this
      would have required an extra memory context creation/destruction for each
      GiST index search, but I was able to avoid that in the normal case of a
      non-rescanned search by finessing the handling of the RBTree.  It used to
      have its own context always, but now shares a context with the
      scan-lifespan data structures, unless there is more than one rescan call.
      This should make the added overhead unnoticeable in typical cases.
      d22a09dc
  12. 29 Sep, 2011 2 commits