1. 29 3月, 2012 7 次提交
    • H
      Inherit max_safe_fds to child processes in EXEC_BACKEND mode. · 5762a4d9
      Heikki Linnakangas 提交于
      Postmaster sets max_safe_fds by testing how many open file descriptors it
      can open, and that is normally inherited by all child processes at fork().
      Not so on EXEC_BACKEND, ie. Windows, however. Because of that, we
      effectively ignored max_files_per_process on Windows, and always assumed
      a conservative default of 32 simultaneous open files. That could have an
      impact on performance, if you need to access a lot of different files
      in a query. After this patch, the value is passed to child processes by
      save/restore_backend_variables() among many other global variables.
      
      It has been like this forever, but given the lack of complaints about it,
      I'm not backpatching this.
      5762a4d9
    • A
      Remove now redundant pgpipe code. · d2c1740d
      Andrew Dunstan 提交于
      d2c1740d
    • T
      Improve contrib/pg_stat_statements to lump "similar" queries together. · 7313cc01
      Tom Lane 提交于
      pg_stat_statements now hashes selected fields of the analyzed parse tree
      to assign a "fingerprint" to each query, and groups all queries with the
      same fingerprint into a single entry in the pg_stat_statements view.
      In practice it is expected that queries with the same fingerprint will be
      equivalent except for values of literal constants.  To make the display
      more useful, such constants are replaced by "?" in the displayed query
      strings.
      
      This mechanism currently supports only optimizable queries (SELECT,
      INSERT, UPDATE, DELETE).  Utility commands are still matched on the
      basis of their literal query strings.
      
      There remain some open questions about how to deal with utility statements
      that contain optimizable queries (such as EXPLAIN and SELECT INTO) and how
      to deal with expiring speculative hashtable entries that are made to save
      the normalized form of a query string.  However, fixing these issues should
      require only localized changes, and since there are other open patches
      involving contrib/pg_stat_statements, it seems best to go ahead and commit
      what we've got.
      
      Peter Geoghegan, reviewed by Daniel Farina
      7313cc01
    • P
      Run maintainer-check on all PO files, not only configured ones · 4e1c7207
      Peter Eisentraut 提交于
      The intent is to allow configure --enable-nls=xx for installation
      speed and size, but have maintainer-check check all source files
      regardless.
      4e1c7207
    • P
      03f0c08f
    • R
      Attempt to unbreak pg_test_timing on Windows. · 7f63527c
      Robert Haas 提交于
      Per buildfarm, and Álvaro Herrera.
      7f63527c
    • R
      pg_basebackup: Error handling fixes. · ada763cf
      Robert Haas 提交于
      Thomas Ogrisegg and Fujii Masao
      ada763cf
  2. 28 3月, 2012 9 次提交
    • R
      pg_basebackup: Error message improvements. · 81f6bbe8
      Robert Haas 提交于
      Fujii Masao
      81f6bbe8
    • R
      Doc fix for pg_test_timing. · 9c272da8
      Robert Haas 提交于
      Fujii Masao
      9c272da8
    • R
      pg_test_timing utility, to measure clock monotonicity and timing cost. · cee52386
      Robert Haas 提交于
      Ants Aasma, Greg Smith
      cee52386
    • R
      Expose track_iotiming information via pg_stat_statements. · 5b4f3466
      Robert Haas 提交于
      Ants Aasma, reviewed by Greg Smith, with very minor tweaks by me.
      5b4f3466
    • T
      Bend parse location rules for the convenience of pg_stat_statements. · 5d3fcc4c
      Tom Lane 提交于
      Generally, the parse location assigned to a multiple-token construct is
      the location of its leftmost token.  This commit breaks that rule for
      the syntaxes TYPENAME 'LITERAL' and CAST(CONSTANT AS TYPENAME) --- the
      resulting Const will have the location of the literal string, not the
      typename or CAST keyword.  The cases where this matters are pretty thin on
      the ground (no error messages in the regression tests change, for example),
      and it's unlikely that any user would be confused anyway by an error cursor
      pointing at the literal.  But still it's less than consistent.  The reason
      for changing it is that contrib/pg_stat_statements wants to know the parse
      location of the original literal, and it was agreed that this is the least
      unpleasant way to preserve that information through parse analysis.
      
      Peter Geoghegan
      5d3fcc4c
    • T
      Add some infrastructure for contrib/pg_stat_statements. · a40fa613
      Tom Lane 提交于
      Add a queryId field to Query and PlannedStmt.  This is not used by the
      core backend, except for being copied around at appropriate times.
      It's meant to allow plug-ins to track a particular query forward from
      parse analysis to execution.
      
      The queryId is intentionally not dumped into stored rules (and hence this
      commit doesn't bump catversion).  You could argue that choice either way,
      but it seems better that stored rule strings not have any dependency
      on plug-ins that might or might not be present.
      
      Also, add a post_parse_analyze_hook that gets invoked at the end of
      parse analysis (but only for top-level analysis of complete queries,
      not cases such as analyzing a domain's default-value expression).
      This is mainly meant to be used to compute and assign a queryId,
      but it could have other applications.
      
      Peter Geoghegan
      a40fa613
    • R
      New GUC, track_iotiming, to track I/O timings. · 40b9b957
      Robert Haas 提交于
      Currently, the only way to see the numbers this gathers is via
      EXPLAIN (ANALYZE, BUFFERS), but the plan is to add visibility through
      the stats collector and pg_stat_statements in subsequent patches.
      
      Ants Aasma, reviewed by Greg Smith, with some further changes by me.
      40b9b957
    • T
      Silence compiler warning about uninitialized variable. · 98316e21
      Tom Lane 提交于
      98316e21
    • P
      dd024c22
  3. 27 3月, 2012 2 次提交
  4. 26 3月, 2012 3 次提交
    • R
      Code cleanup for heap_freeze_tuple. · 7386089d
      Robert Haas 提交于
      It used to be case that lazy vacuum could call this function with only
      a shared lock on the buffer, but neither lazy vacuum nor any other
      code path does that any more.  Simplify the code accordingly and clean
      up some related, obsolete comments.
      7386089d
    • T
      Fix COPY FROM for null marker strings that correspond to invalid encoding. · e8476f46
      Tom Lane 提交于
      The COPY documentation says "COPY FROM matches the input against the null
      string before removing backslashes".  It is therefore reasonable to presume
      that null markers like E'\\0' will work ... and they did, until someone put
      the tests in the wrong order during microoptimization-driven rewrites.
      Since then, we've been failing if the null marker is something that would
      de-escape to an invalidly-encoded string.  Since null markers generally
      need to be something that can't appear in the data, this represents a
      nontrivial loss of functionality; surprising nobody noticed it earlier.
      
      Per report from Jeff Davis.  Backpatch to 8.4 where this got broken.
      e8476f46
    • T
      Replace empty locale name with implied value in CREATE DATABASE and initdb. · c7cea267
      Tom Lane 提交于
      setlocale() accepts locale name "" as meaning "the locale specified by the
      process's environment variables".  Historically we've accepted that for
      Postgres' locale settings, too.  However, it's fairly unsafe to store an
      empty string in a new database's pg_database.datcollate or datctype fields,
      because then the interpretation could vary across postmaster restarts,
      possibly resulting in index corruption and other unpleasantness.
      
      Instead, we should expand "" to whatever it means at the moment of calling
      CREATE DATABASE, which we can do by saving the value returned by
      setlocale().
      
      For consistency, make initdb set up the initial lc_xxx parameter values the
      same way.  initdb was already doing the right thing for empty locale names,
      but it did not replace non-empty names with setlocale results.  On a
      platform where setlocale chooses to canonicalize the spellings of locale
      names, this would result in annoying inconsistency.  (It seems that popular
      implementations of setlocale don't do such canonicalization, which is a
      pity, but the POSIX spec certainly allows it to be done.)  The same risk
      of inconsistency leads me to not venture back-patching this, although it
      could certainly be seen as a longstanding bug.
      
      Per report from Jeff Davis, though this is not his proposed patch.
      c7cea267
  5. 25 3月, 2012 1 次提交
    • T
      Fix planner's handling of outer PlaceHolderVars within subqueries. · 8279eb41
      Tom Lane 提交于
      For some reason, in the original coding of the PlaceHolderVar mechanism
      I had supposed that PlaceHolderVars couldn't propagate into subqueries.
      That is of course entirely possible.  When it happens, we need to treat
      an outer-level PlaceHolderVar much like an outer Var or Aggref, that is
      SS_replace_correlation_vars() needs to replace the PlaceHolderVar with
      a Param, and then when building the finished SubPlan we have to provide
      the PlaceHolderVar expression as an actual parameter for the SubPlan.
      The handling of the contained expression is a bit delicate but it can be
      treated exactly like an Aggref's expression.
      
      In addition to the missing logic in subselect.c, prepjointree.c was failing
      to search subqueries for PlaceHolderVars that need their relids adjusted
      during subquery pullup.  It looks like everyplace else that touches
      PlaceHolderVars got it right, though.
      
      Per report from Mark Murawski.  In 9.1 and HEAD, queries affected by this
      oversight would fail with "ERROR: Upper-level PlaceHolderVar found where
      not expected".  But in 9.0 and 8.4, you'd silently get possibly-wrong
      answers, since the value transmitted into the subquery wouldn't go to null
      when it should.
      8279eb41
  6. 24 3月, 2012 3 次提交
    • T
      Cast some printf arguments to avoid possibly-nonportable behavior. · ed61127b
      Tom Lane 提交于
      Per compiler warnings on buildfarm member black_firefly.
      ed61127b
    • T
      Refactor simplify_function et al to centralize argument simplification. · 81a646fe
      Tom Lane 提交于
      We were doing the recursive simplification of function/operator arguments
      in half a dozen different places, with rather baroque logic to ensure it
      didn't get done multiple times on some arguments.  This patch improves that
      by postponing argument simplification until after we've dealt with named
      parameters and added any needed default expressions.
      
      Marti Raudsepp, somewhat hacked on by me
      81a646fe
    • T
      Code review for protransform patches. · 0339047b
      Tom Lane 提交于
      Fix loss of previous expression-simplification work when a transform
      function fires: we must not simply revert to untransformed input tree.
      Instead build a dummy FuncExpr node to pass to the transform function.
      This has the additional advantage of providing a simpler, more uniform
      API for transform functions.
      
      Move documentation to a somewhat less buried spot, relocate some
      poorly-placed code, be more wary of null constants and invalid typmod
      values, add an opr_sanity check on protransform function signatures,
      and some other minor cosmetic adjustments.
      
      Note: although this patch touches pg_proc.h, no need for catversion
      bump, because the changes are cosmetic and don't actually change the
      intended catalog contents.
      0339047b
  7. 23 3月, 2012 5 次提交
  8. 22 3月, 2012 6 次提交
    • T
      If a role has a password expiration date, show that in psql's \du output. · 04dfc877
      Tom Lane 提交于
      Per a suggestion from Euler Taveira, it seems like a good idea to include
      this information in \du (and \dg) output.  This costs nothing for people
      who are not using the VALID UNTIL feature, while for those who are, it's
      rather critical information.
      
      Fabrízio de Royes Mello
      04dfc877
    • T
      Fix configure's search for collateindex.pl. · f2386d71
      Tom Lane 提交于
      PGAC_PATH_COLLATEINDEX supposed that it could use AC_PATH_PROGS to search
      for collateindex.pl, but that macro will only accept files that are marked
      executable, and at least some DocBook installations don't mark the script
      executable (a case the docs Makefile was already prepared for).  Accept the
      script if it's present and readable in $DOCBOOKSTYLE/bin, and otherwise
      search the PATH as before.
      
      Having fixed that up, we don't need the fallback case that was in the docs
      Makefile, and instead can throw an understandable error if configure didn't
      find the script.  Per recent trouble report from John Lumby.
      f2386d71
    • P
      Clean up compiler warnings from unused variables with asserts disabled · 0e85abd6
      Peter Eisentraut 提交于
      For those variables only used when asserts are enabled, use a new
      macro PG_USED_FOR_ASSERTS_ONLY, which expands to
      __attribute__((unused)) when asserts are not enabled.
      0e85abd6
    • P
      Add installing entab to pgindent instructions · 621eb156
      Peter Eisentraut 提交于
      And minor other pgindent documentation tweaks.
      621eb156
    • R
      Doc updates for index-only scans. · 5b9c1e6d
      Robert Haas 提交于
      Document that routine vacuuming is now also important for the purpose
      of index-only scans; and mention in the section that describes the
      visibility map that it is used to implement index-only scans.
      
      Marti Raudsepp, with some changes by me.
      5b9c1e6d
    • T
      Allow new relmapper entries when allow_system_table_mods is true. · f70f095c
      Tom Lane 提交于
      This restores the pre-9.0 situation that it's possible to add new indexes
      on pg_class and other mapped-but-not-shared catalogs, so long as you broke
      the glass and flipped the big red Dont-Touch-Me switch.  As before, there
      are a lot of gotchas, and you'd have to be pretty desperate to try this
      on a production database; but there doesn't seem to be a reason for
      relmapper.c to be preventing such things all by itself.  Per
      experimentation with a case suggested by Cody Cutrer.
      f70f095c
  9. 21 3月, 2012 4 次提交
    • R
      Improve connectMaintenanceDatabase() error reporting. · 99081c63
      Robert Haas 提交于
      The prior coding instructs the user to pick an alternative maintenance
      database, but this is overly clever, since it obscures whatever the real
      cause of the failure is.
      
      Josh Kupershmidt
      99081c63
    • R
      Add some CHECK_FOR_INTERRUPTS() calls to the heap-sort call path. · aefa6d16
      Robert Haas 提交于
      I broke this in commit 337b6f5e, which
      among other things arranged for quicksorts to CHECK_FOR_INTERRUPTS()
      slightly less frequently.  Sadly, it also arranged for heapsorts to
      CHECK_FOR_INTERRUPTS() much less frequently.  Repair.
      aefa6d16
    • T
      Improve the -l (limit) option recently added to contrib/vacuumlo. · 64c60489
      Tom Lane 提交于
      Instead of just stopping after removing an arbitrary subset of orphaned
      large objects, commit and start a new transaction after each -l objects.
      This is just as effective as the original patch at limiting the number of
      locks used, and it doesn't require doing the OID collection process
      repeatedly to get everything.  Since the option no longer changes the
      fundamental behavior of vacuumlo, and it avoids a known server-side
      limitation, enable it by default (with a default limit of 1000 LOs per
      transaction).
      
      In passing, be more careful about properly quoting the names of tables
      and fields, and do some other cosmetic cleanup.
      64c60489
    • A
      pg_dump: get rid of die_horribly · 9d23a70d
      Alvaro Herrera 提交于
      The old code was using exit_horribly or die_horribly other depending on
      whether it had an ArchiveHandle on which to close the connection or not;
      but there were places that were passing a NULL ArchiveHandle to
      die_horribly, and other places that used exit_horribly while having an
      AH available.  So there wasn't all that much consistency.
      
      Improve the situation by keeping only one of the routines, and instead
      of having to pass the AH down from the caller, arrange for it to be
      present for an on_exit_nicely callback to operate on.
      
      Author: Joachim Wieland
      Some tweaks by me
      
      Per a suggestion from Robert Haas, in the ongoing "parallel pg_dump"
      saga.
      9d23a70d