1. 26 Mar, 2012 4 commits
    • Peter Eisentraut's avatar
      Remove dead assignment · dcb33b1c
      Peter Eisentraut authored
      found by Coverity
      dcb33b1c
    • Robert Haas's avatar
      Code cleanup for heap_freeze_tuple. · 7386089d
      Robert Haas authored
      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
    • Tom Lane's avatar
      Fix COPY FROM for null marker strings that correspond to invalid encoding. · e8476f46
      Tom Lane authored
      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
    • Tom Lane's avatar
      Replace empty locale name with implied value in CREATE DATABASE and initdb. · c7cea267
      Tom Lane authored
      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
  2. 24 Mar, 2012 2 commits
    • Tom Lane's avatar
      Fix planner's handling of outer PlaceHolderVars within subqueries. · 8279eb41
      Tom Lane authored
      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
    • Tom Lane's avatar
      Cast some printf arguments to avoid possibly-nonportable behavior. · ed61127b
      Tom Lane authored
      Per compiler warnings on buildfarm member black_firefly.
      ed61127b
  3. 23 Mar, 2012 3 commits
    • Tom Lane's avatar
      Refactor simplify_function et al to centralize argument simplification. · 81a646fe
      Tom Lane authored
      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
    • Tom Lane's avatar
      Code review for protransform patches. · 0339047b
      Tom Lane authored
      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
    • Robert Haas's avatar
      Clarify that PQconninfoParse returns an array with all legal options. · e08b4101
      Robert Haas authored
      Per discussion with Dmitriy Igrishin and Tom Lane.
      e08b4101
  4. 22 Mar, 2012 6 commits
    • Robert Haas's avatar
      Doc clarifications regarding use of varlena. · fdf719cd
      Robert Haas authored
      Jay Levitt, reviewed by Tom Lane.
      fdf719cd
    • Robert Haas's avatar
      Update docs on numeric storage requirements. · e83f827f
      Robert Haas authored
      Since 9.1, the minimum overhead is three bytes, not five.
      
      Fujii Masao
      e83f827f
    • Tom Lane's avatar
      Fix GET DIAGNOSTICS for case of assignment to function's first variable. · 88a4cb30
      Tom Lane authored
      An incorrect and entirely unnecessary "safety check" in exec_stmt_getdiag()
      caused the code to treat an assignment to a variable with dno zero as a
      no-op.  Unfortunately, that's a perfectly valid dno.  This has been broken
      since GET DIAGNOSTICS was invented.  It's not terribly surprising that the
      bug went unnoticed for so long, since in most cases you probably wouldn't
      use the function's first-created variable (normally its first parameter)
      as a GET DIAGNOSTICS target.  Nonetheless, it's broken.  Per bug #6551
      from Adam Buraczewski.
      88a4cb30
    • Tom Lane's avatar
      Refactor to eliminate duplicate copies of conninfo default-finding code. · e9ce658b
      Tom Lane authored
      Alex Shulgin, lightly edited by me
      e9ce658b
    • Tom Lane's avatar
      If a role has a password expiration date, show that in psql's \du output. · 04dfc877
      Tom Lane authored
      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
    • Tom Lane's avatar
      Fix configure's search for collateindex.pl. · f2386d71
      Tom Lane authored
      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
  5. 21 Mar, 2012 6 commits
  6. 20 Mar, 2012 8 commits
    • Tom Lane's avatar
      Improve the -l (limit) option recently added to contrib/vacuumlo. · 64c60489
      Tom Lane authored
      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
    • Alvaro Herrera's avatar
      pg_dump: get rid of die_horribly · 9d23a70d
      Alvaro Herrera authored
      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
    • Alvaro Herrera's avatar
      Fix trigger example code to match header changes · b251cf31
      Alvaro Herrera authored
      I should have done this in b93f5a56 but
      didn't notice the problem at the time.
      
      Per report from Marco Nenciarini
      b251cf31
    • Alvaro Herrera's avatar
      Update struct Trigger in docs · 438269eb
      Alvaro Herrera authored
      438269eb
    • Robert Haas's avatar
      0b43edbc
    • Peter Eisentraut's avatar
      1b12c3e8
    • Peter Eisentraut's avatar
      pg_dump: Remove undocumented "files" output format · 19f45565
      Peter Eisentraut authored
      This was for demonstration only, and now it was creating compiler
      warnings from zlib without an obvious fix (see also
      d923125b), let's just remove it.  The
      "directory" format is presumably similar enough anyway.
      19f45565
    • Tom Lane's avatar
      Restructure SELECT INTO's parsetree representation into CreateTableAsStmt. · 9dbf2b7d
      Tom Lane authored
      Making this operation look like a utility statement seems generally a good
      idea, and particularly so in light of the desire to provide command
      triggers for utility statements.  The original choice of representing it as
      SELECT with an IntoClause appendage had metastasized into rather a lot of
      places, unfortunately, so that this patch is a great deal more complicated
      than one might at first expect.
      
      In particular, keeping EXPLAIN working for SELECT INTO and CREATE TABLE AS
      subcommands required restructuring some EXPLAIN-related APIs.  Add-on code
      that calls ExplainOnePlan or ExplainOneUtility, or uses
      ExplainOneQuery_hook, will need adjustment.
      
      Also, the cases PREPARE ... SELECT INTO and CREATE RULE ... SELECT INTO,
      which formerly were accepted though undocumented, are no longer accepted.
      The PREPARE case can be replaced with use of CREATE TABLE AS EXECUTE.
      The CREATE RULE case doesn't seem to have much real-world use (since the
      rule would work only once before failing with "table already exists"),
      so we'll not bother with that one.
      
      Both SELECT INTO and CREATE TABLE AS still return a command tag of
      "SELECT nnnn".  There was some discussion of returning "CREATE TABLE nnnn",
      but for the moment backwards compatibility wins the day.
      
      Andres Freund and Tom Lane
      9dbf2b7d
  7. 19 Mar, 2012 3 commits
  8. 17 Mar, 2012 3 commits
  9. 16 Mar, 2012 5 commits