1. 03 7月, 2019 3 次提交
    • A
      Clear exported snapshots before transaction ID is reset · 056125e0
      Asim R P 提交于
      Greenplum diverges from upstream PostgreSQL in abort transaction workflow.
      Greenplum must dispatch ABORT command to QEs.  Consequently, transaction ID in
      top transaction state is reset before broadcasting the ABORT.
      
      Exported snapshots are closely tied to the transaction that exported them.
      They must be cleared before the transaction that exported them ceases to exist.
      In order to abide by this sequence of operations, Greenplum must also clear
      exported snapshots before marking the transaction as invalid.  This patch moves
      the call to clear exported snapshots at a location that is right for Greenplum.
      
      Fixes Github issue #8020
      
      Reviewed-by: Georgios Kokolatos and Jimmy Yih
      056125e0
    • A
      Don't mark FDW or external table actions needing two phase commit · be7499de
      Adam Lee 提交于
      FDW or External table's INSERT actions are actually just some defined
      callbacks but not real heap table INSERT actions.
      
      Don't mark transactions doing write just because they insert into
      foreign or external tables, some FDW extensions report an error because
      they don't see XACT_EVENT_PRE_PREPARE coming.
      be7499de
    • A
      Dispatch GUC setting commands with parameters quoted · d71a0d6e
      Adam Lee 提交于
      ```
      SET "request.header.user-agent" = 'curl/7.29.0';
      ```
      
      The double quote characters are needed in the above command, but
      Greenplum lost them while dispatching, which reports syntax error.
      d71a0d6e
  2. 02 7月, 2019 10 次提交
  3. 01 7月, 2019 3 次提交
    • A
      Make CREATE TABLESPACE two-phase safe · 122c79f2
      Adam Berlin 提交于
      Modify TwoPhaseFileHeader to include a tablespace OID that needs to be
      removed if an abort occurs.
      
      We add a 'pending tablespace for deletion' that is scheduled during the
      'create tablespace' command. If a node encounters an error, it can abort
      using the in-memory value. The master then can send an ABORT PREPARED for all
      segments that have prepared the create tablespace.
      
      A successful 'create tablespace' needs to unschedule the deletion, or following
      aborted transactions will accidentally delete the newly created tablespace.
      
      XLOG records are written for the ABORT and ABORT_PREPARED of a transaction, and these records also
      now contain a tablespace oid for deletion.
      
      Notes:
      
      During CREATE TABLESPACE, if an error occurs after the XLOG_XACT_PREPARE
      record has been written, there should be no filesystem changes left
      on disk for any of the segments. (master, standby, primary, or mirror)
      
      If an error occurs after the XLOG_XACT_DISTRIBUTED_COMMIT, then the create
      tablespace should succeed, and all tablespace filesystem changes should exist.
      Co-authored-by: NTaylor Vesely <tvesely@pivotal.io>
      Co-authored-by: NAlexandra Wang <lewang@pivotal.io>
      Co-authored-by: NSoumyadeep Chakraborty <sochakraborty@pivotal.io>
      122c79f2
    • D
      docs: fix typos in PXF documentation · 239d87e9
      Daniel Gustafsson 提交于
      239d87e9
    • X
      Run gpfdist_ssl test cases on windows · ae2a481a
      Xiaoran Wang 提交于
      * Add remote_regress folder in src/bin/gpfdist/
      to test gpfdist which runs on a remote host, such
      as a windows server. make installcheck_win can
      run them.
      
      * The scripts of start_gpfdist_remote_win
      are used to start and stop gpfdist runing on windows.
      If you want to test gpfdist on another os, such
      as aix, you can create a forlder named
      start_gpfdist_remote_aix and add some scripts
      to start and stop gpfdist.
      ae2a481a
  4. 30 6月, 2019 1 次提交
    • Z
      Improve select statement with locking clause · 10052f48
      Zhenghua Lyu 提交于
      With GDD enabled, and under some simple cases (refer
      the commit 6ebce733 and the function checkCanOptSelectLockingClause
      for details), we might also do some optimizations for the
      select statement with locking clause and limit clause.
      
      Greenplum generates two-stage-merge sort or limit plan to implement
      sort or limit and we can only lock tuples on segments. We prefer
      locking more tuples on segments rather than locking the whole table.
      Without the whole table lock, performance for OLTP should be improved.
      
      Also, after lockrows data cannot be assumed in order, but we do merge
      gather after lockrows. It is reasonable because even for postgres:
      `select * from t order by c for update` cannot guarantee result's order.
      10052f48
  5. 29 6月, 2019 5 次提交
  6. 28 6月, 2019 10 次提交
  7. 27 6月, 2019 8 次提交