1. 14 3月, 2019 1 次提交
  2. 29 12月, 2018 1 次提交
    • H
      Call executor nodes the same, whether generated by planner or ORCA. · 455b9a19
      Heikki Linnakangas 提交于
      We used to call some node types different names in EXPLAIN output,
      depending on whether the plan was generated by ORCA or the Postgres
      planner. Also, a Bitmap Heap Scan used to be called differently, when the
      table was an AO or AOCS table, but only in planner-generated plans. There
      was some historical justification for this, because they used to
      be different executor node types, but commit db516347 removed last such
      differences.
      
      Full list of renames:
      
      Table Scan -> Seq Scan
      Append-only Scan -> Seq Scan
      Append-only Columnar Scan -> Seq Scan
      Dynamic Table Scan -> Dynamic Seq Scan
      Bitmap Table Scan -> Bitmap Heap Scan
      Bitmap Append-Only Row-Oriented Scan -> Bitmap Heap Scan
      Bitmap Append-Only Column-Oriented Scan -> Bitmap Heap Scan
      Dynamic Bitmap Table Scan -> Dynamic Bitmap Heap Scan
      455b9a19
  3. 27 8月, 2018 1 次提交
    • H
      Fix rechecking index quals in with lossy index operators on AO tables. · 83d055aa
      Heikki Linnakangas 提交于
      In 8.4, a 'recheck' flag was added to TBMIterateResult. But the bitmap
      AO table scan methods didn't get the memo. Because of that, they would
      fail to recheck the original index quals, when the index operator was
      lossy. Test case included to demonstrate the bug.
      
      Unrelatedly, remove a FIXME comment about the need to have EvalPlanQual
      recheck functions for bitmap AO table scans. That 'recheck' method is
      in fact unnecessary for AO tables, as explained in the comment that
      replaces the FIXME. This is confusing, so pay attention: the 'recheck'
      functionality that this commit fixes, is unrelated to the FIXME comment
      and the Recheck "access methods". But I found the bug with the
      TBMIterateResult.recheck field when I started to look into that. I'm glad
      I was confused about that myself, or I would not have tested the thing
      that was actually broken :-)
      
      As a side-note, it's confusing that we have essentially duplicated the
      bitmap heap/AO/AOCS scan code so many times. We have Bitmap Table Scan for
      heap, AO and AOCS tables, when ORCA is used. And separate Bitmap Heap Scan
      and Bitmap AO/AOCS Scan nodes when the Postgres planner is used. We
      should refactor that, but not in this patch.
      83d055aa
  4. 01 8月, 2018 1 次提交
  5. 18 1月, 2018 1 次提交
    • H
      Fix whitespace in tests, mostly in expected output. · 06a2bb64
      Heikki Linnakangas 提交于
      Commit ce3153fa, about to be merged from PostgreSQL 9.0 soon, removes
      the -w option from pg_regress's "diff" invocation. That commit will fix
      all the PostgreSQL regression tests to pass without it, but we need to
      also fix all the GPDB tests. That's what this commit does.
      06a2bb64
  6. 14 12月, 2017 1 次提交
    • M
      Fix internal_bpchar_pattern_compare compare logic to keep it · 35b53cbf
      Max Yang 提交于
      as same as upstream.
      
      In upstream, internal_bpchar_pattern_compare compare inputs by ignoring
      ending space. But GPDB it just use whole string compare. The bug didn't
      appear because the before merging PG_MERGE_84 GPDB just use TableScan when executing
      following query, but after PG_MERGE_84, IndexScan is used, and internal_bpchar_pattern_compare
      will be used for index:
      create table tbl(id int4, v char(10));
      create index tbl_v_idx_bpchar on tbl using btree(v bpchar_pattern_ops);
      insert into tbl values (1, 'abc');
      explain select * from tbl where v = 'abc '::char(20);
      select * from tbl where v = 'abc '::char(20);
      
      Author: Xiaoran Wang <xiwang@pivotal.io>
      35b53cbf
  7. 31 10月, 2017 1 次提交
  8. 19 5月, 2017 1 次提交
    • V
      Make ICG tests pass when GPDB is compiled with disable-orca · 7e774f28
      Venkatesh Raghavan 提交于
      In the updated tests, we used functions like disable_xform and
      enable_xform to hint the optimizer to disallow/allow a particular
      physical node. However, these functions are only available when GPDB
      is built with GPORCA. Planner on the other hand accomplished this
      via a GUC.
      
      To avoid usage of these functions in tests, I have introduced couple
      of GUCS that mimic the same planner behavior but now for GPORCA.
      In this effort I needed to add an API inside GPORCA.
      7e774f28
  9. 10 9月, 2016 1 次提交
    • H
      Added a new GUC gp_enable_relsize_collection to enable stats collection. (#1110) · 0ea740cf
      Haisheng Yuan 提交于
      Currently, when the stats are not existing for a relation, planner
      relies on default values instead of running pg_relation_size to save
      time. However, this causes planner to produce bad plans. Earlier, the
      code had the feature to collect stats for planner if the table did not
      had any stats, but it was removed.
      
      This fix re-introduces the feature with the GUC to control whether to use
      default values or run pg_relation_size to get actual stats if stats are
      not present. By default, the GUC is turned off.
      
      [#129570829]
      0ea740cf
  10. 03 6月, 2016 1 次提交
    • H
      Mask trivial differences in EXPLAIN output in bfv_index test. · b2d28285
      Heikki Linnakangas 提交于
      pg_regress uses gpdiff.pl to mask differences in costs etc. of EXPLAIN
      output, so that trivial changes in the plan output don't cause a
      regression failure. That mechanism didn't work for this EXPLAIN query,
      because the "explain" and "select" were on different lines. Remove the
      newline, to make gpdiff.pl recognize the query as an EXPLAIN query, to
      make the test case less fragile.
      b2d28285
  11. 25 3月, 2016 1 次提交
    • A
      Default estimates for missing stats [#115534065] · e0409357
      Atri Sharma 提交于
      Change behaviour to use default estimates for relation size
      for cases when no statistics are available.
      
      This avoid having heavy statstistics computation as part
      of query compilation.
      
      Customer can explicitly using ANALYZE to compute the stats
      before running queries to use more accurate stats instead
      of default statistics.
      
      Currently, the default size of table is:
      - Internal table: 100 pages
      - External table: 1000 pages
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      e0409357
  12. 19 2月, 2016 1 次提交