1. 25 Nov, 2010 2 commits
  2. 24 Nov, 2010 3 commits
    • Bruce Momjian's avatar
      Document that a CHECKPOINT before taking a file system snapshot can · 7276ab58
      Bruce Momjian authored
      reduce recovery time.
      7276ab58
    • Bruce Momjian's avatar
      When reporting the server as not responding, if the hostname was · ba11258c
      Bruce Momjian authored
      supplied, also print the IP address.  This allows IPv4 and IPv6 failures
      to be distinguished.  Also useful when a hostname resolves to multiple
      IP addresses.
      
      Also, remove use of inet_ntoa() and use our own inet_net_ntop() in all
      places, including in libpq, because it is thread-safe.
      ba11258c
    • Tom Lane's avatar
      Create the system catalog infrastructure needed for KNNGIST. · 725d52d0
      Tom Lane authored
      This commit adds columns amoppurpose and amopsortfamily to pg_amop, and
      column amcanorderbyop to pg_am.  For the moment all the entries in
      amcanorderbyop are "false", since the underlying support isn't there yet.
      
      Also, extend the CREATE OPERATOR CLASS/ALTER OPERATOR FAMILY commands with
      [ FOR SEARCH | FOR ORDER BY sort_operator_family ] clauses to allow the new
      columns of pg_amop to be populated, and create pg_dump support for dumping
      that information.
      
      I also added some documentation, although it's perhaps a bit premature
      given that the feature doesn't do anything useful yet.
      
      Teodor Sigaev, Robert Haas, Tom Lane
      725d52d0
  3. 23 Nov, 2010 4 commits
  4. 22 Nov, 2010 2 commits
  5. 21 Nov, 2010 2 commits
    • Robert Haas's avatar
    • Robert Haas's avatar
      Add new SQL function, format(text). · 75048707
      Robert Haas authored
      Currently, three conversion format specifiers are supported: %s for a
      string, %L for an SQL literal, and %I for an SQL identifier.  The latter
      two are deliberately designed not to overlap with what sprintf() already
      supports, in case we want to add more of sprintf()'s functionality here
      later.
      
      Patch by Pavel Stehule, heavily revised by me.  Reviewed by Jeff Janes
      and, in earlier versions, by Itagaki Takahiro and Tom Lane.
      75048707
  6. 20 Nov, 2010 8 commits
    • Tom Lane's avatar
      Further cleanup of indxpath logic related to IndexOptInfo.opfamily array. · 89a36841
      Tom Lane authored
      We no longer need the terminating zero entry in opfamily[], so get rid of
      it.  Also replace assorted ad-hoc looping logic with simple for and foreach
      constructs.  This code is now noticeably more readable than it was an hour
      ago; credit to Robert for seeing that it could be simplified.
      89a36841
    • Robert Haas's avatar
      Minor cleanup of indxpath.c. · 99bc012d
      Robert Haas authored
      Eliminate some superfluous notational complexity around
      match_clause_to_indexcol(), and rip out the DoneMatchingIndexKeys
      crock.
      99bc012d
    • Tom Lane's avatar
      Assorted further cleanup for integer-conversion patch. · d1d8462d
      Tom Lane authored
      Avoid depending on LL notation, which is likely to not work in pre-C99
      compilers; don't pointlessly use INT32_MIN/INT64_MIN in code that has
      the numerical value hard-wired into it anyway; remove some gratuitous
      style inconsistencies between pg_ltoa and pg_lltoa; fix int2 test case
      so it actually tests int2.
      d1d8462d
    • Robert Haas's avatar
      Expose quote_literal_cstr() from core. · 4343c0e5
      Robert Haas authored
      This eliminates the need for inefficient implementions of this
      functionality in both contrib/dblink and contrib/tablefunc, so remove
      them.  The upcoming patch implementing an in-core format() function
      will also require this functionality.
      
      In passing, add some regression tests.
      4343c0e5
    • Robert Haas's avatar
    • Robert Haas's avatar
      Attempt to fix breakage caused by signed integer conversion patch. · 815810ed
      Robert Haas authored
      Use INT_MIN rather than INT32_MIN as we do elsewhere in the code, and
      try to work around nonexistence of INT64_MIN if necessary.  Adjust the
      new regression tests to something hopefully saner, per observation by
      Tom Lane.
      815810ed
    • Tom Lane's avatar
      Fix leakage of cost_limit when multiple autovacuum workers are active. · b58c2505
      Tom Lane authored
      When using default autovacuum_vac_cost_limit, autovac_balance_cost relied
      on VacuumCostLimit to contain the correct global value ... but after the
      first time through in a particular worker process, it didn't, because we'd
      trashed it in previous iterations.  Depending on the state of other autovac
      workers, this could result in a steady reduction of the effective
      cost_limit setting as a particular worker processed more and more tables,
      causing it to go slower and slower.  Spotted by Simon Poole (bug #5759).
      Fix by saving and restoring the GUC variables in the loop in do_autovacuum.
      
      In passing, improve a few comments.
      
      Back-patch to 8.3 ... the cost rebalancing code has been buggy since it was
      put in.
      b58c2505
    • Robert Haas's avatar
      Speed up conversion of signed integers to C strings. · 4fc115b2
      Robert Haas authored
      A hand-coded implementation turns out to be much faster than calling
      printf().  In passing, add a few more regresion tests.
      
      Andres Freund, with assorted, mostly cosmetic changes.
      4fc115b2
  7. 19 Nov, 2010 1 commit
    • Tom Lane's avatar
      Improve relation width estimation for subqueries. · 0f61d4dd
      Tom Lane authored
      As per the ancient comment for set_rel_width, it really wasn't much good
      for relations that aren't plain tables: it would never find any stats and
      would always fall back on datatype-based estimates, which are often pretty
      silly.  Fix that by copying up width estimates from the subquery planning
      process.
      
      At some point we might want to do this for CTEs too, but that would be a
      significantly more invasive patch because the sub-PlannerInfo is no longer
      accessible by the time it's needed.  I refrained from doing anything about
      that, partly for fear of breaking the unmerged CTE-related patches.
      
      In passing, also generate less bogus width estimates for whole-row Vars.
      
      Per a gripe from Jon Nelson.
      0f61d4dd
  8. 18 Nov, 2010 7 commits
    • Tom Lane's avatar
      Improve plpgsql's error reporting for no-such-column cases. · fe24d781
      Tom Lane authored
      Given a column reference foo.bar, where there is a composite plpgsql
      variable foo but it doesn't contain a column bar, the pre-9.0 coding would
      immediately throw a "record foo has no field bar" error.  In 9.0 the parser
      hook instead falls through to let the core parser see if it can resolve the
      reference.  If not, you get a complaint about "missing FROM-clause entry
      for table foo", which while in some sense correct isn't terribly helpful.
      Complicate things a bit so that we can throw the old error message if
      neither the core parser nor the hook are able to resolve the column
      reference, while not changing the behavior in any other case.
      Per bug #5757 from Andrey Galkin.
      fe24d781
    • Alvaro Herrera's avatar
      Add pg_describe_object function · 6cc2deb8
      Alvaro Herrera authored
      This function is useful to obtain textual descriptions of objects as
      stored in pg_depend.
      6cc2deb8
    • Tom Lane's avatar
      Dept of second thoughts: don't try to push LIMIT below a SRF. · 48c348f8
      Tom Lane authored
      If we have Limit->Result->Sort, the Result might be projecting a tlist
      that contains a set-returning function.  If so, it's possible for the
      SRF to sometimes return zero rows, which means we could need to fetch
      more than N rows from the Sort in order to satisfy LIMIT N.
      So top-N sorting cannot be used in this scenario.
      48c348f8
    • Robert Haas's avatar
      Minor corrections to dummy_seclabel documentation. · 1fc2d60d
      Robert Haas authored
      Problems noted by Thom Brown.
      1fc2d60d
    • Heikki Linnakangas's avatar
      ecf70b91
    • Tom Lane's avatar
      Further fallout from the MergeAppend patch. · 6fbc323c
      Tom Lane authored
      Fix things so that top-N sorting can be used in child Sort nodes of a
      MergeAppend node, when there is a LIMIT and no intervening joins or
      grouping.  Actually doing this on the executor side isn't too bad,
      but it's a bit messier to get the planner to cost it properly.
      Per gripe from Robert Haas.
      
      In passing, fix an oversight in the original top-N-sorting patch:
      query_planner should not assume that a LIMIT can be used to make an
      explicit sort cheaper when there will be grouping or aggregation in
      between.  Possibly this should be back-patched, but I'm not sure the
      mistake is serious enough to be a real problem in practice.
      6fbc323c
    • Robert Haas's avatar
      Document the dummy_seclabel contrib module. · 45768d10
      Robert Haas authored
      KaiGai Kohei, with editing and markup fixes by me.
      45768d10
  9. 17 Nov, 2010 3 commits
    • Tom Lane's avatar
      Make TRUNCATE ... RESTART IDENTITY restart sequences transactionally. · 511e902b
      Tom Lane authored
      In the previous coding, we simply issued ALTER SEQUENCE RESTART commands,
      which do not roll back on error.  This meant that an error between
      truncating and committing left the sequences out of sync with the table
      contents, with potentially bad consequences as were noted in a Warning on
      the TRUNCATE man page.
      
      To fix, create a new storage file (relfilenode) for a sequence that is to
      be reset due to RESTART IDENTITY.  If the transaction aborts, we'll
      automatically revert to the old storage file.  This acts just like a
      rewriting ALTER TABLE operation.  A penalty is that we have to take
      exclusive lock on the sequence, but since we've already got exclusive lock
      on its owning table, that seems unlikely to be much of a problem.
      
      The interaction of this with usual nontransactional behaviors of sequence
      operations is a bit weird, but it's hard to see what would be completely
      consistent.  Our choice is to discard cached-but-unissued sequence values
      both when the RESTART is executed, and at rollback if any; but to not touch
      the currval() state either time.
      
      In passing, move the sequence reset operations to happen before not after
      any AFTER TRUNCATE triggers are fired.  The previous ordering was not
      logically sensible, but was forced by the need to minimize inconsistency
      if the triggers caused an error.  Transactional rollback is a much better
      solution to that.
      
      Patch by Steve Singer, rather heavily adjusted by me.
      511e902b
    • Peter Eisentraut's avatar
      Additional fixes for parallel make · cfad144f
      Peter Eisentraut authored
      Add some additional dependencies to constrain the build order to prevent
      parallel make from failing.  In the case of src/Makefile, this is likely to be
      too complicated to be worth maintaining, so just add .NOTPARALLEL to get the
      old for-loop-like behavior.
      
      More fine-tuning might be necessary for some platforms or configurations.
      cfad144f
    • Andrew Dunstan's avatar
  10. 16 Nov, 2010 2 commits
    • Magnus Hagander's avatar
      Send paramHandle to subprocesses as 64-bit on Win64 · 4acf99b2
      Magnus Hagander authored
      The handle to the shared memory segment containing startup
      parameters was sent as 32-bit even on 64-bit systems. Since
      HANDLEs appear to be allocated sequentially this shouldn't
      be a problem until we reach 2^32 open handles in the postmaster,
      but a 64-bit value should be sent across as 64-bit, and not
      zero out the top 32 bits.
      
      Noted by Tom Lane.
      4acf99b2
    • Heikki Linnakangas's avatar
      The GiST scan algorithm uses LSNs to detect concurrent pages splits, but · 2edc5cd4
      Heikki Linnakangas authored
      temporary indexes are not WAL-logged. We used a constant LSN for temporary
      indexes, on the assumption that we don't need to worry about concurrent page
      splits in temporary indexes because they're only visible to the current
      session. But that assumption is wrong, it's possible to insert rows and
      split pages in the same session, while a scan is in progress. For example,
      by opening a cursor and fetching some rows, and INSERTing new rows before
      fetching some more.
      
      Fix by generating fake increasing LSNs, used in place of real LSNs in
      temporary GiST indexes.
      2edc5cd4
  11. 15 Nov, 2010 6 commits
    • Tom Lane's avatar
      Fix aboriginal mistake in plpython's set-returning-function support. · add0ea88
      Tom Lane authored
      We must stay in the function's SPI context until done calling the iterator
      that returns the set result.  Otherwise, any attempt to invoke SPI features
      in the python code called by the iterator will malfunction.  Diagnosis and
      patch by Jan Urbanski, per bug report from Jean-Baptiste Quenot.
      
      Back-patch to 8.2; there was no support for SRFs in previous versions of
      plpython.
      add0ea88
    • Robert Haas's avatar
      Add new buffers_backend_fsync field to pg_stat_bgwriter. · 3134d886
      Robert Haas authored
      This new field counts the number of times that a backend which writes a
      buffer out to the OS must also fsync() it.  This happens when the
      bgwriter fsync request queue is full, and is generally detrimental to
      performance, so it's good to know when it's happening.  Along the way,
      log a new message at level DEBUG1 whenever we fail to hand off an fsync,
      so that the problem can also be seen in examination of log files
      (if the logging level is cranked up high enough).
      
      Greg Smith, with minor tweaks by me.
      3134d886
    • Robert Haas's avatar
      Remove outdated comments from the regression test files. · 8d70ed84
      Robert Haas authored
      Since 2004, int2 and int4 operators do detect overflow; this was fixed by
      commit 4171bb86.
      
      Extracted from a larger patch by Andres Freund.
      8d70ed84
    • Robert Haas's avatar
      Fix copy-and-pasteo a little more completely. · 20cf8ae4
      Robert Haas authored
      copydir.c is no longer in src/port
      20cf8ae4
    • Alvaro Herrera's avatar
      Fix copy-and-pasteo. · ae4b17ed
      Alvaro Herrera authored
      ae4b17ed
    • Simon Riggs's avatar
      Avoid spurious Hot Standby conflicts from btree delete records. · 52010027
      Simon Riggs authored
      Similar conflicts were already avoided for related record types.
      Massive over-caution resulted in a usability bug. Clear theoretical
      basis for doing this is now confirmed by me.
      Request to remove from Heikki (twice), over-caution by me.
      52010027