gfphoenix78 commented on PR #1890:
URL: https://github.com/apache/cloudberry/pull/1890#issuecomment-5288714509

   The problem is:
   ```
   gpadmin=# create temp table ttmp(a int);
   ERROR:  global xmin (1076) is higher than transaction xmin (1075) 
(procarray.c:3298)  (seg0 127.0.0.1:7002 pid=2466718) (procarray.c:3298)
   LINE 1: create temp table ttmp(a int);
                             ^
   ```
   
   repro:
   ```sql
   -- prepare
   drop table if exists t1;
   
   create table t1(a int);
   
   -- T1
   1: begin;
   1: insert into t1 select i from generate_series(1,10)i;
   -- to see the local xid on segments
   1: select gp_segment_id, xmin, * from t1;
   
   -- T2, will trigger the error
   2: set optimizer=off; -- invoke the QE backend on segments
   -- gdb attach to one of the QEs and break after release the ProcArrayLock
   -- gdb -p xxxx
   -- > b procarray.c:3303
   -- > c
   
   -- the following sql will be break when running GetSnapshotData
   2: create temp table ttmp(a int);
   
   -- rollback T1
   1: rollback;
   
   -- running SQL that advance DistributedLogShared.oldestXmin
   1: insert into t1 select i from generate_series(1,10)i;
   
   -- gdb: the QE of T2 should be still hanged in GetSnapshotData
   -- quit the gdb now
   -- > quit
   
   -- now, the above SQL to create temp table will fail
   ```
   
   gdb break the function GetSnapshotData at:
   ```c
        /*
         * GP: In computing Globals, also take distributed snapshots into
         * account.
         */
        if (TransactionIdPrecedes(xmin, globalxmin))
                globalxmin = xmin;
   
        if (!IS_QUERY_DISPATCHER())
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to