1. 16 5月, 2015 8 次提交
    • S
      TABLESAMPLE system_time(limit) · 149f6f15
      Simon Riggs 提交于
      Contrib module implementing a tablesample method
      that allows you to limit the sample by a hard time
      limit.
      
      Petr Jelinek
      
      Reviewed by Michael Paquier, Amit Kapila and
      Simon Riggs
      149f6f15
    • S
      TABLESAMPLE system_rows(limit) · 9689290f
      Simon Riggs 提交于
      Contrib module implementing a tablesample method
      that allows you to limit the sample by a hard row
      limit.
      
      Petr Jelinek
      
      Reviewed by Michael Paquier, Amit Kapila and
      Simon Riggs
      9689290f
    • T
      Extend GB18030 encoding conversion to cover full Unicode range. · 8d3e0906
      Tom Lane 提交于
      Our previous code for GB18030 <-> UTF8 conversion only covered Unicode code
      points up to U+FFFF, but the actual spec defines conversions for all code
      points up to U+10FFFF.  That would be rather impractical as a lookup table,
      but fortunately there is a simple algorithmic conversion between the
      additional code points and the equivalent GB18030 byte patterns.  Make use
      of the just-added callback facility in LocalToUtf/UtfToLocal to perform the
      additional conversions.
      
      Having created the infrastructure to do that, we can use the same code to
      map certain linearly-related subranges of the Unicode space below U+FFFF,
      allowing removal of the corresponding lookup table entries.  This more
      than halves the lookup table size, which is a substantial savings;
      utf8_and_gb18030.so drops from nearly a megabyte to about half that.
      
      In support of doing that, replace ISO10646-GB18030.TXT with the data file
      gb-18030-2000.xml (retrieved from
      http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/ )
      in which these subranges have been deleted from the simple lookup entries.
      
      Per bug #12845 from Arjen Nienhuis.  The conversion code added here is
      based on his proposed patch, though I whacked it around rather heavily.
      8d3e0906
    • R
      doc: CREATE FOREIGN TABLE now allows CHECK ( ... ) NO INHERIT · 92edba26
      Robert Haas 提交于
      Etsuro Fujita
      92edba26
    • S
      TABLESAMPLE, SQL Standard and extensible · f6d208d6
      Simon Riggs 提交于
      Add a TABLESAMPLE clause to SELECT statements that allows
      user to specify random BERNOULLI sampling or block level
      SYSTEM sampling. Implementation allows for extensible
      sampling functions to be written, using a standard API.
      Basic version follows SQLStandard exactly. Usable
      concrete use cases for the sampling API follow in later
      commits.
      
      Petr Jelinek
      
      Reviewed by Michael Paquier and Simon Riggs
      f6d208d6
    • H
      Silence another create_index regression test failure. · 11a83bbe
      Heikki Linnakangas 提交于
      More platform differences in the less-significant digits in output.
      
      Per buildfarm member rover_firefly, still.
      11a83bbe
    • T
      Fix outdated src/test/mb/ tests, and add a GB18030 test. · 07af5238
      Tom Lane 提交于
      The expected-output files for these tests were broken by the recent
      addition of a warning for hash indexes.  Update them.
      
      Also add a test case for GB18030 encoding, similar to the other ones.
      This is a pretty weak test, but it's better than nothing.
      07af5238
    • H
      Fix docs build. Oops. · 8b0f105d
      Heikki Linnakangas 提交于
      8b0f105d
  2. 15 5月, 2015 21 次提交
    • H
      Add archive_mode='always' option. · ffd37740
      Heikki Linnakangas 提交于
      In 'always' mode, the standby independently archives all files it receives
      from the primary.
      
      Original patch by Fujii Masao, docs and review by me.
      ffd37740
    • B
      docs: consistently uppercase index method and add spacing · f6d65f0c
      Bruce Momjian 提交于
      Consistently uppercase index method names, e.g. GIN, and add space after
      the index method name and the parentheses enclosing the column names.
      f6d65f0c
    • H
      Silence create_index regression test failure. · 9feaba28
      Heikki Linnakangas 提交于
      The expected output contained some floating point values which might get
      rounded slightly differently on different platforms. The exact output isn't
      very interesting in this test, so just round it.
      
      Per buildfarm member rover_firefly.
      9feaba28
    • H
      Fix datatype confusion with the new lossy GiST distance functions. · 98edd617
      Heikki Linnakangas 提交于
      We can only support a lossy distance function when the distance function's
      datatype is comparable with the original ordering operator's datatype.
      The distance function always returns a float8, so we are limited to float8,
      and float4 (by a hard-coded cast of the float8 to float4).
      
      In light of this limitation, it seems like a good idea to have a separate
      'recheck' flag for the ORDER BY expressions, so that if you have a non-lossy
      distance function, it still works with lossy quals. There are cases like
      that with the build-in or contrib opclasses, but it's plausible.
      
      There was a hidden assumption that the ORDER BY values returned by GiST
      match the original ordering operator's return type, but there are plenty
      of examples where that's not true, e.g. in btree_gist and pg_trgm. As long
      as the distance function is not lossy, we can tolerate that and just not
      return the distance to the executor (or rather, always return NULL). The
      executor doesn't need the distances if there are no lossy results.
      
      There was another little bug: the recheck variable was not initialized
      before calling the distance function. That revealed the bigger issue,
      as the executor tried to reorder tuples that didn't need reordering, and
      that failed because of the datatype mismatch.
      98edd617
    • T
      Fix insufficiently-paranoid GB18030 encoding verifier. · a868931f
      Tom Lane 提交于
      The previous coding effectively only verified that the second byte of a
      multibyte character was in the expected range; moreover, it wasn't careful
      to make sure that the second byte even exists in the buffer before touching
      it.  The latter seems unlikely to cause any real problems in the field
      (in particular, it could never be a problem with null-terminated input),
      but it's still a bug.
      
      Since GB18030 is not a supported backend encoding, the only thing we'd
      really be doing with GB18030 text is converting it to UTF8 in LocalToUtf,
      which would fail anyway on any invalid character for lack of a match in
      its lookup table.  So the only user-visible consequence of this change
      should be that you'll get "invalid byte sequence for encoding" rather than
      "character has no equivalent" for malformed GB18030 input.  However,
      impending changes to the GB18030 conversion code will require these tighter
      up-front checks to avoid producing bogus results.
      a868931f
    • S
      Remove useless pg_audit.conf · aff27e33
      Stephen Frost 提交于
      No need to have pg_audit.conf any longer since the regression tests are
      just loading the module at the start of each session (to simulate being
      in shared_preload_libraries, which isn't something we can actually make
      happen on the buildfarm itself, it seems).
      
      Pointed out by Tom
      aff27e33
    • F
      Support --verbose option in reindexdb. · 458a0770
      Fujii Masao 提交于
      Sawada Masahiko, reviewed by Fabrízio Mello
      458a0770
    • H
      Allow GiST distance function to return merely a lower-bound. · 35fcb1b3
      Heikki Linnakangas 提交于
      The distance function can now set *recheck = false, like index quals. The
      executor will then re-check the ORDER BY expressions, and use a queue to
      reorder the results on the fly.
      
      This makes it possible to do kNN-searches on polygons and circles, which
      don't store the exact value in the index, but just a bounding box.
      
      Alexander Korotkov and me
      35fcb1b3
    • F
      Support VERBOSE option in REINDEX command. · ecd222e7
      Fujii Masao 提交于
      When this option is specified, a progress report is printed as each index
      is reindexed.
      
      Per discussion, we agreed on the following syntax for the extensibility of
      the options.
      
          REINDEX (flexible options) { INDEX | ... } name
      
      Sawada Masahiko.
      Reviewed by Robert Haas, Fabrízio Mello, Alvaro Herrera, Kyotaro Horiguchi,
      Jim Nasby and me.
      
      Discussion: CAD21AoA0pK3YcOZAFzMae+2fcc3oGp5zoRggDyMNg5zoaWDhdQ@mail.gmail.com
      ecd222e7
    • T
      Honor traditional SGML NAMELEN limit. · 4b8f797f
      Tom Lane 提交于
      We've conformed to this limit in the past, so might as well continue to.
      
      Aaron Swenson
      4b8f797f
    • T
      Teach UtfToLocal/LocalToUtf to support algorithmic encoding conversions. · 7730f48e
      Tom Lane 提交于
      Until now, these functions have only supported encoding conversions using
      lookup tables, which is fine as long as there's not too many code points
      to convert.  However, GB18030 expects all 1.1 million Unicode code points
      to be convertible, which would require a ridiculously-sized lookup table.
      Fortunately, a large fraction of those conversions can be expressed through
      arithmetic, ie the conversions are one-to-one in certain defined ranges.
      To support that, provide a callback function that is used after consulting
      the lookup tables.  (This patch doesn't actually change anything about the
      GB18030 conversion behavior, just provide infrastructure for fixing it.)
      
      Since this requires changing the APIs of UtfToLocal/LocalToUtf anyway,
      take the opportunity to rearrange their argument lists into what seems
      to me a saner order.  And beautify the call sites by using lengthof()
      instead of error-prone sizeof() arithmetic.
      
      In passing, also mark all the lookup tables used by these calls "const".
      This moves an impressive amount of stuff into the text segment, at least
      on my machine, and is safer anyhow.
      7730f48e
    • S
      Separate block sampling functions · 83e176ec
      Simon Riggs 提交于
      Refactoring ahead of tablesample patch
      
      Requested and reviewed by Michael Paquier
      
      Petr Jelinek
      83e176ec
    • B
      pg_upgrade: make controldata checks more consistent · 5a3022fd
      Bruce Momjian 提交于
      Also add missing float8_pass_by_value check.
      5a3022fd
    • P
      Add pg_settings.pending_restart column · a486e357
      Peter Eisentraut 提交于
      with input from David G. Johnston, Robert Haas, Michael Paquier
      a486e357
    • B
      doc: list bigint as mapping to int8 and int64 · 333a870f
      Bruce Momjian 提交于
      Report by Paul Jungwirth
      333a870f
    • S
      Make repeated 'make installcheck' runs work · b22b7706
      Stephen Frost 提交于
      In pg_audit, set client_min_messages up to warning, then reset the role
      attributes, to completely reset the session while not making the
      regression tests depend on being run by any particular user.
      b22b7706
    • S
      Improve pg_audit regression tests · ed6ea8e8
      Stephen Frost 提交于
      Instead of creating a new superuser role, extract out what the current
      user is and use that user instead.  Further, clean up and drop all
      objects created by the regression test.
      
      Pointed out by Tom.
      ed6ea8e8
    • T
      Docs: fix erroneous claim about max byte length of GB18030. · 333d0779
      Tom Lane 提交于
      This encoding has characters up to 4 bytes long, not 2.
      333d0779
    • T
      Fix portability issue in pg_audit. · 35a1e1d1
      Tom Lane 提交于
      "%ld" is not a portable way to print int64's.  This may explain the
      buildfarm crashes we're seeing --- it seems to make dromedary happy,
      at least.
      35a1e1d1
    • T
      Suppress uninitialized-variable warning. · 6c9e93d3
      Tom Lane 提交于
      6c9e93d3
    • T
      Support "expanded" objects, particularly arrays, for better performance. · 1dc5ebc9
      Tom Lane 提交于
      This patch introduces the ability for complex datatypes to have an
      in-memory representation that is different from their on-disk format.
      On-disk formats are typically optimized for minimal size, and in any case
      they can't contain pointers, so they are often not well-suited for
      computation.  Now a datatype can invent an "expanded" in-memory format
      that is better suited for its operations, and then pass that around among
      the C functions that operate on the datatype.  There are also provisions
      (rudimentary as yet) to allow an expanded object to be modified in-place
      under suitable conditions, so that operations like assignment to an element
      of an array need not involve copying the entire array.
      
      The initial application for this feature is arrays, but it is not hard
      to foresee using it for other container types like JSON, XML and hstore.
      I have hopes that it will be useful to PostGIS as well.
      
      In this initial implementation, a few heuristics have been hard-wired
      into plpgsql to improve performance for arrays that are stored in
      plpgsql variables.  We would like to generalize those hacks so that
      other datatypes can obtain similar improvements, but figuring out some
      appropriate APIs is left as a task for future work.  (The heuristics
      themselves are probably not optimal yet, either, as they sometimes
      force expansion of arrays that would be better left alone.)
      
      Preliminary performance testing shows impressive speed gains for plpgsql
      functions that do element-by-element access or update of large arrays.
      There are other cases that get a little slower, as a result of added array
      format conversions; but we can hope to improve anything that's annoyingly
      bad.  In any case most applications should see a net win.
      
      Tom Lane, reviewed by Andres Freund
      1dc5ebc9
  3. 14 5月, 2015 9 次提交
    • S
      Further fixes for the buildfarm for pg_audit · 8a2e1edd
      Stephen Frost 提交于
      Also, use a function to load the extension ahead of all other calls,
      simulating load from shared_libraries_preload, to make sure the
      hooks are in place before logging start.
      8a2e1edd
    • S
      Further fixes for the buildfarm for pg_audit · c703b1e6
      Stephen Frost 提交于
      The database built by the buildfarm is specific to the extension, use
      \connect - instead.
      c703b1e6
    • S
      Fix buildfarm with regard to pg_audit · dfb7624a
      Stephen Frost 提交于
      Remove the check that pg_audit be installed by
      shared_preload_libraries as that's not going to work when running the
      regressions tests in the buildfarm.  That check was primairly a nice to
      have and isn't required anyway.
      dfb7624a
    • S
      Add pg_audit, an auditing extension · ac52bb04
      Stephen Frost 提交于
      This extension provides detailed logging classes, ability to control
      logging at a per-object level, and includes fully-qualified object
      names for logged statements (DML and DDL) in independent fields of the
      log output.
      
      Authors: Ian Barwick, Abhijit Menon-Sen, David Steele
      Reviews by: Robert Haas, Tatsuo Ishii, Sawada Masahiko, Fujii Masao,
      Simon Riggs
      
      Discussion with: Josh Berkus, Jaime Casanova, Peter Eisentraut,
      David Fetter, Yeb Havinga, Alvaro Herrera, Petr Jelinek, Tom Lane,
      MauMau, Bruce Momjian, Jim Nasby, Michael Paquier,
      Fabrízio de Royes Mello, Neil Tiffin
      ac52bb04
    • T
      Fix distclean/maintainer-clean targets to remove top-level tmp_install dir. · 9660710e
      Tom Lane 提交于
      The top-level makefile removes tmp_install in its "clean" target, but the
      distclean and maintainer-clean targets overlooked that (and they don't
      simply invoke clean, because that would result in an extra tree traversal).
      
      While at it, let's just make sure that removing GNUmakefile itself is the
      very last step of the recipe.
      9660710e
    • R
      Fix comment. · 61f68e0b
      Robert Haas 提交于
      Commit 78efd5c1 overlooked this.
      
      Report by Peter Geoghegan.
      61f68e0b
    • R
      Extend abbreviated key infrastructure to datum tuplesorts. · 78efd5c1
      Robert Haas 提交于
      Andrew Gierth, reviewed by Peter Geoghegan and by me.
      78efd5c1
    • T
      Fix postgres_fdw to return the right ctid value in EvalPlanQual cases. · 0bb8528b
      Tom Lane 提交于
      If a postgres_fdw foreign table is a non-locked source relation in an
      UPDATE, DELETE, or SELECT FOR UPDATE/SHARE, and the query selects its
      ctid column, the wrong value would be returned if an EvalPlanQual
      recheck occurred.  This happened because the foreign table's result row
      was copied via the ROW_MARK_COPY code path, and EvalPlanQualFetchRowMarks
      just unconditionally set the reconstructed tuple's t_self to "invalid".
      
      To fix that, we can have EvalPlanQualFetchRowMarks copy the composite
      datum's t_ctid field, and be sure to initialize that along with t_self
      when postgres_fdw constructs a tuple to return.
      
      If we just did that much then EvalPlanQualFetchRowMarks would start
      returning "(0,0)" as ctid for all other ROW_MARK_COPY cases, which perhaps
      does not matter much, but then again maybe it might.  The cause of that is
      that heap_form_tuple, which is the ultimate source of all composite datums,
      simply leaves t_ctid as zeroes in newly constructed tuples.  That seems
      like a bad idea on general principles: a field that's really not been
      initialized shouldn't appear to have a valid value.  So let's eat the
      trivial additional overhead of doing "ItemPointerSetInvalid(&(td->t_ctid))"
      in heap_form_tuple.
      
      This closes out our handling of Etsuro Fujita's report that tableoid and
      ctid weren't correctly set in postgres_fdw EvalPlanQual cases.  Along the
      way we did a great deal of work to improve FDWs' ability to control row
      locking behavior; which was not wasted effort by any means, but it didn't
      end up being a fix for this problem because that feature would be too
      expensive for postgres_fdw to use all the time.
      
      Although the fix for the tableoid misbehavior was back-patched, I'm
      hesitant to do so here; it seems far less likely that people would care
      about remote ctid than tableoid, and even such a minor behavioral change
      as this in heap_form_tuple is perhaps best not back-patched.  So commit
      to HEAD only, at least for the moment.
      
      Etsuro Fujita, with some adjustments by me
      0bb8528b
    • A
      Fix jsonb replace and delete on scalars and empty structures · 3f2cec79
      Andrew Dunstan 提交于
      These operations now error out if attempted on scalars, and simply
      return the input if attempted on empty arrays or objects. Along the way
      we remove the unnecessary cloning of the input when it's known to be
      unchanged. Regression tests covering these cases are added.
      3f2cec79
  4. 13 5月, 2015 2 次提交
    • R
      Remove useless assertion. · ae615716
      Robert Haas 提交于
      Here, snapshot->xcnt is an unsigned type, so it will always be
      non-negative.
      ae615716
    • A
      Add pgstattuple_approx() to the pgstattuple extension. · 5850b20f
      Andres Freund 提交于
      The new function allows to estimate bloat and other table level statics
      in a faster, but approximate, way. It does so by using information from
      the free space map for pages marked as all visible in the visibility
      map. The rest of the table is actually read and free space/bloat is
      measured accurately.  In many cases that allows to get bloat information
      much quicker, causing less IO.
      
      Author: Abhijit Menon-Sen
      Reviewed-By: Andres Freund, Amit Kapila and Tomas Vondra
      Discussion: 20140402214144.GA28681@kea.toroid.org
      5850b20f