1. 28 1月, 2017 8 次提交
    • A
      Taking upstream behavior on IndexBuildHeapScan · 5deb836e
      Abhijit Subramanya 提交于
      In GPDB if there was a heap tuple which was being deleted, i.e
      HEAPTUPLE_DELETE_IN_PROGRESS, it would error out during index rebuild, except
      for three scenarios:
      - Scenario 1: it's deleted within its own transaction
      - Scenario 2: it's a system catalog tuple
      - Scenario 3: there was a bitmap index being rebuilt
      
      The 3rd scenario is introduced long time ago in 3.3.
      
      In Postgres, the upstream behavior only handling the first 2 scenarios, and
      never bother with the 3rd scenario.
      
      We cannot repro the Scenario 3 on current code base using concurrent update on
      bitmap index with vacuum, and this scenario is already covered by test at
      `src/test/tinc/tincrepo/mpp/gpdb/tests/storage/vacuum/reindex/concurrency/`.
      
      It's confident that scenario 3 is also protected. Hence we take upstream
      behavior.
      
      [ci skip]
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      5deb836e
    • C
      Add gpcheckcat to the pipeline. (#1644) · 59ce5ee2
      Chris Hajas 提交于
      * This adds gpcheckcat to the master pipeline. This test takes about 20
      * minutes.
      
      Authors: Karen Huddleston and Chris Hajas
      59ce5ee2
    • D
      flattening main ditamap file for ease of use · 5fd97dc8
      dyozie 提交于
      5fd97dc8
    • A
      Cleanup comments for `remove_dbtablespaces()` · dc546b3a
      Abhijit Subramanya 提交于
      In Postgres, `remove_dbtablespaces()` are used for both `createdb()` failure, and
      `dropdb()` commit.
      
      In GPDB, persistent tables are used to track the state of the objects, like
      table space, database files, etc., and properly clean them up at the end of
      transaction (either commit or abort). That's handled by `AtEOXact_smgr()`.
      
      We can safely delete `remove_dbtablespaces()` function. We put the deadcode
      under `#if 0` to make future merge easier.
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      dc546b3a
    • A
      Remove deadcode of locally_opened check. · 87754bc8
      Abhijit Subramanya 提交于
      `locally_opened` is replaced by `local_estate` in postgres by the following
      commit:
      
      	commit 817946bb
      	Author: Tom Lane <tgl@sss.pgh.pa.us>
      	Date:   Wed Aug 15 21:39:50 2007 +0000
      
      	    Arrange to cache a ResultRelInfo in the executor's EState for relations that
      	    are not one of the query's defined result relations, but nonetheless have
      	    triggers fired against them while the query is active.  This was formerly
      	    impossible but can now occur because of my recent patch to fix the firing
      	    order for RI triggers.  Caching a ResultRelInfo avoids duplicating work by
      	    repeatedly opening and closing the same relation, and also allows EXPLAIN
      	    ANALYZE to "see" and report on these extra triggers.  Use the same mechanism
      	    to cache open relations when firing deferred triggers at transaction shutdown;
      	    this replaces the former one-element-cache strategy used in that case, and
      	    should improve performance a bit when there are deferred triggers on a number
      	    of relations.
      
      The deadcode was introduced by merge with 8.3, but the code was already removed
      in the original commit.
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      87754bc8
    • D
      Update documentation links to PostgreSQL 8.3 docs (#1650) · d7874dcd
      Daniel Gustafsson 提交于
      As we have merged with upstream 8.3, update the inline links to the
      upstream documentation from 8.2 to their 8.3 counterparts. Also go
      over to HTTPS as postgresql.org is now fully HTTPS with redirects
      for all HTTP requests.
      d7874dcd
    • D
      Add new type to data type matrix (#1648) · 47e7adb0
      Daniel Gustafsson 提交于
      JSON and uuid are new datatypes in the 5.0 cycle, and money has
      been expanded to 8 byte storage.
      47e7adb0
    • H
      Remove duplicate tests. · 3cd3a019
      Heikki Linnakangas 提交于
      The qp_derived_table test has the exact same queries as bugbuster/tiny.
      
      The qp_executor test is identical to the bugbuster/executor test.
      
      qp_subquery test has the exact same test queries, and more, as
      bugbuster/subquery.
      3cd3a019
  2. 27 1月, 2017 13 次提交
    • H
      Remove pointless statement from regression test. · f0135d73
      Heikki Linnakangas 提交于
      There's nothing special about this table. I think it used to be used
      as to log errors from a subsequent COPY, but we don't even have the
      "error tables" feature anymore.
      f0135d73
    • H
      Remove prototype for non-existent function. · 43d67502
      Heikki Linnakangas 提交于
      Commit 846b6e5d removed the function, but forgot to remove the prototype.
      43d67502
    • H
      Fix indentation and comments in copy.c to match upstream more closely. · f20257b9
      Heikki Linnakangas 提交于
      Some of these differences were left over by the COPY BINARY patch, but many
      were introduced earlier already.
      f20257b9
    • H
      Put back checks to forbid COPY BINARY TO/FROM STDIN with protocol version 2. · d9df97f1
      Heikki Linnakangas 提交于
      These were missed when the support for COPY BINARY was resurrected.
      d9df97f1
    • A
      Update optimizer specific answer files. · 15dd5d54
      Asim R P 提交于
      This was missed in 3e1fae2c.
      15dd5d54
    • S
      Migrate storage/aoco_alter/aoco_alter_sql_test tests to ICG. · 3e1fae2c
      Shoaib Lari 提交于
      There is considerable overlap between the aoco_alter/aoco_alter_sql_test tests
      and the test/regress/*/uao_dll tests. This is the first commit to move several
      of the aoco_alter/aoco_alter_sql_test tests to ICG.
      
      This commit moves alter_ao_table_oid_column.sql and alter_ao_table_oid_row.sql
      from sql/uao_ddl directories to sql/uao_col and sql/uao_row directories
      respectively.
      
      After this change, the sql/uao_ddl and expected/uao_ddl directories are only
      used for generation of intermediate .sql and .out files during the processing of
      the --ao-dir option of regress.  Therefore, I added .gitignore files in these
      directories.
      
      The bulk_dense_content_rle_compress.sql and small_content_rle_compress_hdr.sql
      tests are moved to rle.sql.
      
      Teh table name used in the alter_drop_allcol.source is renamed to avoid conflict
      with the same table name used in other tests.
      
      Remove migrated aoco_alter tests from tinc.
      
      Since these tests are part of ICG, so we don't need them in tinc anymore.
      3e1fae2c
    • C
      Enable to run behave gprecoverseg on multinode cluster (#1641) · 18f27a52
      Chris Hajas 提交于
      This is a followup to commit 80d1fc21 as
      the previous commit only works on a single node cluster
      
      Authors: Marbin Tan and Karen Huddleston
      18f27a52
    • A
      Check overflow in delta calculation for delta compression. · ad2f2ca2
      Ashwin Agrawal 提交于
      Delta between two adjacent tuples has fixed size in CO blocks of 29 bits during
      delta compression. So any value larger than it should be stored natively without
      applying delta compression to it. In cases where adjacent values are two far
      part delta calculation missed checking for overflows. Hence adding the check
      that if its negative don't apply delta compression, as logic always subtracts
      smaller number from larger number only for overflow case it will go
      negative. Also, adding validation tests for the same.
      Signed-off-by: NShreedhar Hardikar <shardikar@pivotal.io>
      ad2f2ca2
    • A
      a17d56b2
    • T
      Adjust "pgstat wait timeout" message to be a translatable LOG message. · 82ba8c3f
      Tom Lane 提交于
      Per discussion, change the log level of this message to be LOG not WARNING.
      The main point of this change is to avoid causing buildfarm run failures
      when the stats collector is exceptionally slow to respond, which it not
      infrequently is on some of the smaller/slower buildfarm members.
      
      This change does lose notice to an interactive user when his stats query
      is looking at out-of-date stats, but the majority opinion (not necessarily
      that of yours truly) is that WARNING messages would probably not get
      noticed anyway on heavily loaded production systems.  A LOG message at
      least ensures that the problem is recorded somewhere where bulk auditing
      for the issue is possible.
      
      Also, instead of an untranslated "pgstat wait timeout" message, provide
      a translatable and hopefully more understandable message "using stale
      statistics instead of current ones because stats collector is not
      responding".  The original text was written hastily under the assumption
      that it would never really happen in practice, which we now know to be
      unduly optimistic.
      
      Back-patch to all active branches, since we've seen the buildfarm issue
      in all branches.
      82ba8c3f
    • N
      Make gpfaultinjector less noisy and update related icg tests · 554b878f
      Nikos Armenatzoglou 提交于
      Closes #1606
      Signed-off-by: NHaisheng Yuan <hyuan@pivotal.io>
      554b878f
    • A
      Locking on sequence relation is not required for sequence server · 957d93af
      Abhijit Subramanya 提交于
      Postgres merge introduced init_sequence() which can optionally lock sequence
      relation.
      
      In GPDB, single sequence server instance is used to generate sequence values
      for all requests coming from segments, hence it doesn't require a lock on
      sequence relation.
      
      There are three concurrent scenarios when using sequence:
      Scenario A: concurrent requests from segments:
      create table t1 (c int, d serial) distributed by (c);
      insert into t1 select i from generate_series(1, 100) i;
      
      Scenario B: concurrent requests from master:
      tx1: select nextval('t1_c_seq'::regclass);
      tx2: select nextval('t1_c_seq'::regclass);
      
      Scenario C: concurrent requests from both master and segments
      tx1: select nextval('t1_c_seq'::regclass);
      tx2: insert into t1 values (200, default);
      
      Scenario A is protected by the single instance of sequence server.
      Scenario B and C are protected by the BUFFER_LOCK_EXCLUSIVE on shared
      buffer of the sequence relation.
      
      With that said, we don't need to hold additional lock on sequence relation.
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      957d93af
    • V
      Use ForEach to iterate lists of GPDB lists inside the translators · 2620cd78
      Venkatesh Raghavan 提交于
      In PR #1585 Heikki suggested we replace OidListNth() in
      PdrgpmdidResolvePolymorphicTypes().
      
      Also verified that in all other places inside PQO related translators we
      always use ForEach to iterate over the list.i
      2620cd78
  3. 26 1月, 2017 8 次提交
    • J
      Update persistent table catalog functions. · 9da45b62
      Jimmy Yih 提交于
      We recently updated some persistent table fields to remove
      previous_free_tid from gp_persistent_* tables and add tablespace oid
      to gp_relation_node. However, the persistent table catalog functions
      were not updated alongside the changes. This commit updates the
      functions to use the current schema.
      
      Commit references:
      https://github.com/greenplum-db/gpdb/commit/a56c032b7bb4926081828cb00d99909aa871e9c9
      https://github.com/greenplum-db/gpdb/commit/8fe321aff600d0b52d4d77fafc23d3292109d3ec
      
      Reported by Christopher Hajas.
      9da45b62
    • D
      Updating end-user docs with most recent 4.3x changes (#1635) · 58ba4873
      David Yozie 提交于
      * updating adminguide source with most recent 4.3.x work
      
      * updating reference manual with most recent 4.3.x work
      
      * updating utility guide with most recent 4.3.x changes
      
      * updating client tools guide with most recent 4.3.x changes
      
      * adding new file for client tools
      
      * updating map files with most recent 4.3.x changes
      
      * updating map files with most recent 4.3.x changes
      
      * Revert "updating map files with most recent 4.3.x changes"
      
      This reverts commit d7570343c17a126b4d11eaee3870ad6daa36966f.
      
      * Revert "updating map files with most recent 4.3.x changes"
      
      This reverts commit d7570343c17a126b4d11eaee3870ad6daa36966f.
      
      * updating ditamaps with latest 4.3.x changes
      
      * updating ditamaps with latest 4.3.x changes
      58ba4873
    • D
      Remove dead cost model visualization · 842105af
      Daniel Gustafsson 提交于
      While this would've been a neat thing had it been kept up to date,
      it's now over 9 years since it was last touched and it doesn't
      even load in recent versions of Sysquake anymore.
      842105af
    • K
    • K
      Removed limit expression from sort.(closes #1625) · d5463511
      Karthikeyan Jambu Rajaraman 提交于
      Leveraged bound for the limit with mk sort.
      d5463511
    • J
      Async gang recreation should PQconnectPoll on bad fd poll. · 739734fb
      Jimmy Yih 提交于
      There are segment recovery scenarios where revent would be POLLNVAL
      and event as POLLOUT. This would cause an infinite loop until the
      default 10 minute timeout is reached. Because of this, the FTS portion
      at the bottom of the createGang_async() function does not get
      correctly executed. This patch adds checking the fd poll revent for
      POLLERR, POLLHUP, and POLLNVAL to call a PQconnectPoll so that polling
      status PGRES_POLLING_WRITING can correctly update to
      PGRES_POLLING_FAILED. It will then be able to exit the loop and
      execute the FTS stuff.
      739734fb
    • A
      Take upstream lazy_truncate_heap locking behavior · b7506da0
      Abhijit Subramanya 提交于
      During lazy_truncate_heap, an exclusive lock is taken on the heap to be
      truncated. This lock is required to prevent other concurrent transactions
      reading an invalid rd_targblock which is going to be propogated to other
      backends as part of cache invalidation at commit time.
      
      This lock need to be held till the end of commit, hence we remove the
      UnlockRelation() added for GPDB, which is introduced to avoid a deadlock
      situation caused by concurrent vacuums.
      
      However, we cannot repro this deadlock on latest GPDB, where this deadlock was
      found in a very early version of GPDB (back to 3.3).
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      b7506da0
    • A
      Fix logfile_getname() · 00d040aa
      Abhijit Subramanya 提交于
      There are two issues with current logfile_getname()
      - First, it doesn't honor the `gp_log_format` GUC. Originally,
      when the format is CSV, then `.csv` is used, and when format is TEXT,
      the `.log` if used. However, currently the `.csv` is always used regardless
      of the `gp_log_format` settings, hence make the content of the file
      and suffix inconsistent.
      
      - Second, it mistakenly generate logs with wrong suffix `.csv.csv`
      during logfile_rotate(), due to the wrong assumption of the filename
      always containing `.log` when suffix is NULL. Also, due to the calling
      sequence of the logfile_rotate, an extra empty file is generated, e.g.
      in this case, the file with `.csv.csv` is always empty.
      
      Fix in this patch bring back original GPDB behavior. After the fix,
      we generated correct extension, however, still an empty extra log file
      generated during log rotation.
      
      However, a separate refactoring is required to clean up all the API
      changes in all the callers of logfile_getname(), since the parameter
      `suffix` is no longer needed. Also, the calling of logfile_rotate()
      to fix the extra empty log file issue.
      Signed-off-by: NXin Zhang <xzhang@pivotal.io>
      00d040aa
  4. 25 1月, 2017 7 次提交
    • H
      Fix error position in the errors reported from gp_dump_query_oids() · bc981799
      Heikki Linnakangas 提交于
      If an invalid query is passed to gp_dump_query_oids(), the error position
      would incorrectly point at the location in the original query, containing
      the call to gp_dump_query_oids() call, rather than the query passed as
      argument to it. For example:
      
      regression=# select gp_dump_query_oids('select * from invalid');
      ERROR:  relation "invalid" does not exist
      LINE 1: select gp_dump_query_oids('select * from invalid');
                            ^
      
      To fix, set up error context information correctly before parsing the
      query.
      bc981799
    • N
      Renaming a workload used in bugbuster tests · 8d5ae003
      Nikos Armenatzoglou 提交于
      Signed-off-by: NHaisheng Yuan <hyuan@pivotal.io>
      8d5ae003
    • N
      Remove StreamBitmap-related dead code · 77ea2a50
      Nikos Armenatzoglou 提交于
      If GPDB evaluates a query that needs to access an index, e.g., btree, then at
      least one Bitmap Index Scan will appear in query's plan.
      MultiExecBitmapIndexScan function will be invoked to construct the bitmap. If a
      query contains a WHERE clause similar to d in (1,2), where a bitmap index has
      been created on column d), then instead of creating a simple bitmap,
      MultiExecBitmapIndexScan will generate a composite bitmap that ORs all the
      bitmaps that satisfy the query condition. In our example,
      MultiExecBitmapIndexScan (in particular bmgetmulti) will OR the bitmaps of d =
      1 and d = 2.
      
      To OR two bitmaps A and B, A should be a StreamBitmap (and not a HashBitmap).
      
      In this commit, we remove code that was executed when MultiExecBitmapIndexScan has
      to generate a composite bitmap of A and B, where A is a StreamBitmap and B is a
      HashBitmap generated when accessing either a btree or a gin or a gist or a hash
      index. It seems that this is not a possible scenario because i) A can be a
      StreamBitmap only if a bitmap index has been constructed on a particular
      column, and ii) to the best of our knowledge we cannot have a single Bitmap
      Index Scan that will access both a Bitmap index and an index of another type
      e.g., btree.
      
      Authors: Nikos Armenatzoglou
               Shreedhar Hardikar <shardikar@pivotal.io>
               Haisheng Yuan <hyuan@pivotal.io>
      77ea2a50
    • A
      Stop ignoring Lazy vacuum from RecentXmin calculation. · 7383c2b0
      Ashwin Agrawal 提交于
      As part of 8.3 merge via this upstream commit
      92c2ecc1, code to ignore lazy vacuum from
      calculating RecentXmin and RecentGlobalXmin was introduced.
      
      In GPDB as part of lazy vacuum, reindex is performed for bitmap indexes, which
      generates tuples in pg_class with lazy vacuum's transaction ID. Ignoring lazy
      vacuum from RecentXmin and RecentGlobalXmin during GetSnapshotData caused
      incorrect setting of hintbits to `HEAP_XMAX_INVALID` for tuple intended to be
      deletd by lazy vacuum and breaking HOT chain. This transaction visibility issue
      was encountered in CI many times with parallel schedule `bitmap_index, analyze`
      failing with error `could not find pg_class tuple for index` at commit time of
      lazy vacuum. Hence this commit stops tracking lazy vacuum in MyProc and
      performing any specific action related to same.
      7383c2b0
    • A
      gpcheckcat query for gp_relation_node to include tablespace. · 3a6fc29e
      Ashwin Agrawal 提交于
      Commit 8fe321af added tablespace OID to
      gp_relation_node to correctly reflect unique relfilenode. As a result need to
      modify the gpcheckcat query by adding tablespace OID validating
      gp_relation_node's correctness with gp_persistent_relation_node.
      3a6fc29e
    • A
      246da8ce
    • D
  5. 24 1月, 2017 4 次提交