1. 07 May, 2012 1 commit
  2. 06 May, 2012 1 commit
  3. 05 May, 2012 1 commit
  4. 04 May, 2012 1 commit
    • Tom Lane's avatar
      Overdue code review for transaction-level advisory locks patch. · 71b9549d
      Tom Lane authored
      Commit 62c7bd31 had assorted problems, most
      visibly that it broke PREPARE TRANSACTION in the presence of session-level
      advisory locks (which should be ignored by PREPARE), as per a recent
      complaint from Stephen Rees.  More abstractly, the patch made the
      LockMethodData.transactional flag not merely useless but outright
      dangerous, because in point of fact that flag no longer tells you anything
      at all about whether a lock is held transactionally.  This fix therefore
      removes that flag altogether.  We now rely entirely on the convention
      already in use in lock.c that transactional lock holds must be owned by
      some ResourceOwner, while session holds are never so owned.  Setting the
      locallock struct's owner link to NULL thus denotes a session hold, and
      there is no redundant marker for that.
      
      PREPARE TRANSACTION now works again when there are session-level advisory
      locks, and it is also able to transfer transactional advisory locks to the
      prepared transaction, but for implementation reasons it throws an error if
      we hold both types of lock on a single lockable object.  Perhaps it will be
      worth improving that someday.
      
      Assorted other minor cleanup and documentation editing, as well.
      
      Back-patch to 9.1, except that in the 9.1 branch I did not remove the
      LockMethodData.transactional flag for fear of causing an ABI break for
      any external code that might be examining those structs.
      71b9549d
  5. 03 May, 2012 3 commits
    • Peter Eisentraut's avatar
      doc: Fix for too many brackets in command synopses on man pages · 1715ff11
      Peter Eisentraut authored
      The default for the choice attribute of the <arg> element is "opt",
      which would normally put the argument inside brackets.  But the DSSSL
      stylesheets contain a hack that treats <arg> directly inside <group>
      specially, so that <group><arg>-x</arg><arg>-y</arg></group> comes out
      as [ -x | -y ] rather than [ [-x] | [-y] ], which it would technically
      be.  But when building man pages, this doesn't work, and so the
      command synopses on the man pages contain lots of extra brackets.
      
      By putting choice="opt" or choice="plain" explicitly on every <arg>
      and <group> element, we avoid any toolchain dependencies like that,
      and it also makes it clearer in the source code what is meant.
      
      In passing, make some small corrections in the documentation about
      which arguments are really optional or not.
      1715ff11
    • Bruce Momjian's avatar
      Remove BSD/OS (BSDi) port. There are no known users upgrading to · ebcaa5fc
      Bruce Momjian authored
      Postgres 9.2, and perhaps no existing users either.
      ebcaa5fc
    • Bruce Momjian's avatar
  6. 02 May, 2012 9 commits
  7. 01 May, 2012 2 commits
  8. 30 Apr, 2012 6 commits
    • Peter Eisentraut's avatar
      Improve markup of cmdsynopsis elements · 4266509c
      Peter Eisentraut authored
      Add more markup in particular so that the command options appear
      consistently in monospace in the HTML output.
      
      On the vacuumdb reference page, remove listing all the possible
      options in the synopsis.  They have become too many now; we have the
      detailed options list for that.
      4266509c
    • Peter Eisentraut's avatar
      Fix display of <command> elements on man pages · 61c84b47
      Peter Eisentraut authored
      We had changed this from the default bold to monospace for all output
      formats, but for man pages, this creates visual inconsistencies, so
      revert to the default for man pages.
      61c84b47
    • Tom Lane's avatar
      Converge all SQL-level statistics timing values to float8 milliseconds. · 809e7e21
      Tom Lane authored
      This patch adjusts the core statistics views to match the decision already
      taken for pg_stat_statements, that values representing elapsed time should
      be represented as float8 and measured in milliseconds.  By using float8,
      we are no longer tied to a specific maximum precision of timing data.
      (Internally, it's still microseconds, but we could now change that without
      needing changes at the SQL level.)
      
      The columns affected are
      pg_stat_bgwriter.checkpoint_write_time
      pg_stat_bgwriter.checkpoint_sync_time
      pg_stat_database.blk_read_time
      pg_stat_database.blk_write_time
      pg_stat_user_functions.total_time
      pg_stat_user_functions.self_time
      pg_stat_xact_user_functions.total_time
      pg_stat_xact_user_functions.self_time
      
      The first four of these are new in 9.2, so there is no compatibility issue
      from changing them.  The others require a release note comment that they
      are now double precision (and can show a fractional part) rather than
      bigint as before; also their underlying statistics functions now match
      the column definitions, instead of returning bigint microseconds.
      809e7e21
    • Peter Eisentraut's avatar
      Mark ReThrowError() with attribute noreturn · 26471a51
      Peter Eisentraut authored
      All related functions were already so marked.
      26471a51
    • Robert Haas's avatar
      Remove duplicate word in comment. · 0d2235a2
      Robert Haas authored
      Noted by Peter Geoghegan.
      0d2235a2
    • Bruce Momjian's avatar
  9. 29 Apr, 2012 6 commits
  10. 28 Apr, 2012 3 commits
    • Tom Lane's avatar
      Adjust timing units in pg_stat_statements. · 93f94e35
      Tom Lane authored
      Display total time and I/O timings in milliseconds, for consistency with
      the units used for timings in the core statistics views.  The columns
      remain of float8 type, so that sub-msec precision is available.  (At some
      point we will probably want to convert the core views to use float8 type
      for the same reason, but this patch does not touch that issue.)
      
      This is a release-note-requiring change in the meaning of the total_time
      column.  The I/O timing columns are new as of 9.2, so there is no
      compatibility impact from redefining them.
      
      Do some minor copy-editing in the documentation, too.
      93f94e35
    • Tom Lane's avatar
      Clear I/O timing counters after sending them to the stats collector. · cdbad241
      Tom Lane authored
      This oversight caused the reported times to accumulate in an O(N^2)
      fashion the longer a backend runs.
      cdbad241
    • Peter Eisentraut's avatar
  11. 27 Apr, 2012 4 commits
    • Tom Lane's avatar
      Fix printing of whole-row Vars at top level of a SELECT targetlist. · d6f7d4fd
      Tom Lane authored
      Normally whole-row Vars are printed as "tabname.*".  However, that does not
      work at top level of a targetlist, because per SQL standard the parser will
      think that the "*" should result in column-by-column expansion; which is
      not at all what a whole-row Var implies.  We used to just print the table
      name in such cases, which works most of the time; but it fails if the table
      name matches a column name available anywhere in the FROM clause.  This
      could lead for instance to a view being interpreted differently after dump
      and reload.  Adding parentheses doesn't fix it, but there is a reasonably
      simple kluge we can use instead: attach a no-op cast, so that the "*" isn't
      syntactically at top level anymore.  This makes the printing of such
      whole-row Vars a lot more consistent with other Vars, and may indeed fix
      more cases than just the reported one; I'm suspicious that cases involving
      schema qualification probably didn't work properly before, either.
      
      Per bug report and fix proposal from Abbas Butt, though this patch is quite
      different in detail from his.
      
      Back-patch to all supported versions.
      d6f7d4fd
    • Bruce Momjian's avatar
      Add options to git_changelog for use in major release note creation: · 993ce4e6
      Bruce Momjian authored
      	--details-after
      	--master-only
      	--oldest-first
      993ce4e6
    • Tom Lane's avatar
      Fix syslogger's rotation disable/re-enable logic. · 537b2669
      Tom Lane authored
      If it fails to open a new log file, the syslogger assumes there's something
      wrong with its parameters (such as log_directory), and stops attempting
      automatic time-based or size-based log file rotations.  Sending it SIGHUP
      is supposed to start that up again.  However, the original coding for that
      was really bogus, involving clobbering a couple of GUC variables and hoping
      that SIGHUP processing would restore them.  Get rid of that technique in
      favor of maintaining a separate flag showing we've turned rotation off.
      Per report from Mark Kirkwood.
      
      Also, the syslogger will automatically attempt to create the log_directory
      directory if it doesn't exist, but that was only happening at startup.
      For consistency and ease of use, it should do the same whenever the value
      of log_directory is changed by SIGHUP.
      
      Back-patch to all supported branches.
      537b2669
    • Robert Haas's avatar
      Prevent index-only scans from returning wrong answers under Hot Standby. · 3424bff9
      Robert Haas authored
      The alternative of disallowing index-only scans in HS operation was
      discussed, but the consensus was that it was better to treat marking
      a page all-visible as a recovery conflict for snapshots that could still
      fail to see XIDs on that page.  We may in the future try to soften this,
      so that we simply force index scans to do heap fetches in cases where
      this may be an issue, rather than throwing a hard conflict.
      3424bff9
  12. 26 Apr, 2012 3 commits
    • Tom Lane's avatar
      Improve documentation around historical calendar rules. · 92df2203
      Tom Lane authored
      Get rid of section 8.5.6 (Date/Time Internals), which appears to confuse
      people more than it helps, and anyway discussion of Postgres' internal
      datetime calculation methods seems pretty out of place here.  Instead,
      make datatype.sgml just say that we follow the Gregorian calendar (a bit
      of specification not previously present anywhere in that chapter :-()
      and link to the History of Units appendix for more info.  Do some mild
      editorialization on that appendix, too, to make it clearer that we are
      following proleptic Gregorian calendar rules rather than anything more
      historically accurate.
      
      Per a question from Florence Cousin and subsequent discussion in
      pgsql-docs.
      92df2203
    • Tom Lane's avatar
      Fix oversight in recent parameterized-path patch. · 7c85aa39
      Tom Lane authored
      bitmap_scan_cost_est() has to be able to cope with a BitmapOrPath, but
      I'd taken a shortcut that didn't work for that case.  Noted by Heikki.
      Add some regression tests since this area is evidently under-covered.
      7c85aa39
    • Peter Eisentraut's avatar
      PL/Python: Accept strings in functions returning composite types · ba3e4157
      Peter Eisentraut authored
      Before 9.1, PL/Python functions returning composite types could return
      a string and it would be parsed using record_in.  The 9.1 changes made
      PL/Python only expect dictionaries, tuples, or objects supporting
      getattr as output of composite functions, resulting in a regression
      and a confusing error message, as the strings were interpreted as
      sequences and the code for transforming lists to database tuples was
      used.  Fix this by treating strings separately as before, before
      checking for the other types.
      
      The reason why it's important to support string to database tuple
      conversion is that trigger functions on tables with composite columns
      get the composite row passed in as a string (from record_out).
      Without supporting converting this back using record_in, this makes it
      impossible to implement pass-through behavior for these columns, as
      PL/Python no longer accepts strings for composite values.
      
      A better solution would be to fix the code that transforms composite
      inputs into Python objects to produce dictionaries that would then be
      correctly interpreted by the Python->PostgreSQL counterpart code.  But
      that would be too invasive to backpatch to 9.1, and it is too late in
      the 9.2 cycle to attempt it.  It should be revisited in the future,
      though.
      
      Reported as bug #6559 by Kirill Simonov.
      
      Jan Urbański
      ba3e4157