1. 01 Jun, 2010 5 commits
  2. 31 May, 2010 7 commits
  3. 30 May, 2010 3 commits
    • Tom Lane's avatar
      Fix misuse of Lossy Counting (LC) algorithm in compute_tsvector_stats(). · bc0f0809
      Tom Lane authored
      We must filter out hashtable entries with frequencies less than those
      specified by the algorithm, else we risk emitting junk entries whose
      actual frequency is much less than other lexemes that did not get
      tabulated.  This is bad enough by itself, but even worse is that
      tsquerysel() believes that the minimum frequency seen in pg_statistic is a
      hard upper bound for lexemes not included, and was thus underestimating
      the frequency of non-MCEs.
      
      Also, set the threshold frequency to something with a little bit of theory
      behind it, to wit assume that the input distribution is approximately
      Zipfian.  This might need adjustment in future, but some preliminary
      experiments suggest that it's not too unreasonable.
      
      Back-patch to 8.4, where this code was introduced.
      
      Jan Urbanski, with some editorialization by Tom
      bc0f0809
    • Tom Lane's avatar
      Change the notation for calling functions with named parameters from · b12b7a90
      Tom Lane authored
      "val AS name" to "name := val", as per recent discussion.
      
      This patch catches everything in the original named-parameters patch,
      but I'm not certain that no other dependencies snuck in later (grepping
      the source tree for all uses of AS soon proved unworkable).
      
      In passing I note that we've dropped the ball at least once on keeping
      ecpg's lexer (as opposed to parser) in sync with the backend.  It would
      be a good idea to go through all of pgc.l and see if it's in sync now.
      I didn't attempt that at the moment.
      b12b7a90
    • Bruce Momjian's avatar
  4. 29 May, 2010 4 commits
  5. 28 May, 2010 7 commits
    • Tom Lane's avatar
      Abort a FETCH_COUNT-controlled query if we observe any I/O error on the · 47d6d448
      Tom Lane authored
      output stream.  This typically indicates that the user quit out of $PAGER,
      or that we are writing to a file and ran out of disk space.  In either case
      we shouldn't bother to continue fetching data.
      
      Stephen Frost
      47d6d448
    • Tom Lane's avatar
      Fix oversight in the previous patch that made LIKE throw error for \ at the · ece869b1
      Tom Lane authored
      end of the pattern: the code path that handles \ just after % should throw
      error too.  As in the previous patch, not back-patching for fear of breaking
      apps that worked before.
      ece869b1
    • Bruce Momjian's avatar
      Document use of VPATH builds. · 9b94e369
      Bruce Momjian authored
      David Fetter
      9b94e369
    • Tom Lane's avatar
      Rewrite LIKE's %-followed-by-_ optimization so it really works (this time · dbde97cd
      Tom Lane authored
      for sure ;-)).  It now also optimizes more cases, such as %_%_.  Improve
      comments too.  Per bug #5478.
      
      In passing, also rename the TCHAR macro to GETCHAR, because pgindent is
      messing with the formatting of the former (apparently it now thinks TCHAR
      is a typedef name).
      
      Back-patch to 8.3, where the bug was introduced.
      dbde97cd
    • Itagaki Takahiro's avatar
      PGDLLEXPORT is __declspec (dllexport) only on MSVC, · e54b0cba
      Itagaki Takahiro authored
      but is __declspec (dllimport) on other compilers
      because cygwin and mingw don't like dllexport.
      e54b0cba
    • Heikki Linnakangas's avatar
      Update High Availability docs. Clarify terms master/primary standby/slave, · fe76f93d
      Heikki Linnakangas authored
      move two paragraphs that apply to log shipping in general from the
      "Alternative method for log shipping" section to the earlier sections.
      Add varname tags where missing. Some small wording changes.
      fe76f93d
    • Tom Lane's avatar
      Rejigger mergejoin logic so that a tuple with a null in the first merge column · f39d57b8
      Tom Lane authored
      is treated like end-of-input, if nulls sort last in that column and we are not
      doing outer-join filling for that input.  In such a case, the tuple cannot
      join to anything from the other input (because we assume mergejoinable
      operators are strict), and neither can any tuple following it in the sort
      order.  If we're not interested in doing outer-join filling we can just
      pretend the tuple and its successors aren't there at all.  This can save a
      great deal of time in situations where there are many nulls in the join
      column, as in a recent example from Scott Marlowe.  Also, since the planner
      tends to not count nulls in its mergejoin scan selectivity estimates, this
      is an important fix to make the runtime behavior more like the estimate.
      
      I regard this as an omission in the patch I wrote years ago to teach mergejoin
      that tuples containing nulls aren't joinable, so I'm back-patching it.  But
      only to 8.3 --- in older versions, we didn't have a solid notion of whether
      nulls sort high or low, so attempting to apply this optimization could break
      things.
      f39d57b8
  6. 27 May, 2010 8 commits
    • Tom Lane's avatar
      Change ps_status.c to explicitly track the current logical length of ps_buffer. · ede50726
      Tom Lane authored
      This saves cycles in get_ps_display() on many popular platforms, and more
      importantly ensures that get_ps_display() will correctly return an empty
      string if init_ps_display() hasn't been called yet.  Per trouble report
      from Ray Stell, in which log_line_prefix %i produced junk early in backend
      startup.
      
      Back-patch to 8.0.  7.4 doesn't have %i and its version of get_ps_display()
      makes no pretense of avoiding pad junk anyhow.
      ede50726
    • Peter Eisentraut's avatar
    • Tom Lane's avatar
      Fix the volatility marking of textanycat() and anytextcat(): they were marked · c82d931d
      Tom Lane authored
      immutable, but that is wrong in general because the cast from the polymorphic
      argument to text could be stable or even volatile.  Mark them volatile for
      safety.  In the typical case where the cast isn't volatile, the planner will
      deduce the correct expression volatility after inlining the function, so
      performance is not lost.  The just-committed fix in CREATE INDEX also ensures
      this won't break any indexing cases that ought to be allowed.
      
      Per discussion, I'm not bumping catversion for this change, as it doesn't
      seem critical enough to force an initdb on beta testers.
      c82d931d
    • Tom Lane's avatar
      Make CREATE INDEX run expression preprocessing on a proposed index expression · 5a86e5e1
      Tom Lane authored
      before it checks whether the expression is immutable.  This covers two cases
      that were previously handled poorly:
      
      1. SQL function inlining could reduce the apparent volatility of the
      expression, allowing an expression to be accepted where it previously would
      not have been.  As an example, polymorphic functions must be marked with the
      worst-case volatility they have for any argument type, but for specific
      argument types they might not be so volatile, so indexing could be allowed.
      (Since the planner will refuse to inline functions in cases where the
      apparent volatility of the expression would increase, this won't break
      any cases that were accepted before.)
      
      2. A nominally immutable function could have default arguments that are
      volatile expressions.  In such a case insertion of the defaults will increase
      both the apparent and actual volatility of the expression, so it is
      *necessary* to check this before allowing the expression to be indexed.
      
      Back-patch to 8.4, where default arguments were introduced.
      5a86e5e1
    • Itagaki Takahiro's avatar
      Mark PG_MODULE_MAGIC and PG_FUNCTION_INFO_V1 with PGDLLEXPORT · 77e50a61
      Itagaki Takahiro authored
      independently from BUILDING_DLL. It is always __declspec(dllexport).
      77e50a61
    • Heikki Linnakangas's avatar
      Make it more clear that you need to release savepoint with · aa5bec67
      Heikki Linnakangas authored
      RELEASE SAVEPOINT to make an older savepoint with the same name
      accessible. It's also possible to implicitly release the savepoint by
      rolling back to an earlier savepoint, but mentioning that too would make
      the note just more verbose and confusing.
      aa5bec67
    • Robert Haas's avatar
      Avoid starting walreceiver in states where it shouldn't be running. · 5e85315e
      Robert Haas authored
      In particular, it's bad to start walreceiver when in state
      PM_WAIT_BACKENDS, because we have no provision to kill walreceiver
      when in that state.
      
      Fujii Masao
      5e85315e
    • Heikki Linnakangas's avatar
      c5bd8fea
  7. 26 May, 2010 6 commits
    • Bruce Momjian's avatar
      Fix SGML markup · f495020e
      Bruce Momjian authored
      f495020e
    • Tom Lane's avatar
      Improve SSL-related documentation. Explain how to deal with certificate · 1e6b654e
      Tom Lane authored
      chains, do assorted wordsmithing.
      1e6b654e
    • Bruce Momjian's avatar
    • Heikki Linnakangas's avatar
      Thinko in previous commit: ensure that MAX_SEND_SIZE is always greater · fbcdff39
      Heikki Linnakangas authored
      than XLOG_BLCKSZ, by defining it as 16 * XLOG_BLCKSZ rather than directly
      as 128k bytes.
      fbcdff39
    • Heikki Linnakangas's avatar
      In walsender, don't sleep if there's outstanding WAL waiting to be sent, · ea551608
      Heikki Linnakangas authored
      otherwise we effectively rate-limit the streaming as pointed out by
      Simon Riggs. Also, send the WAL in smaller chunks, to respond to signals
      more promptly.
      ea551608
    • Tom Lane's avatar
      Rearrange libpq's SSL initialization to simplify it and make it handle some · 4ed4b6c5
      Tom Lane authored
      additional cases correctly.  The original coding failed to load additional
      (chain) certificates from the client cert file, meaning that indirectly signed
      client certificates didn't work unless one hacked the server's root.crt file
      to include intermediate CAs (not the desired approach).  Another problem was
      that everything got loaded into the shared SSL_context object, which meant
      that concurrent connections trying to use different sslcert settings could
      well fail due to conflicting over the single available slot for a keyed
      certificate.
      
      To fix, get rid of the use of SSL_CTX_set_client_cert_cb(), which is
      deprecated anyway in the OpenSSL documentation, and instead just
      unconditionally load the client cert and private key during connection
      initialization.  This lets us use SSL_CTX_use_certificate_chain_file(),
      which does the right thing with additional certs, and is lots simpler than
      the previous hacking about with BIO-level access.  A small disadvantage is
      that we have to load the primary client cert a second time with
      SSL_use_certificate_file, so that that one ends up in the correct slot
      within the connection's SSL object where it can get paired with the key.
      Given the other overhead of making an SSL connection, that doesn't seem
      worth worrying about.
      
      Per discussion ensuing from bug #5468.
      4ed4b6c5