1. 31 Jan, 2013 5 commits
    • Tom Lane's avatar
      Reject nonzero day fields in AT TIME ZONE INTERVAL functions. · 9afc5839
      Tom Lane authored
      It's not sensible for an interval that's used as a time zone value to be
      larger than a day.  When we changed the interval type to contain a separate
      day field, check_timezone() was adjusted to reject nonzero day values, but
      timetz_izone(), timestamp_izone(), and timestamptz_izone() evidently were
      overlooked.
      
      While at it, make the error messages for these three cases consistent.
      9afc5839
    • Magnus Hagander's avatar
      Properly zero-pad the day-of-year part of the win32 build number · bfb8a8d3
      Magnus Hagander authored
      This ensure the version number increases over time. The first three digits
      in the version number is still set to the actual PostgreSQL version
      number, but the last one is intended to be an ever increasing build number,
      which previosly failed when it changed between 1, 2 and 3 digits long values.
      
      Noted by Deepak
      bfb8a8d3
    • Tatsuo Ishii's avatar
      Add --aggregate-interval option. · 6a651d85
      Tatsuo Ishii authored
      The new option specifies length of aggregation interval (in
      seconds). May be used only together with -l. With this option, the log
      contains per-interval summary (number of transactions, min/max latency
      and two additional fields useful for variance estimation).
      
      Patch contributed by Tomas Vondra, reviewed by Pavel Stehule. Slight
      change by Tatsuo Ishii, suggested by Robert Hass to emit an error
      message indicating that the option is not currently supported on
      Windows.
      6a651d85
    • Tom Lane's avatar
      Don't use spi_priv.h in plpython. · 2ab218b5
      Tom Lane authored
      There may once have been a reason to violate modularity like that,
      but it doesn't appear that there is anymore.
      2ab218b5
    • Tom Lane's avatar
      Fix plpgsql's reporting of plan-time errors in possibly-simple expressions. · 0900ac2d
      Tom Lane authored
      exec_simple_check_plan and exec_eval_simple_expr attempted to call
      GetCachedPlan directly.  This meant that if an error was thrown during
      planning, the resulting context traceback would not include the line
      normally contributed by _SPI_error_callback.  This is already inconsistent,
      but just to be really odd, a re-execution of the very same expression
      *would* show the additional context line, because we'd already have cached
      the plan and marked the expression as non-simple.
      
      The problem is easy to demonstrate in 9.2 and HEAD because planning of a
      cached plan doesn't occur at all until GetCachedPlan is done.  In earlier
      versions, it could only be an issue if initial planning had succeeded, then
      a replan was forced (already somewhat improbable for a simple expression),
      and the replan attempt failed.  Since the issue is mainly cosmetic in older
      branches anyway, it doesn't seem worth the risk of trying to fix it there.
      It is worth fixing in 9.2 since the instability of the context printout can
      affect the results of GET STACKED DIAGNOSTICS, as per a recent discussion
      on pgsql-novice.
      
      To fix, introduce a SPI function that wraps GetCachedPlan while installing
      the correct callback function.  Use this instead of calling GetCachedPlan
      directly from plpgsql.
      
      Also introduce a wrapper function for extracting a SPI plan's
      CachedPlanSource list.  This lets us stop including spi_priv.h in
      pl_exec.c, which was never a very good idea from a modularity standpoint.
      
      In passing, fix a similar inconsistency that could occur in SPI_cursor_open,
      which was also calling GetCachedPlan without setting up a context callback.
      0900ac2d
  2. 30 Jan, 2013 3 commits
    • Tom Lane's avatar
      Fix grammar for subscripting or field selection from a sub-SELECT result. · 670a6c7a
      Tom Lane authored
      Such cases should work, but the grammar failed to accept them because of
      our ancient precedence hacks to convince bison that extra parentheses
      around a sub-SELECT in an expression are unambiguous.  (Formally, they
      *are* ambiguous, but we don't especially care whether they're treated as
      part of the sub-SELECT or part of the expression.  Bison cares, though.)
      Fix by adding a redundant-looking production for this case.
      
      This is a fine example of why fixing shift/reduce conflicts via
      precedence declarations is more dangerous than it looks: you can easily
      cause the parser to reject cases that should work.
      
      This has been wrong since commit 3db4056e
      or maybe before, and apparently some people have been working around it
      by inserting no-op casts.  That method introduces a dump/reload hazard,
      as illustrated in bug #7838 from Jan Mate.  Hence, back-patch to all
      active branches.
      670a6c7a
    • Peter Eisentraut's avatar
      pg_regress: Allow overriding diff options · 574f7643
      Peter Eisentraut authored
      By setting the environment variable PG_REGRESS_DIFF_OPTS, custom diff
      options can be passed.
      
      reviewed by Jeevan Chalke
      574f7643
    • Peter Eisentraut's avatar
      entab: Fix some compiler warnings · 5bb2ddc0
      Peter Eisentraut authored
      5bb2ddc0
  3. 29 Jan, 2013 4 commits
    • Tom Lane's avatar
      Provide database object names as separate fields in error messages. · 991f3e5a
      Tom Lane authored
      This patch addresses the problem that applications currently have to
      extract object names from possibly-localized textual error messages,
      if they want to know for example which index caused a UNIQUE_VIOLATION
      failure.  It adds new error message fields to the wire protocol, which
      can carry the name of a table, table column, data type, or constraint
      associated with the error.  (Since the protocol spec has always instructed
      clients to ignore unrecognized field types, this should not create any
      compatibility problem.)
      
      Support for providing these new fields has been added to just a limited set
      of error reports (mainly, those in the "integrity constraint violation"
      SQLSTATE class), but we will doubtless add them to more calls in future.
      
      Pavel Stehule, reviewed and extensively revised by Peter Geoghegan, with
      additional hacking by Tom Lane.
      991f3e5a
    • Heikki Linnakangas's avatar
      Allow pgbench to use a scale larger than 21474. · 89d00cbe
      Heikki Linnakangas authored
      Beyond 21474, the number of accounts exceed the range for int4. Change the
      initialization code to use bigint for account id columns when scale is large
      enough, and switch to using int64s for the variables in pgbench code. The
      threshold where we switch to bigints is set at 20000, because that's easier
      to remember and document than 21474, and ensures that there is some headroom
      when int4s are used.
      
      Greg Smith, with various changes by Euler Taveira de Oliveira, Gurjeet
      Singh and Satoshi Nagayasu.
      89d00cbe
    • Heikki Linnakangas's avatar
      Skip truncating ON COMMIT DELETE ROWS temp tables, if the transaction hasn't · c9d7dbac
      Heikki Linnakangas authored
      touched any temporary tables.
      
      We could try harder, and keep track of whether we've inserted to any temp
      tables, rather than accessed them, and which temp tables have been inserted
      to. But this is dead simple, and already covers many interesting scenarios.
      c9d7dbac
    • Simon Riggs's avatar
      Fast promote mode skips checkpoint at end of recovery. · fd4ced52
      Simon Riggs authored
      pg_ctl promote -m fast will skip the checkpoint at end of recovery so that we
      can achieve very fast failover when the apply delay is low. Write new WAL record
      XLOG_END_OF_RECOVERY to allow us to switch timeline correctly for downstream log
      readers. If we skip synchronous end of recovery checkpoint we request a normal
      spread checkpoint so that the window of re-recovery is low.
      
      Simon Riggs and Kyotaro Horiguchi, with input from Fujii Masao.
      Review by Heikki Linnakangas
      fd4ced52
  4. 28 Jan, 2013 3 commits
    • Alvaro Herrera's avatar
      REASSIGN OWNED: handle shared objects, too · ee22c55f
      Alvaro Herrera authored
      Give away ownership of shared objects (databases, tablespaces) along
      with local objects, per original code intention.  Try to make the
      documentation clearer, too.
      
      Per discussion about DROP OWNED's brokenness, in bug #7748.
      
      This is not backpatched because it'd require some refactoring of the
      ALTER/SET OWNER code for databases and tablespaces.
      ee22c55f
    • Alvaro Herrera's avatar
      DROP OWNED: don't try to drop tablespaces/databases · ec41b8ed
      Alvaro Herrera authored
      My "fix" for bugs #7578 and #6116 on DROP OWNED at fe3b5eb0 not only
      misstated that it applied to REASSIGN OWNED (which it did not affect),
      but it also failed to fix the problems fully, because I didn't test the
      case of owned shared objects.  Thus I created a new bug, reported by
      Thomas Kellerer as #7748, which would cause DROP OWNED to fail with a
      not-for-user-consumption error message.  The code would attempt to drop
      the database, which not only fails to work because the underlying code
      does not support that, but is a pretty dangerous and undesirable thing
      to be doing as well.
      
      This patch fixes that bug by having DROP OWNED only attempt to process
      shared objects when grants on them are found, ignoring ownership.
      
      Backpatch to 8.3, which is as far as the previous bug was backpatched.
      ec41b8ed
    • Heikki Linnakangas's avatar
      Handle SPIErrors raised directly in PL/Python code. · 316186f2
      Heikki Linnakangas authored
      If a PL/Python function raises an SPIError (or one if its subclasses)
      directly with python's raise statement, treat it the same as an SPIError
      generated internally. In particular, if the user sets the sqlstate
      attribute, preserve that.
      
      Oskari Saarenmaa and Jan Urbański, reviewed by Karl O. Pinc.
      316186f2
  5. 27 Jan, 2013 1 commit
  6. 26 Jan, 2013 6 commits
    • Tom Lane's avatar
      Make LATERAL implicit for functions in FROM. · 2378d79a
      Tom Lane authored
      The SQL standard does not have general functions-in-FROM, but it does
      allow UNNEST() there (see the <collection derived table> production),
      and the semantics of that are defined to include lateral references.
      So spec compliance requires allowing lateral references within UNNEST()
      even without an explicit LATERAL keyword.  Rather than making UNNEST()
      a special case, it seems best to extend this flexibility to any
      function-in-FROM.  We'll still allow LATERAL to be written explicitly
      for clarity's sake, but it's now a noise word in this context.
      
      In theory this change could result in a change in behavior of existing
      queries, by allowing what had been an outer reference in a function-in-FROM
      to be captured by an earlier FROM-item at the same level.  However, all
      pre-9.3 PG releases have a bug that causes them to match variable
      references to earlier FROM-items in preference to outer references (and
      then throw an error).  So no previously-working query could contain the
      type of ambiguity that would risk a change of behavior.
      
      Per a suggestion from Andrew Gierth, though I didn't use his patch.
      2378d79a
    • Bruce Momjian's avatar
      Update comments in new DROP IF EXISTS code; commit message update · 8865fe0a
      Bruce Momjian authored
      DROP IF EXISTS with a missing schema in commit
      7e2322df applies not only to tables, but
      to DROP IF EXISTS with missing schemas for indexes, views, sequences,
      and foreign tables.  Yeah!
      8865fe0a
    • Bruce Momjian's avatar
      Update LookupExplicitNamespace() comments; commit message update · 51cfb87a
      Bruce Momjian authored
      Also, commit 7e2322df affected DROP
      TABLE IF EXISTS, not CREATE TABLE IF EXISTS.
      51cfb87a
    • Bruce Momjian's avatar
      Issue ERROR if FREEZE mode can't be honored by COPY · 4deb57de
      Bruce Momjian authored
      Previously non-honored FREEZE mode was ignored.  This also issues an
      appropriate error message based on the cause of the failure, per
      suggestion from Tom.  Additional regression test case added.
      4deb57de
    • Bruce Momjian's avatar
      Allow CREATE TABLE IF EXIST so succeed if the schema is nonexistent · 7e2322df
      Bruce Momjian authored
      Previously, CREATE TABLE IF EXIST threw an error if the schema was
      nonexistent.  This was done by passing 'missing_ok' to the function that
      looks up the schema oid.
      7e2322df
    • Bruce Momjian's avatar
      doc: revert 80c20fcf and · 7c83619b
      Bruce Momjian authored
      0e93959a
      
      Revert patch that modified doc index mentions of search_path
      
      Per Peter E.
      7c83619b
  7. 25 Jan, 2013 15 commits
  8. 24 Jan, 2013 3 commits
    • Tom Lane's avatar
      Fix SPI documentation for new handling of ExecutorRun's count parameter. · 2ddc600f
      Tom Lane authored
      Since 9.0, the count parameter has only limited the number of tuples
      actually returned by the executor.  It doesn't affect the behavior of
      INSERT/UPDATE/DELETE unless RETURNING is specified, because without
      RETURNING, the ModifyTable plan node doesn't return control to execMain.c
      for each tuple.  And we only check the limit at the top level.
      
      While this behavioral change was unintentional at the time, discussion of
      bug #6572 led us to the conclusion that we prefer the new behavior anyway,
      and so we should just adjust the docs to match rather than change the code.
      Accordingly, do that.  Back-patch as far as 9.0 so that the docs match the
      code in each branch.
      2ddc600f
    • Andrew Dunstan's avatar
      Use correct output device for Windows prompts. · 1068771a
      Andrew Dunstan authored
      This ensures that mapping of non-ascii prompts
      to the correct code page occurs.
      
      Bug report and original patch from Alexander Law,
      reviewed and reworked by Noah Misch.
      
      Backpatch to all live branches.
      1068771a
    • Bruce Momjian's avatar
      pg_upgrade: detect stale postmaster.pid lock files · a9ceaa53
      Bruce Momjian authored
      If the postmaster.pid lock file exists, try starting/stopping the
      cluster to check if the lock file is valid.
      
      Per request from Tom.
      a9ceaa53