1. 23 Mar, 2018 4 commits
    • Andres Freund's avatar
      Adapt expression JIT to stdbool.h introduction. · 2111a48a
      Andres Freund authored
      The LLVM JIT provider uses clang to synchronize types between normal C
      code and runtime generated code. Clang represents stdbool.h style
      booleans in return values & parameters differently from booleans
      stored in variables.
      
      Thus the expression compilation code from 2a0faed9 needs to be
      adapted to 9a95a77d. Instead of hardcoding i8 as the type for
      booleans (which already was wrong on some edge case platforms!), use
      postgres' notion of a boolean as used for storage and for parameters.
      
      Per buildfarm animal xenodermus.
      
      Author: Andres Freund
      2111a48a
    • Peter Eisentraut's avatar
      Fix whitespace · fdb78948
      Peter Eisentraut authored
      fdb78948
    • Peter Eisentraut's avatar
      Remove stdbool workaround in sepgsql · 5c4920be
      Peter Eisentraut authored
      Since we now use stdbool.h in c.h, this workaround breaks the build and
      is no longer necessary, so remove it.  (Technically, there could be
      platforms with a 4-byte bool in stdbool.h, in which case we would not
      include stdbool.h in c.h, and so the old problem that caused this
      workaround would reappear.  But this combination is not known to happen
      on the range of platforms where sepgsql can be built.)
      5c4920be
    • Peter Eisentraut's avatar
      Use stdbool.h if suitable · 9a95a77d
      Peter Eisentraut authored
      Using the standard bool type provided by C allows some recent compilers
      and debuggers to give better diagnostics.  Also, some extension code and
      third-party headers are increasingly pulling in stdbool.h, so it's
      probably saner if everyone uses the same definition.
      
      But PostgreSQL code is not prepared to handle bool of a size other than
      1, so we keep our own old definition if we encounter a stdbool.h with a
      bool of a different size.  (Among current build farm members, this only
      applies to old macOS versions on PowerPC.)
      
      To check that the used bool is of the right size, add a static
      assertions about size of GinTernaryValue vs bool.  This is currently the
      only place that assumes that bool and char are of the same size.
      
      Discussion: https://www.postgresql.org/message-id/flat/3a0fe7e1-5ed1-414b-9230-53bbc0ed1f49@2ndquadrant.com
      9a95a77d
  2. 22 Mar, 2018 27 commits
    • Andres Freund's avatar
      Add expression compilation support to LLVM JIT provider. · 2a0faed9
      Andres Freund authored
      In addition to the interpretation of expressions (which back
      evaluation of WHERE clauses, target list projection, aggregates
      transition values etc) support compiling expressions to native code,
      using the infrastructure added in earlier commits.
      
      To avoid duplicating a lot of code, only support emitting code for
      cases that are likely to be performance critical. For expression steps
      that aren't deemed that, use the existing interpreter.
      
      The generated code isn't great - some architectural changes are
      required to address that. But this already yields a significant
      speedup for some analytics queries, particularly with WHERE clauses
      filtering a lot, or computing multiple aggregates.
      
      Author: Andres Freund
      Tested-By: Thomas Munro
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      
      Disable JITing for VALUES() nodes.
      
      VALUES() nodes are only ever executed once. This is primarily helpful
      for debugging, when forcing JITing even for cheap queries.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      2a0faed9
    • Andres Freund's avatar
      Add FIELDNO_* macro designating offset into structs required for JIT. · 7ced1d12
      Andres Freund authored
      For any interesting JIT target, fields inside structs need to be
      accessed. b96d550e contains infrastructure for syncing the definition
      of types between postgres C code and runtime code generation with
      LLVM. But that doesn't sync the number or names of fields inside
      structs, just the types (including padding etc).
      
      One option would be to hardcode the offset numbers in the JIT code,
      but that'd be hard to keep in sync. Instead add macros indicating the
      field offset to the fields that need to be accessed. Not pretty, but
      manageable.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      7ced1d12
    • Andres Freund's avatar
    • Tom Lane's avatar
      Improve style guideline compliance of assorted error-report messages. · feb82545
      Tom Lane authored
      Per the project style guide, details and hints should have leading
      capitalization and end with a period.  On the other hand, errcontext should
      not be capitalized and should not end with a period.  To support well
      formatted error contexts in dblink, extend dblink_res_error() to take a
      format+arguments rather than a hardcoded string.
      
      Daniel Gustafsson
      
      Discussion: https://postgr.es/m/B3C002C8-21A0-4F53-A06E-8CAB29FCF295@yesql.se
      feb82545
    • Robert Haas's avatar
      Consider Parallel Append of partial paths for UNION [ALL]. · 88ba0ae2
      Robert Haas authored
      Without this patch, we can implement a UNION or UNION ALL as an
      Append where Gather appears beneath one or more of the Append
      branches, but this lets us put the Gather node on top, with
      a partial path for each relation underneath.
      
      There is considerably more work that could be done to improve
      planning in this area, but that will probably need to wait
      for a future release.
      
      Patch by me, reviewed and tested by Ashutosh Bapat and Rajkumar
      Raghuwanshi.
      
      Discussion: http://postgr.es/m/CA+TgmoaLRAOqHmMZx=ESM3VDEPceg+-XXZsRXQ8GtFJO_zbMSw@mail.gmail.com
      88ba0ae2
    • Tom Lane's avatar
      Sync up our various ways of estimating pg_class.reltuples. · 7c91a036
      Tom Lane authored
      VACUUM thought that reltuples represents the total number of tuples in
      the relation, while ANALYZE counted only live tuples.  This can cause
      "flapping" in the value when background vacuums and analyzes happen
      separately.  The planner's use of reltuples essentially assumes that
      it's the count of live (visible) tuples, so let's standardize on having
      it mean live tuples.
      
      Another issue is that the definition of "live tuple" isn't totally clear;
      what should be done with INSERT_IN_PROGRESS or DELETE_IN_PROGRESS tuples?
      ANALYZE's choices in this regard are made on the assumption that if the
      originating transaction commits at all, it will happen after ANALYZE
      finishes, so we should ignore the effects of the in-progress transaction
      --- unless it is our own transaction, and then we should count it.
      Let's propagate this definition into VACUUM, too.
      
      Likewise propagate this definition into CREATE INDEX, and into
      contrib/pgstattuple's pgstattuple_approx() function.
      
      Tomas Vondra, reviewed by Haribabu Kommi, some corrections by me
      
      Discussion: https://postgr.es/m/16db4468-edfa-830a-f921-39a50498e77e@2ndquadrant.com
      7c91a036
    • Andres Freund's avatar
      Basic planner and executor integration for JIT. · cc415a56
      Andres Freund authored
      This adds simple cost based plan time decision about whether JIT
      should be performed. jit_above_cost, jit_optimize_above_cost are
      compared with the total cost of a plan, and if the cost is above them
      JIT is performed / optimization is performed respectively.
      
      For that PlannedStmt and EState have a jitFlags (es_jit_flags) field
      that stores information about what JIT operations should be performed.
      
      EState now also has a new es_jit field, which can store a
      JitContext. When there are no errors the context is released in
      standard_ExecutorEnd().
      
      It is likely that the default values for jit_[optimize_]above_cost
      will need to be adapted further, but in my test these values seem to
      work reasonably.
      
      Author: Andres Freund, with feedback by Peter Eisentraut
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      cc415a56
    • Andres Freund's avatar
      Add helpers for emitting LLVM IR. · 7ec0d80c
      Andres Freund authored
      These basically just help to make code a bit more concise and pgindent
      proof.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      7ec0d80c
    • Andres Freund's avatar
      Debugging and profiling support for LLVM JIT provider. · 250bca7f
      Andres Freund authored
      This currently requires patches to the LLVM codebase to be
      effective (submitted upstream), the GUCs are available without those
      patches however.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      250bca7f
    • Andres Freund's avatar
      Support for optimizing and emitting code in LLVM JIT provider. · b96d550e
      Andres Freund authored
      This commit introduces the ability to actually generate code using
      LLVM. In particular, this adds:
      
      - Ability to emit code both in heavily optimized and largely
        unoptimized fashion
      - Batching facility to allow functions to be defined in small
        increments, but optimized and emitted in executable form in larger
        batches (for performance and memory efficiency)
      - Type and function declaration synchronization between runtime
        generated code and normal postgres code. This is critical to be able
        to access struct fields etc.
      - Developer oriented jit_dump_bitcode GUC, for inspecting / debugging
        the generated code.
      - per JitContext statistics of number of functions, time spent
        generating code, optimizing, and emitting it.  This will later be
        employed for EXPLAIN support.
      
      This commit doesn't yet contain any code actually generating
      functions. That'll follow in later commits.
      
      Documentation for GUCs added, and for JIT in general, will be added in
      later commits.
      
      Author: Andres Freund, with contributions by Pierre Ducroquet
      Testing-By: Thomas Munro, Peter Eisentraut
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      b96d550e
    • Robert Haas's avatar
    • Robert Haas's avatar
      Fix typo in comment. · 8a8c4f3b
      Robert Haas authored
      Michael Paquier
      
      Discussion: http://postgr.es/m/20180205071404.GB17337@paquier.xyz
      8a8c4f3b
    • Robert Haas's avatar
    • Tom Lane's avatar
      Fix tuple counting in SP-GiST index build. · 649f1792
      Tom Lane authored
      Count the number of tuples in the index honestly, instead of assuming
      that it's the same as the number of tuples in the heap.  (It might be
      different if the index is partial.)
      
      Back-patch to all supported versions.
      
      Tomas Vondra
      
      Discussion: https://postgr.es/m/3b3d8eac-c709-0d25-088e-b98339a1b28a@2ndquadrant.com
      649f1792
    • Robert Haas's avatar
      Call pgstat_report_activity() in parallel CREATE INDEX workers. · 7de4a1bc
      Robert Haas authored
      Also set debug_query_string.
      
      Oversight in commit 9da0cc35
      
      Peter Geoghegan, per a report by Phil Florent.
      
      Discussion: https://postgr.es/m/CAH2-Wzmf-34hD4n40uTuE-ZY9P5c%2BmvhFbCdQfN%3DKrKiVm3j3A%40mail.gmail.com
      7de4a1bc
    • Tom Lane's avatar
      Fix errors in contrib/bloom index build. · c35b4728
      Tom Lane authored
      Count the number of tuples in the index honestly, instead of assuming
      that it's the same as the number of tuples in the heap.  (It might be
      different if the index is partial.)
      
      Fix counting of tuples in current index page, too.  This error would
      have led to failing to write out the final page of the index if it
      contained exactly one tuple, so that the last tuple of the relation
      would not get indexed.
      
      Back-patch to 9.6 where contrib/bloom was added.
      
      Tomas Vondra and Tom Lane
      
      Discussion: https://postgr.es/m/3b3d8eac-c709-0d25-088e-b98339a1b28a@2ndquadrant.com
      c35b4728
    • Robert Haas's avatar
      Implement partition-wise grouping/aggregation. · e2f1eb0e
      Robert Haas authored
      If the partition keys of input relation are part of the GROUP BY
      clause, all the rows belonging to a given group come from a single
      partition.  This allows aggregation/grouping over a partitioned
      relation to be broken down * into aggregation/grouping on each
      partition.  This should be no worse, and often better, than the normal
      approach.
      
      If the GROUP BY clause does not contain all the partition keys, we can
      still perform partial aggregation for each partition and then finalize
      aggregation after appending the partial results.  This is less certain
      to be a win, but it's still useful.
      
      Jeevan Chalke, Ashutosh Bapat, Robert Haas.  The larger patch series
      of which this patch is a part was also reviewed and tested by Antonin
      Houska, Rajkumar Raghuwanshi, David Rowley, Dilip Kumar, Konstantin
      Knizhnik, Pascal Legrand, and Rafia Sabih.
      
      Discussion: http://postgr.es/m/CAM2+6=V64_xhstVHie0Rz=KPEQnLJMZt_e314P0jaT_oJ9MR8A@mail.gmail.com
      e2f1eb0e
    • Teodor Sigaev's avatar
      Add conditional.c to libpgfeutils for MSVC build · 2058d6a2
      Teodor Sigaev authored
      conditional.c was moved in f67b113a commit
      but forgotten to add to Windows build system.
      
      I don't have a Windows box, so blind attempt.
      2058d6a2
    • Teodor Sigaev's avatar
      UINT64CONST'fy long constants in pgbench · 2216fded
      Teodor Sigaev authored
      In commit e51a0484 it was missed 64-bit
      constants, wrap them with UINT64CONST().
      
      Per buildfarm member dromedary and gripe from Tom Lane
      2216fded
    • Teodor Sigaev's avatar
      Add \if support to pgbench · f67b113a
      Teodor Sigaev authored
      Patch adds \if to pgbench as it done for psql. Implementation shares condition
      stack code with psql, so, this code is moved to fe_utils directory.
      
      Author: Fabien COELHO with minor editorization by me
      Review by: Vik Fearing, Fedor Sigaev
      Discussion: https://www.postgresql.org/message-id/flat/alpine.DEB.2.20.1711252200190.28523@lancre
      f67b113a
    • Dean Rasheed's avatar
      Improve ANALYZE's strategy for finding MCVs. · b5db1d93
      Dean Rasheed authored
      Previously, a value was included in the MCV list if its frequency was
      25% larger than the estimated average frequency of all nonnull values
      in the table.  For uniform distributions, that can lead to values
      being included in the MCV list and significantly overestimated on the
      basis of relatively few (sometimes just 2) instances being seen in the
      sample.  For non-uniform distributions, it can lead to too few values
      being included in the MCV list, since the overall average frequency
      may be dominated by a small number of very common values, while the
      remaining values may still have a large spread of frequencies, causing
      both substantial overestimation and underestimation of the remaining
      values.  Furthermore, increasing the statistics target may have little
      effect because the overall average frequency will remain relatively
      unchanged.
      
      Instead, populate the MCV list with the largest set of common values
      that are statistically significantly more common than the average
      frequency of the remaining values.  This takes into account the
      variance of the sample counts, which depends on the counts themselves
      and on the proportion of the table that was sampled.  As a result, it
      constrains the relative standard error of estimates based on the
      frequencies of values in the list, reducing the chances of too many
      values being included.  At the same time, it allows more values to be
      included, since the MCVs need only be more common than the remaining
      non-MCVs, rather than the overall average.  Thus it tends to produce
      fewer MCVs than the previous code for uniform distributions, and more
      for non-uniform distributions, reducing estimation errors in both
      cases.  In addition, the algorithm responds better to increasing the
      statistics target, allowing more values to be included in the MCV list
      when more of the table is sampled.
      
      Jeff Janes, substantially modified by me. Reviewed by John Naylor and
      Tomas Vondra.
      
      Discussion: https://postgr.es/m/CAMkU=1yvdGvW9TmiLAhz2erFnvnPFYHbOZuO+a=4DVkzpuQ2tw@mail.gmail.com
      b5db1d93
    • Andres Freund's avatar
    • Andres Freund's avatar
      Basic JIT provider and error handling infrastructure. · 432bb9e0
      Andres Freund authored
      This commit introduces:
      
      1) JIT provider abstraction, which allows JIT functionality to be
         implemented in separate shared libraries. That's desirable because
         it allows to install JIT support as a separate package, and because
         it allows experimentation with different forms of JITing.
      2) JITContexts which can be, using functions introduced in follow up
         commits, used to emit JITed functions, and have them be cleaned up
         on error.
      3) The outline of a LLVM JIT provider, which will be fleshed out in
         subsequent commits.
      
      Documentation for GUCs added, and for JIT in general, will be added in
      later commits.
      
      Author: Andres Freund, with architectural input from Jeff Davis
      Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
      432bb9e0
    • Andres Freund's avatar
      Fix typo in BITCODE_CXXFLAGS assignment. · 4317cc68
      Andres Freund authored
      Typoed-In: 5b2526c8
      Reported-By: Catalin Iacob
      4317cc68
    • Andres Freund's avatar
      Empty CXXFLAGS inherited from autoconf. · a02671cf
      Andres Freund authored
      We do the same for CFLAGS.  This was an omission in 6869b4f2.
      
      Reported-By: Catalin Iacob
      a02671cf
    • Tom Lane's avatar
      Prevent extensions from creating custom GUCs that are GUC_LIST_QUOTE. · 846b5a52
      Tom Lane authored
      Pending some solution for the problems noted in commit 74286994,
      disallow dynamic creation of GUC_LIST_QUOTE variables.
      
      If there are any extensions out there using this feature, they'd not
      be happy for us to start enforcing this rule in minor releases, so
      this is a HEAD-only change.  The previous commit didn't make things
      any worse than they already were for such cases.
      
      Discussion: https://postgr.es/m/20180111064900.GA51030@paquier.xyz
      846b5a52
    • Tom Lane's avatar
      Fix mishandling of quoted-list GUC values in pg_dump and ruleutils.c. · 74286994
      Tom Lane authored
      Code that prints out the contents of setconfig or proconfig arrays in
      SQL format needs to handle GUC_LIST_QUOTE variables differently from
      other ones, because for those variables, flatten_set_variable_args()
      already applied a layer of quoting.  The value can therefore safely
      be printed as-is, and indeed must be, or flatten_set_variable_args()
      will muck it up completely on reload.  For all other GUC variables,
      it's necessary and sufficient to quote the value as a SQL literal.
      
      We'd recognized the need for this long ago, but mis-analyzed the
      need slightly, thinking that all GUC_LIST_INPUT variables needed
      the special treatment.  That's actually wrong, since a valid value
      of a LIST variable might include characters that need quoting,
      although no existing variables accept such values.
      
      More to the point, we hadn't made any particular effort to keep the
      various places that deal with this up-to-date with the set of variables
      that actually need special treatment, meaning that we'd do the wrong
      thing with, for example, temp_tablespaces values.  This affects dumping
      of SET clauses attached to functions, as well as ALTER DATABASE/ROLE SET
      commands.
      
      In ruleutils.c we can fix it reasonably honestly by exporting a guc.c
      function that allows discovering the flags for a given GUC variable.
      But pg_dump doesn't have easy access to that, so continue the old method
      of having a hard-wired list of affected variable names.  At least we can
      fix it to have just one list not two, and update the list to match
      current reality.
      
      A remaining problem with this is that it only works for built-in
      GUC variables.  pg_dump's list obvious knows nothing of third-party
      extensions, and even the "ask guc.c" method isn't bulletproof since
      the relevant extension might not be loaded.  There's no obvious
      solution to that, so for now, we'll just have to discourage extension
      authors from inventing custom GUCs that need GUC_LIST_QUOTE.
      
      This has been busted for a long time, so back-patch to all supported
      branches.
      
      Michael Paquier and Tom Lane, reviewed by Kyotaro Horiguchi and
      Pavel Stehule
      
      Discussion: https://postgr.es/m/20180111064900.GA51030@paquier.xyz
      74286994
  3. 21 Mar, 2018 9 commits
    • Tom Lane's avatar
      Improve predtest.c's handling of cases with NULL-constant inputs. · 0f0deb71
      Tom Lane authored
      Currently, if operator_predicate_proof() is given an operator clause like
      "something op NULL", it just throws up its hands and reports it can't prove
      anything.  But we can often do better than that, if the operator is strict,
      because then we know that the clause returns NULL overall.  Depending on
      whether we're trying to prove or refute something, and whether we need
      weak or strong semantics for NULL, this may be enough to prove the
      implication, especially when we rely on the standard rule that "false
      implies anything".  In particular, this lets us do something useful with
      questions like "does X IN (1,3,5,NULL) imply X <= 5?"  The null entry
      in the IN list can effectively be ignored for this purpose, but the
      proof rules were not previously smart enough to deduce that.
      
      This patch is by me, but it owes something to previous work by
      Amit Langote to try to solve problems of the form mentioned.
      Thanks also to Emre Hasegeli and Ashutosh Bapat for review.
      
      Discussion: https://postgr.es/m/3bad48fc-f257-c445-feeb-8a2b2fb622ba@lab.ntt.co.jp
      0f0deb71
    • Tom Lane's avatar
      Change oddly-chosen OID allocation. · 27ba260c
      Tom Lane authored
      I noticed while fooling with John Naylor's bootstrap-data patch that we had
      one high-numbered manually assigned OID, 8888, which evidently came from a
      submission that the committer didn't bother to bring into line with usual
      OID allocation practices before committing.  That's a bad idea, because it
      creates a hazard for other patches that may be temporarily using high OID
      numbers.  Change it to something more in line with what we usually do.
      
      This evidently dates to commit abb17339.  It's too late to change it
      in released branches, but we can fix it in HEAD.
      27ba260c
    • Peter Eisentraut's avatar
      pg_controldata: Prevent division-by-zero errors · 4731d848
      Peter Eisentraut authored
      If the control file is corrupted and specifies the WAL segment size
      to be 0 bytes, calculating the latest checkpoint's REDO WAL file
      will fail with a division-by-zero error.  Show it as "???" instead.
      
      Also reword the warning message a bit and send it to stdout, like the
      other pre-existing warning messages.
      
      Add some tests for dealing with a corrupted pg_control file.
      
      Author: Nathan Bossart <bossartn@amazon.com>, tests by me
      4731d848
    • Alvaro Herrera's avatar
      Fix relcache handling of the 'default' partition · 56163004
      Alvaro Herrera authored
      My commit 4dba331c that moved around CommandCounterIncrement calls
      in partitioning DDL code unearthed a problem with the relcache handling
      for the 'default' partition: the construction of a correct relcache
      entry for the partitioned table was at the mercy of lack of CCI calls in
      non-trivial amounts of code.  This was prone to creating problems later
      on, as the code develops.  This was visible as a test failure in a
      compile with RELCACHE_FORCE_RELASE (buildfarm member prion).
      
      The problem is that after the mentioned commit it was possible to create
      a relcache entry that had incomplete information regarding the default
      partition because I introduced a CCI between adding the catalog entries
      for the default partition (StorePartitionBound) and the update of
      pg_partitioned_table entry for its parent partitioned table
      (update_default_partition_oid).  It seems the best fix is to move the
      latter so that it occurs inside the former; the purposeful lack of
      intervening CCI should be more obvious, and harder to break.
      
      I also remove a check in RelationBuildPartitionDesc that returns NULL if
      the key is not set.  I couldn't find any place that needs this hack
      anymore; probably it was required because of bugs that have since been
      fixed.
      
      Fix a few typos I noticed while reviewing the code involved.
      
      Discussion: https://postgr.es/m/20180320182659.nyzn3vqtjbbtfgwq@alvherre.pgsql
      56163004
    • Teodor Sigaev's avatar
      Add general purpose hasing functions to pgbench. · e51a0484
      Teodor Sigaev authored
      Hashing function is useful for simulating real-world workload in test like
      WEB workload, as an example - YCSB benchmarks.
      
      Author: Ildar Musin with minor editorization by me
      Reviewed by: Fabien Coelho, me
      Discussion: https://www.postgresql.org/message-id/flat/0e8bd39e-dfcd-2879-f88f-272799ad7ef2@postgrespro.ru
      e51a0484
    • Tatsuo Ishii's avatar
      Fix typo. · 8bb3c7d3
      Tatsuo Ishii authored
      Patch by me.
      8bb3c7d3
    • Peter Eisentraut's avatar
      Handle heap rewrites even better in logical decoding · 325f2ec5
      Peter Eisentraut authored
      Logical decoding should not publish anything about tables created as
      part of a heap rewrite during DDL.  Those tables don't exist externally,
      so consumers of logical decoding cannot do anything sensible with that
      information.  In ab28feae, we worked
      around this for built-in logical replication, but that was hack.
      
      This is a more proper fix: We mark such transient heaps using the new
      field pg_class.relwrite, linking to the original relation OID.  By
      default, we ignore them in logical decoding before they get to the
      output plugin.  Optionally, a plugin can register their interest in
      getting such changes, if they handle DDL specially, in which case the
      new field will help them get information about the actual table.
      Reviewed-by: default avatarCraig Ringer <craig@2ndquadrant.com>
      325f2ec5
    • Teodor Sigaev's avatar
      Add strict_word_similarity to pg_trgm module · be8a7a68
      Teodor Sigaev authored
      strict_word_similarity is similar to existing word_similarity function but
      it takes into account word boundaries to compute similarity.
      
      Author: Alexander Korotkov
      Review by: David Steele, Liudmila Mantrova, me
      Discussion: https://www.postgresql.org/message-id/flat/CY4PR17MB13207ED8310F847CF117EED0D85A0@CY4PR17MB1320.namprd17.prod.outlook.com
      be8a7a68
    • Peter Eisentraut's avatar
      Add configure tests for stdbool.h and sizeof bool · f20b3285
      Peter Eisentraut authored
      This will allow us to assess how many platforms have bool with a size
      other than 1, which will help us decide how to go forward with using
      stdbool.h.
      
      Discussion: https://www.postgresql.org/message-id/flat/3a0fe7e1-5ed1-414b-9230-53bbc0ed1f49@2ndquadrant.com
      f20b3285