This is an automated email from the ASF dual-hosted git repository.

chenjinbao1989 pushed a commit to branch cbdb-postgres-merge
in repository https://gitbox.apache.org/repos/asf/cloudberry.git

commit fad25841b97e95117a34023aa3b6e04efa3b3b13
Author: liushengsong <[email protected]>
AuthorDate: Fri Mar 13 14:44:55 2026 +0800

    Fix: fix test parallel_schedule, greenplum_schedule, isolation2_schdule
---
 .github/workflows/pg16-merge-validation.yml        | 40 +++++-----
 src/backend/utils/activity/pgstat.c                |  7 +-
 src/bin/pg_basebackup/bbstreamer_file.c            |  7 +-
 src/test/isolation2/Makefile                       |  2 +-
 .../isolation2/expected/bitmap_index_crash.out     |  2 +-
 src/test/isolation2/expected/gdd/end.out           |  2 +-
 src/test/isolation2/expected/gdd/prepare.out       |  2 +-
 .../isolation2/expected/instr_in_shmem_setup.out   |  2 +-
 .../expected/pg_rewind_fail_missing_xlog.out       | 32 +++++++-
 src/test/isolation2/expected/prepare_limit.out     |  4 +-
 .../resgroup/resgroup_auxiliary_tools_v1.out       |  2 +-
 .../resgroup/resgroup_auxiliary_tools_v2.out       |  2 +-
 .../resgroup/resgroup_cpuset_empty_default.out     |  2 +-
 .../resgroup/resgroup_disable_resgroup.out         |  2 +-
 .../expected/resgroup/resgroup_syntax.out          |  4 +-
 src/test/isolation2/init_file_isolation2           |  4 +-
 .../input/uao/ao_unique_index_vacuum.source        | 17 +++++
 src/test/isolation2/input/workfile_mgr_test.source |  4 +-
 .../output/uao/ao_unique_index_vacuum.source       | 24 ++++++
 .../isolation2/output/workfile_mgr_test.source     |  4 +-
 src/test/isolation2/sql/bitmap_index_crash.sql     |  2 +-
 src/test/isolation2/sql/gdd/end.sql                |  2 +-
 src/test/isolation2/sql/gdd/prepare.sql            |  2 +-
 src/test/isolation2/sql/instr_in_shmem_setup.sql   |  2 +-
 .../isolation2/sql/pg_rewind_fail_missing_xlog.sql | 12 ++-
 src/test/isolation2/sql/prepare_limit.sql          |  4 +-
 .../sql/resgroup/resgroup_auxiliary_tools_v1.sql   |  2 +-
 .../sql/resgroup/resgroup_auxiliary_tools_v2.sql   |  2 +-
 .../sql/resgroup/resgroup_cpuset_empty_default.sql |  2 +-
 .../isolation2/sql/resgroup/resgroup_syntax.sql    |  4 +-
 .../sql/restore_memory_accounting_default.sql      |  2 +-
 .../isolation2/sql/setup_memory_accounting.sql     |  2 +-
 .../sql/setup_startup_memory_accounting.sql        |  2 +-
 src/test/regress/expected/autostats.out            |  4 +-
 src/test/regress/expected/explain.out              |  1 +
 src/test/regress/expected/external_table.out       | 86 +++++++++++-----------
 src/test/regress/expected/gp_connections.out       | 29 ++++----
 src/test/regress/expected/gp_tablespace.out        | 20 +++--
 src/test/regress/expected/profile.out              |  2 +-
 src/test/regress/expected/stats.out                |  8 +-
 src/test/regress/input/uao_dml/uao_dml.source      |  4 +-
 src/test/regress/output/uao_dml/uao_dml.source     | 12 +--
 src/test/regress/sql/external_table.sql            |  4 +
 src/test/regress/sql/gp_connections.sql            | 31 ++++----
 src/test/regress/sql/gp_tablespace.sql             |  4 +
 45 files changed, 254 insertions(+), 156 deletions(-)

diff --git a/.github/workflows/pg16-merge-validation.yml 
b/.github/workflows/pg16-merge-validation.yml
index c2f093f3de4..080a124574c 100644
--- a/.github/workflows/pg16-merge-validation.yml
+++ b/.github/workflows/pg16-merge-validation.yml
@@ -111,12 +111,8 @@ jobs:
           # Uncomment and add tests as features become available
           ALL_TESTS='{
             "include": [
-              {"test":"ic-small-opt-off",
-                "make_configs":["src/test/regress:installcheck-small"],
-                "pg_settings":{"optimizer":"off"}
-              },
-              {"test":"ic-greenplum-schedule",
-                "make_configs":["src/test/regress:installcheck-cbdb"],
+              {"test":"ic-good-opt-off",
+                "make_configs":["src/test/regress:installcheck-good"],
                 "pg_settings":{"optimizer":"off"}
               },
               {"test":"ic-isolation2-basic",
@@ -298,7 +294,7 @@ jobs:
             echo "- Install Prefix: ${INSTALL_PREFIX}"
             echo "- Port: 5432"
             echo "- Debug: Enabled (O0, g3, cassert)"
-            echo "- Disabled Features: ORCA, GPCloud, GPFdist, zstd"
+            echo "- Disabled Features: GPCloud"
           } >> "$GITHUB_STEP_SUMMARY"
 
       - name: Prepare Installation Directory
@@ -344,8 +340,8 @@ jobs:
             echo "  --enable-cassert"
             echo "  --enable-debug-extensions"
             echo "  --with-perl --with-python --with-libxml --with-openssl"
-            echo "  --without-zstd"
-            echo "  --disable-gpcloud --disable-orca --disable-gpfdist"
+            echo "  --with-zstd"
+            echo "  --disable-gpcloud"
             echo "  --with-pythonsrc-ext"
             echo "  --with-gssapi"
             echo ""
@@ -353,7 +349,7 @@ jobs:
             # Run configure as gpadmin
             if ! su - gpadmin -c "
               cd ${SRC_DIR}
-              export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:\${LD_LIBRARY_PATH}
+              export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}
               CFLAGS='-O0 -g3' ./configure \
                 --prefix=${INSTALL_PREFIX} \
                 --with-pgport=5432 \
@@ -362,14 +358,14 @@ jobs:
                 --with-python \
                 --with-libxml \
                 --with-openssl \
-                --without-zstd \
+                --with-zstd \
                 --enable-debug-extensions \
                 --disable-gpcloud \
-                --disable-orca \
-                --disable-gpfdist \
                 --with-pythonsrc-ext \
                 --with-gssapi \
-                --without-icu
+                --without-icu \
+                --with-libraries=${INSTALL_PREFIX}/lib \
+                --with-includes=/usr/local/xerces-c/include
             "; then
               echo "::error::Configure failed"
               exit 1
@@ -392,9 +388,9 @@ jobs:
             # Build and install as gpadmin (non-parallel to avoid issues)
             if ! time su - gpadmin -c "
               cd ${SRC_DIR}
-              export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:\${LD_LIBRARY_PATH}
-              make
-              make install
+              export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}
+              make -j$(nproc)
+              make -j$(nproc) install
             "; then
               echo "::error::Build and installation failed"
               exit 1
@@ -628,7 +624,7 @@ jobs:
           # We don't need to build, just configure
           su - gpadmin -c "
             cd ${SRC_DIR}
-            export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:\${LD_LIBRARY_PATH}
+            export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH}
             CFLAGS='-O0 -g3' ./configure \
               --prefix=${INSTALL_PREFIX} \
               --with-pgport=5432 \
@@ -637,14 +633,14 @@ jobs:
               --with-python \
               --with-libxml \
               --with-openssl \
-              --without-zstd \
+              --with-zstd \
               --enable-debug-extensions \
               --disable-gpcloud \
-              --disable-orca \
-              --disable-gpfdist \
               --with-pythonsrc-ext \
               --with-gssapi \
-              --without-icu 
+              --without-icu \
+              --with-libraries=${INSTALL_PREFIX}/lib \
+              --with-includes=/usr/local/xerces-c/include
           " 2>&1 | tee -a ${LOGS_DIR}/details/configure.log
 
       - name: Create gpdemo Cluster
diff --git a/src/backend/utils/activity/pgstat.c 
b/src/backend/utils/activity/pgstat.c
index 926800c9c09..a43dcb75398 100644
--- a/src/backend/utils/activity/pgstat.c
+++ b/src/backend/utils/activity/pgstat.c
@@ -1772,6 +1772,7 @@ assign_stats_fetch_consistency(int newval, void *extra)
 void
 pgstat_send_qd_tabstats(void)
 {
+       int                                     nest_level;
        PgStat_SubXactStatus *xact_state;
        StringInfoData          buf;
        PgStatTabRecordFromQE *records;
@@ -1788,10 +1789,14 @@ pgstat_send_qd_tabstats(void)
         * current nesting level's per-table insert/update/delete counts.
         */
        xact_state = pgstat_get_current_xact_stack();
-
        if (xact_state == NULL)
                return;
 
+       nest_level = GetCurrentTransactionNestLevel();
+
+       if (nest_level != xact_state->nest_level)
+               return;
+
        records = (PgStatTabRecordFromQE *)
                palloc(capacity * sizeof(PgStatTabRecordFromQE));
 
diff --git a/src/bin/pg_basebackup/bbstreamer_file.c 
b/src/bin/pg_basebackup/bbstreamer_file.c
index ec76084c8d4..8bb0a9256ce 100644
--- a/src/bin/pg_basebackup/bbstreamer_file.c
+++ b/src/bin/pg_basebackup/bbstreamer_file.c
@@ -323,12 +323,15 @@ extract_directory(const char *filename, mode_t mode)
                 * pg_xlog we assume is deleted at the start of
                 * pg_basebackup. We cannot delete pg_xlog because if
                 * streammode was used then it may have already copied
-                * new xlog files into pg_xlog directory.
+                * new xlog files into pg_xlog directory. Similarly,
+                * archive_status may have .done files created by the
+                * WAL streamer child process via mark_file_as_archived().
                 */
                if (pg_str_endswith(filename, "/pg_log") ||
                        pg_str_endswith(filename, "/log") ||
                        pg_str_endswith(filename, "/pg_wal") ||
-                       pg_str_endswith(filename, "/pg_xlog"))
+                       pg_str_endswith(filename, "/pg_xlog") ||
+                       pg_str_endswith(filename, "/archive_status"))
                        return;
 
                rmtree(filename, true);
diff --git a/src/test/isolation2/Makefile b/src/test/isolation2/Makefile
index 759b2855513..02e4d4c549a 100644
--- a/src/test/isolation2/Makefile
+++ b/src/test/isolation2/Makefile
@@ -29,7 +29,7 @@ test_parallel_retrieve_cursor_extended_query_error: 
test_parallel_retrieve_curso
        $(CC) $(CPPFLAGS) $(rpath) -I$(top_builddir)/src/interfaces/libpq 
-L$(GPHOME)/lib -L$(top_builddir)/src/interfaces/libpq  -o $@ $< -lpq
 
 pg_regress.o:
-       $(MAKE) -C $(top_builddir)/src/test/regress pg_regress.o
+       $(MAKE) -C $(top_builddir)/src/test/regress install
        rm -f $@ && $(LN_S) $(top_builddir)/src/test/regress/pg_regress.o .
 
 gpstringsubs.pl:
diff --git a/src/test/isolation2/expected/bitmap_index_crash.out 
b/src/test/isolation2/expected/bitmap_index_crash.out
index 7dce1ae6d31..1a6d3497367 100644
--- a/src/test/isolation2/expected/bitmap_index_crash.out
+++ b/src/test/isolation2/expected/bitmap_index_crash.out
@@ -111,7 +111,7 @@ select count(*) from test_bitmap where type = 520;
 (1 row)
 
 -- start_ignore
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 0: select count(*) from test_bitmap where type = 520;
diff --git a/src/test/isolation2/expected/gdd/end.out 
b/src/test/isolation2/expected/gdd/end.out
index 01a10b8a47a..920e841c196 100644
--- a/src/test/isolation2/expected/gdd/end.out
+++ b/src/test/isolation2/expected/gdd/end.out
@@ -6,7 +6,7 @@ ALTER
 -- Use utility session on seg 0 to restart master. This way avoids the
 -- situation where session issuing the restart doesn't disappear
 -- itself.
-1U:SELECT pg_ctl(dir, 'restart') from datadir;
+1U:SELECT pg_ctl(dir, 'restart', 'fast') from datadir;
  pg_ctl 
 --------
  OK     
diff --git a/src/test/isolation2/expected/gdd/prepare.out 
b/src/test/isolation2/expected/gdd/prepare.out
index d8940c2d3cf..ebe57f46311 100644
--- a/src/test/isolation2/expected/gdd/prepare.out
+++ b/src/test/isolation2/expected/gdd/prepare.out
@@ -75,7 +75,7 @@ ALTER
 -- Use utility session on seg 0 to restart master. This way avoids the
 -- situation where session issuing the restart doesn't disappear
 -- itself.
-1U:SELECT pg_ctl(dir, 'restart') from datadir;
+1U:SELECT pg_ctl(dir, 'restart', 'fast') from datadir;
  pg_ctl 
 --------
  OK     
diff --git a/src/test/isolation2/expected/instr_in_shmem_setup.out 
b/src/test/isolation2/expected/instr_in_shmem_setup.out
index 0a01c288885..3dca236d50f 100644
--- a/src/test/isolation2/expected/instr_in_shmem_setup.out
+++ b/src/test/isolation2/expected/instr_in_shmem_setup.out
@@ -1,3 +1,3 @@
 -- start_ignore
-! gpconfig -c gp_enable_query_metrics -v on; ! gpstop -rai;
+! gpconfig -c gp_enable_query_metrics -v on; ! gpstop -raf;
 -- end_ignore
diff --git a/src/test/isolation2/expected/pg_rewind_fail_missing_xlog.out 
b/src/test/isolation2/expected/pg_rewind_fail_missing_xlog.out
index 845dc6be0f7..dad7bd949d5 100644
--- a/src/test/isolation2/expected/pg_rewind_fail_missing_xlog.out
+++ b/src/test/isolation2/expected/pg_rewind_fail_missing_xlog.out
@@ -19,7 +19,7 @@ INSERT 3
 
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 (exited with code 0)
 
 -- Test 1: Ensure that pg_rewind doesn't fail due to checkpoints inadvertently
@@ -543,7 +543,7 @@ server closed the connection unexpectedly
 
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- start_ignore
 -- end_ignore
 (exited with code 0)
@@ -551,6 +551,32 @@ server closed the connection unexpectedly
 -- Create an unlogged table on the primary that remembers replication slot's 
last restart_lsn and number of WAL files.
 1U: CREATE UNLOGGED TABLE unlogged_wal_retention_test(restart_lsn_before 
pg_lsn, wal_count_before int);
 CREATE
+-- Force WAL segment switches to ensure there are old WAL files that can be 
removed after checkpoint.
+1U: SELECT pg_switch_wal() IS NOT NULL;
+ ?column? 
+----------
+ t        
+(1 row)
+1U: SELECT pg_switch_wal() IS NOT NULL;
+ ?column? 
+----------
+ t        
+(1 row)
+1U: SELECT pg_switch_wal() IS NOT NULL;
+ ?column? 
+----------
+ t        
+(1 row)
+1U: SELECT pg_switch_wal() IS NOT NULL;
+ ?column? 
+----------
+ t        
+(1 row)
+1U: SELECT pg_switch_wal() IS NOT NULL;
+ ?column? 
+----------
+ t        
+(1 row)
 1U: INSERT INTO unlogged_wal_retention_test SELECT (select restart_lsn FROM 
pg_replication_slots WHERE slot_name = 'internal_wal_replication_slot') as 
restart_lsn_before, (select count(*) from pg_ls_waldir()) as wal_count_before;
 INSERT 1
 5: CHECKPOINT;
@@ -663,7 +689,7 @@ DROP
 
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- start_ignore
 -- end_ignore
 (exited with code 0)
diff --git a/src/test/isolation2/expected/prepare_limit.out 
b/src/test/isolation2/expected/prepare_limit.out
index c9479617b27..d12b869db47 100644
--- a/src/test/isolation2/expected/prepare_limit.out
+++ b/src/test/isolation2/expected/prepare_limit.out
@@ -14,7 +14,7 @@
 -- Enable gp_autostats_mode to make sure the single value insert triger 2pc
 !\retcode gpconfig -c gp_autostats_mode -v 'on_no_stats' --skipvalidation;
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 (exited with code 0)
 
 5: create table prepare_limit1 (a int);
@@ -119,5 +119,5 @@ DROP
 (exited with code 0)
 !\retcode gpconfig -c gp_autostats_mode -v 'none' --skipvalidation;
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 (exited with code 0)
diff --git 
a/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v1.out 
b/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v1.out
index 1120930c158..17bfbb23fee 100644
--- a/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v1.out
+++ b/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v1.out
@@ -27,7 +27,7 @@ ERROR:  language "plpython3u" already exists
 
 ! gpconfig -c runaway_detector_activation_percent -v 100;
 
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 -- after the restart we need a new connection to run the queries
diff --git 
a/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v2.out 
b/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v2.out
index 779e4dd1bcf..f5325a2bb49 100644
--- a/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v2.out
+++ b/src/test/isolation2/expected/resgroup/resgroup_auxiliary_tools_v2.out
@@ -27,7 +27,7 @@ ERROR:  language "plpython3u" already exists
 
 ! gpconfig -c runaway_detector_activation_percent -v 100;
 
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 -- after the restart we need a new connection to run the queries
diff --git 
a/src/test/isolation2/expected/resgroup/resgroup_cpuset_empty_default.out 
b/src/test/isolation2/expected/resgroup/resgroup_cpuset_empty_default.out
index c84e98b5779..751206f059b 100644
--- a/src/test/isolation2/expected/resgroup/resgroup_cpuset_empty_default.out
+++ b/src/test/isolation2/expected/resgroup/resgroup_cpuset_empty_default.out
@@ -30,7 +30,7 @@ ALTER RESOURCE GROUP
 
 
 -- start_ignore
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 -- Cleanup in a new connection as the default one is disconnected by gpstop
diff --git 
a/src/test/isolation2/expected/resgroup/resgroup_disable_resgroup.out 
b/src/test/isolation2/expected/resgroup/resgroup_disable_resgroup.out
index ae3324c605d..df0f9ddfd9e 100644
--- a/src/test/isolation2/expected/resgroup/resgroup_disable_resgroup.out
+++ b/src/test/isolation2/expected/resgroup/resgroup_disable_resgroup.out
@@ -2,7 +2,7 @@
 -- start_ignore
 ! gpconfig -r gp_resource_manager;
 
-! gpstop -rai;
+! gpstop -ra;
 
 SHOW gp_resource_manager;
  gp_resource_manager 
diff --git a/src/test/isolation2/expected/resgroup/resgroup_syntax.out 
b/src/test/isolation2/expected/resgroup/resgroup_syntax.out
index 1b645564f2d..2b5cd0290ac 100644
--- a/src/test/isolation2/expected/resgroup/resgroup_syntax.out
+++ b/src/test/isolation2/expected/resgroup/resgroup_syntax.out
@@ -563,7 +563,7 @@ DROP
 -- start_ignore
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- start_ignore
 -- end_ignore
 (exited with code 0)
@@ -579,7 +579,7 @@ DROP
 -- start_ignore
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- start_ignore
 -- end_ignore
 (exited with code 0)
diff --git a/src/test/isolation2/init_file_isolation2 
b/src/test/isolation2/init_file_isolation2
index c359d3b8254..cb83b282be7 100644
--- a/src/test/isolation2/init_file_isolation2
+++ b/src/test/isolation2/init_file_isolation2
@@ -47,8 +47,8 @@ m/.*Process \d+ waits for ExclusiveLock on resource queue 
\d+; blocked by proces
 s/.*Process \d+ waits for ExclusiveLock on resource queue \d+; blocked by 
process \d+./Process PID waits for ExclusiveLock on resource queue OID; blocked 
by process PID./
 
 # For resource queue self-deadlock detail
-m/resource queue id: \d+, portal id: \d+/
-s/resource queue id: \d+, portal id: \d+/resource queue id: OID, portal id: 
NUM/
+m/resource queue id: (\d+|XXXX), portal id: \d+/
+s/resource queue id: (\d+|XXXX), portal id: \d+/resource queue id: OID, portal 
id: NUM/
 
 m/^Process \d+ waits for ShareLock on transaction \d+; blocked by process \d+./
 s/^Process \d+ waits for ShareLock on transaction \d+; blocked by process 
\d+./Process PID waits for ShareLock on transaction XID; blocked by process 
PID./
diff --git a/src/test/isolation2/input/uao/ao_unique_index_vacuum.source 
b/src/test/isolation2/input/uao/ao_unique_index_vacuum.source
index 4b1f3ca0b4e..df1c09798b2 100644
--- a/src/test/isolation2/input/uao/ao_unique_index_vacuum.source
+++ b/src/test/isolation2/input/uao/ao_unique_index_vacuum.source
@@ -51,9 +51,22 @@ CREATE TABLE unique_index_vacuum_@amname@(i int UNIQUE) 
USING @amname@
 INSERT INTO unique_index_vacuum_@amname@ SELECT generate_series(1, 5);
 DELETE FROM unique_index_vacuum_@amname@ WHERE i = 5;
 
+-- Enable debug logging to diagnose flaky compaction behavior.
+SET debug_appendonly_print_compaction = on;
+SET debug_appendonly_print_segfile_choice = on;
+SET debug_appendonly_print_visimap = on;
+
 select gp_inject_fault_infinite('vacuum_ao_after_index_delete', 'skip', dbid)
        from gp_segment_configuration where role = 'p' AND content <> -1;
 
+-- The first VACUUM performs COMPACT (marks old segfile AWAITING_DROP) and
+-- POST_CLEANUP. Due to a race condition, POST_CLEANUP's cutoff XID check in
+-- AppendOptimizedCollectDeadSegments() may find the AWAITING_DROP segment's
+-- xmin too new, resulting in an empty dead_segs bitmap and scan_index() being
+-- called instead of vacuum_appendonly_index() (which has the fault injector).
+-- The second VACUUM guarantees the xid is old enough for the dead segment to
+-- be collected, ensuring the fault is triggered.
+VACUUM unique_index_vacuum_@amname@;
 VACUUM unique_index_vacuum_@amname@;
 
 -- Wait until all old index entries have been deleted by the VACUUM.
@@ -64,4 +77,8 @@ SELECT 
gp_wait_until_triggered_fault('vacuum_ao_after_index_delete', 1, dbid)
 SELECT gp_inject_fault_infinite('vacuum_ao_after_index_delete', 'reset', dbid)
     FROM gp_segment_configuration WHERE role = 'p' AND content <> -1;
 
+RESET debug_appendonly_print_compaction;
+RESET debug_appendonly_print_segfile_choice;
+RESET debug_appendonly_print_visimap;
+
 DROP TABLE unique_index_vacuum_@amname@;
diff --git a/src/test/isolation2/input/workfile_mgr_test.source 
b/src/test/isolation2/input/workfile_mgr_test.source
index 30f03315d7e..f5e189e694b 100644
--- a/src/test/isolation2/input/workfile_mgr_test.source
+++ b/src/test/isolation2/input/workfile_mgr_test.source
@@ -57,7 +57,7 @@ language plpgsql volatile execute on all segments;
 
 -- start_ignore
 !\retcode gpconfig -c gp_workfile_max_entries -v 32 --skipvalidation;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- end_ignore
 
 -- setup for workfile made in temp tablespace test
@@ -80,7 +80,7 @@ language plpgsql volatile execute on all segments;
 
 -- start_ignore
 !\retcode gpconfig -r gp_workfile_max_entries --skipvalidation;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- end_ignore
 
 -- test workset cleanup
diff --git a/src/test/isolation2/output/uao/ao_unique_index_vacuum.source 
b/src/test/isolation2/output/uao/ao_unique_index_vacuum.source
index 74db357c6ab..480381ce287 100644
--- a/src/test/isolation2/output/uao/ao_unique_index_vacuum.source
+++ b/src/test/isolation2/output/uao/ao_unique_index_vacuum.source
@@ -83,6 +83,14 @@ INSERT 5
 DELETE FROM unique_index_vacuum_@amname@ WHERE i = 5;
 DELETE 1
 
+-- Enable debug logging to diagnose flaky compaction behavior.
+SET debug_appendonly_print_compaction = on;
+SET
+SET debug_appendonly_print_segfile_choice = on;
+SET
+SET debug_appendonly_print_visimap = on;
+SET
+
 select gp_inject_fault_infinite('vacuum_ao_after_index_delete', 'skip', dbid) 
from gp_segment_configuration where role = 'p' AND content <> -1;
  gp_inject_fault_infinite 
 --------------------------
@@ -91,6 +99,15 @@ select 
gp_inject_fault_infinite('vacuum_ao_after_index_delete', 'skip', dbid) fr
  Success:                 
 (3 rows)
 
+-- The first VACUUM performs COMPACT (marks old segfile AWAITING_DROP) and
+-- POST_CLEANUP. Due to a race condition, POST_CLEANUP's cutoff XID check in
+-- AppendOptimizedCollectDeadSegments() may find the AWAITING_DROP segment's
+-- xmin too new, resulting in an empty dead_segs bitmap and scan_index() being
+-- called instead of vacuum_appendonly_index() (which has the fault injector).
+-- The second VACUUM guarantees the xid is old enough for the dead segment to
+-- be collected, ensuring the fault is triggered.
+VACUUM unique_index_vacuum_@amname@;
+VACUUM
 VACUUM unique_index_vacuum_@amname@;
 VACUUM
 
@@ -112,5 +129,12 @@ SELECT 
gp_inject_fault_infinite('vacuum_ao_after_index_delete', 'reset', dbid) F
  Success:                 
 (3 rows)
 
+RESET debug_appendonly_print_compaction;
+RESET
+RESET debug_appendonly_print_segfile_choice;
+RESET
+RESET debug_appendonly_print_visimap;
+RESET
+
 DROP TABLE unique_index_vacuum_@amname@;
 DROP
diff --git a/src/test/isolation2/output/workfile_mgr_test.source 
b/src/test/isolation2/output/workfile_mgr_test.source
index ecf5438ca72..aca6dd16adf 100644
--- a/src/test/isolation2/output/workfile_mgr_test.source
+++ b/src/test/isolation2/output/workfile_mgr_test.source
@@ -30,7 +30,7 @@ CREATE
 
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- start_ignore
 20200923:12:05:57:014232 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: 
-ari
 20200923:12:05:57:014232 gpstop:mdw:gpadmin-[INFO]:-Gathering information and 
validating the environment...
@@ -132,7 +132,7 @@ DROP
 
 -- end_ignore
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- start_ignore
 20200923:12:08:05:016154 gpstop:mdw:gpadmin-[INFO]:-Starting gpstop with args: 
-ari
 20200923:12:08:05:016154 gpstop:mdw:gpadmin-[INFO]:-Gathering information and 
validating the environment...
diff --git a/src/test/isolation2/sql/bitmap_index_crash.sql 
b/src/test/isolation2/sql/bitmap_index_crash.sql
index f29d82ca649..7b696451577 100644
--- a/src/test/isolation2/sql/bitmap_index_crash.sql
+++ b/src/test/isolation2/sql/bitmap_index_crash.sql
@@ -49,7 +49,7 @@ create index on test_bitmap using bitmap(type);
 select count(*) from test_bitmap where type = 520;
 
 -- start_ignore
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 0: select count(*) from test_bitmap where type = 520;
diff --git a/src/test/isolation2/sql/gdd/end.sql 
b/src/test/isolation2/sql/gdd/end.sql
index 1d1b8e1ed50..676f24f7f20 100644
--- a/src/test/isolation2/sql/gdd/end.sql
+++ b/src/test/isolation2/sql/gdd/end.sql
@@ -4,7 +4,7 @@ ALTER SYSTEM RESET gp_global_deadlock_detector_period;
 -- Use utility session on seg 0 to restart master. This way avoids the
 -- situation where session issuing the restart doesn't disappear
 -- itself.
-1U:SELECT pg_ctl(dir, 'restart') from datadir;
+1U:SELECT pg_ctl(dir, 'restart', 'fast') from datadir;
 -- Start new session on master to make sure it has fully completed
 -- recovery and up and running again.
 1: SHOW gp_enable_global_deadlock_detector;
diff --git a/src/test/isolation2/sql/gdd/prepare.sql 
b/src/test/isolation2/sql/gdd/prepare.sql
index 96448e512f1..ca1dbed2323 100644
--- a/src/test/isolation2/sql/gdd/prepare.sql
+++ b/src/test/isolation2/sql/gdd/prepare.sql
@@ -59,7 +59,7 @@ ALTER SYSTEM SET gp_global_deadlock_detector_period TO 5;
 -- Use utility session on seg 0 to restart master. This way avoids the
 -- situation where session issuing the restart doesn't disappear
 -- itself.
-1U:SELECT pg_ctl(dir, 'restart') from datadir;
+1U:SELECT pg_ctl(dir, 'restart', 'fast') from datadir;
 -- Start new session on master to make sure it has fully completed
 -- recovery and up and running again.
 1: SHOW gp_enable_global_deadlock_detector;
diff --git a/src/test/isolation2/sql/instr_in_shmem_setup.sql 
b/src/test/isolation2/sql/instr_in_shmem_setup.sql
index 911e5135561..e4490a6c3fc 100644
--- a/src/test/isolation2/sql/instr_in_shmem_setup.sql
+++ b/src/test/isolation2/sql/instr_in_shmem_setup.sql
@@ -1,4 +1,4 @@
 -- start_ignore
 ! gpconfig -c gp_enable_query_metrics -v on; 
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
diff --git a/src/test/isolation2/sql/pg_rewind_fail_missing_xlog.sql 
b/src/test/isolation2/sql/pg_rewind_fail_missing_xlog.sql
index 9a1ffa2781a..9923ee0c4ab 100644
--- a/src/test/isolation2/sql/pg_rewind_fail_missing_xlog.sql
+++ b/src/test/isolation2/sql/pg_rewind_fail_missing_xlog.sql
@@ -25,7 +25,7 @@ INSERT INTO tst_missing_tbl values(2),(1),(5);
 
 -- Make the test faster by not preserving any extra wal segment files
 !\retcode gpconfig -c wal_keep_size -v 0;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 
 -- Test 1: Ensure that pg_rewind doesn't fail due to checkpoints inadvertently
 -- recycling WAL when a former primary is marked down in configuration, while 
it
@@ -269,10 +269,16 @@ INSERT INTO tst_missing_tbl values(2),(1),(5);
 
 -- Turn off wal_recycle to make this test easier to write.
 !\retcode gpconfig -c wal_recycle -v false;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 
 -- Create an unlogged table on the primary that remembers replication slot's 
last restart_lsn and number of WAL files.
 1U: CREATE UNLOGGED TABLE unlogged_wal_retention_test(restart_lsn_before 
pg_lsn, wal_count_before int);
+-- Force WAL segment switches to ensure there are old WAL files that can be 
removed after checkpoint.
+1U: SELECT pg_switch_wal() IS NOT NULL;
+1U: SELECT pg_switch_wal() IS NOT NULL;
+1U: SELECT pg_switch_wal() IS NOT NULL;
+1U: SELECT pg_switch_wal() IS NOT NULL;
+1U: SELECT pg_switch_wal() IS NOT NULL;
 1U: INSERT INTO unlogged_wal_retention_test SELECT (select restart_lsn FROM 
pg_replication_slots WHERE slot_name = 'internal_wal_replication_slot') as 
restart_lsn_before, (select count(*) from pg_ls_waldir()) as wal_count_before;
 5: CHECKPOINT;
 -- Replication slot's restart_lsn should advance to the checkpoint's redo 
location.
@@ -320,4 +326,4 @@ INSERT INTO tst_missing_tbl values(2),(1),(5);
 5: DROP FUNCTION connectSeg;
 !\retcode gpconfig -r wal_keep_size;
 !\retcode gpconfig -r wal_recycle;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
diff --git a/src/test/isolation2/sql/prepare_limit.sql 
b/src/test/isolation2/sql/prepare_limit.sql
index c3fc5831bfb..71aa13d02fe 100644
--- a/src/test/isolation2/sql/prepare_limit.sql
+++ b/src/test/isolation2/sql/prepare_limit.sql
@@ -8,7 +8,7 @@
 !\retcode gpconfig -c max_prepared_transactions -v 3 --skipvalidation;
 -- Enable gp_autostats_mode to make sure the single value insert triger 2pc
 !\retcode gpconfig -c gp_autostats_mode -v 'on_no_stats' --skipvalidation;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 
 5: create table prepare_limit1 (a int);
 5: create table prepare_limit2 (a int);
@@ -62,4 +62,4 @@
 -- to 250 which is the default value when demo cluster is created.
 !\retcode gpconfig -c max_prepared_transactions -v 250 --skipvalidation;
 !\retcode gpconfig -c gp_autostats_mode -v 'none' --skipvalidation;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
diff --git a/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v1.sql 
b/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v1.sql
index 5ff8a1fb50f..1e09cd70809 100644
--- a/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v1.sql
+++ b/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v1.sql
@@ -23,7 +23,7 @@ CREATE LANGUAGE plpython3u;
 ! gpconfig -c gp_resource_manager -v group;
 ! gpconfig -c max_connections -v 250 -m 25;
 ! gpconfig -c runaway_detector_activation_percent -v 100;
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 -- after the restart we need a new connection to run the queries
diff --git a/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v2.sql 
b/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v2.sql
index b791c1c31af..baea7711f50 100644
--- a/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v2.sql
+++ b/src/test/isolation2/sql/resgroup/resgroup_auxiliary_tools_v2.sql
@@ -23,7 +23,7 @@ CREATE LANGUAGE plpython3u;
 ! gpconfig -c gp_resource_manager -v group-v2;
 ! gpconfig -c max_connections -v 250 -m 25;
 ! gpconfig -c runaway_detector_activation_percent -v 100;
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 -- after the restart we need a new connection to run the queries
diff --git a/src/test/isolation2/sql/resgroup/resgroup_cpuset_empty_default.sql 
b/src/test/isolation2/sql/resgroup/resgroup_cpuset_empty_default.sql
index 2731486c424..9d05442de9b 100644
--- a/src/test/isolation2/sql/resgroup/resgroup_cpuset_empty_default.sql
+++ b/src/test/isolation2/sql/resgroup/resgroup_cpuset_empty_default.sql
@@ -25,7 +25,7 @@ ALTER RESOURCE GROUP rg1_cpuset_test SET cpuset '0';
 ! psql -d isolation2resgrouptest -Ac "ALTER RESOURCE GROUP rg1_cpuset_test SET 
cpuset '0-$(($(nproc)-1))'";
 
 -- start_ignore
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
 
 -- Cleanup in a new connection as the default one is disconnected by gpstop
diff --git a/src/test/isolation2/sql/resgroup/resgroup_syntax.sql 
b/src/test/isolation2/sql/resgroup/resgroup_syntax.sql
index 557b80af71a..278506034ad 100644
--- a/src/test/isolation2/sql/resgroup/resgroup_syntax.sql
+++ b/src/test/isolation2/sql/resgroup/resgroup_syntax.sql
@@ -278,13 +278,13 @@ DROP RESOURCE GROUP rg_test_group;
 -- test set cpu_max_percent to high value when gp_resource_group_cpu_limit is 
low
 -- start_ignore
 !\retcode gpconfig -c gp_resource_group_cpu_limit -v 0.5;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- end_ignore
 0: CREATE RESOURCE GROUP rg_test_group WITH (cpu_max_percent=10);
 0: ALTER RESOURCE GROUP rg_test_group SET cpu_max_percent 100;
 0: DROP RESOURCE GROUP rg_test_group;
 -- start_ignore
 !\retcode gpconfig -c gp_resource_group_cpu_limit -v 1; 
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 -- end_ignore
 
diff --git a/src/test/isolation2/sql/restore_memory_accounting_default.sql 
b/src/test/isolation2/sql/restore_memory_accounting_default.sql
index 4d5ba979c80..c7dfb4ca069 100644
--- a/src/test/isolation2/sql/restore_memory_accounting_default.sql
+++ b/src/test/isolation2/sql/restore_memory_accounting_default.sql
@@ -2,5 +2,5 @@
 ! gpconfig -c gp_vmem_limit_per_query -v '0' --skipvalidation
 ! gpconfig -c gp_vmem_protect_limit -v '8192'
 ! gpconfig -c runaway_detector_activation_percent -v 0
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
diff --git a/src/test/isolation2/sql/setup_memory_accounting.sql 
b/src/test/isolation2/sql/setup_memory_accounting.sql
index 44d03f9f581..0def30c2226 100644
--- a/src/test/isolation2/sql/setup_memory_accounting.sql
+++ b/src/test/isolation2/sql/setup_memory_accounting.sql
@@ -2,5 +2,5 @@
 ! gpconfig -c gp_vmem_limit_per_query -v '2MB' --skipvalidation
 ! gpconfig -c gp_vmem_protect_limit -v '20'
 ! gpconfig -c runaway_detector_activation_percent -v 0
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
diff --git a/src/test/isolation2/sql/setup_startup_memory_accounting.sql 
b/src/test/isolation2/sql/setup_startup_memory_accounting.sql
index b32f659ab56..1c9dcdce63b 100644
--- a/src/test/isolation2/sql/setup_startup_memory_accounting.sql
+++ b/src/test/isolation2/sql/setup_startup_memory_accounting.sql
@@ -2,5 +2,5 @@
 ! gpconfig -c gp_vmem_limit_per_query -v '20MB' --skipvalidation
 ! gpconfig -c gp_vmem_protect_limit -v '60'
 ! gpconfig -c runaway_detector_activation_percent -v 0
-! gpstop -rai;
+! gpstop -raf;
 -- end_ignore
diff --git a/src/test/regress/expected/autostats.out 
b/src/test/regress/expected/autostats.out
index 2705b8e70cd..c0390066c39 100644
--- a/src/test/regress/expected/autostats.out
+++ b/src/test/regress/expected/autostats.out
@@ -45,8 +45,8 @@ set role=autostats_nonowner;
 LOG:  statement: set role=autostats_nonowner;
 insert into autostats_test select generate_series(1, 10);
 LOG:  statement: insert into autostats_test select generate_series(1, 10);
-LOG:  An exception was encountered during the execution of statement: insert 
into autostats_test select generate_series(1, 10);
 ERROR:  permission denied for table autostats_test
+LOG:  An exception was encountered during the execution of statement: insert 
into autostats_test select generate_series(1, 10);
 select relname, reltuples from pg_class where relname='autostats_test';
 LOG:  statement: select relname, reltuples from pg_class where 
relname='autostats_test';
     relname     | reltuples 
@@ -87,8 +87,8 @@ LOG:  statement: select relname, reltuples from pg_class 
where relname='autostat
 -- Try to disable allow_nonowner GUC as ordinary user, should fail
 set gp_autostats_allow_nonowner=off;
 LOG:  statement: set gp_autostats_allow_nonowner=off;
-LOG:  An exception was encountered during the execution of statement: set 
gp_autostats_allow_nonowner=off;
 ERROR:  permission denied to set parameter "gp_autostats_allow_nonowner"
+LOG:  An exception was encountered during the execution of statement: set 
gp_autostats_allow_nonowner=off;
 show gp_autostats_allow_nonowner;
 LOG:  statement: show gp_autostats_allow_nonowner;
  gp_autostats_allow_nonowner 
diff --git a/src/test/regress/expected/explain.out 
b/src/test/regress/expected/explain.out
index 078bf02c12b..eecddd6e407 100644
--- a/src/test/regress/expected/explain.out
+++ b/src/test/regress/expected/explain.out
@@ -759,6 +759,7 @@ select jsonb_pretty(
          "Settings": {                                      +
              "jit": "off",                                  +
              "Optimizer": "Postgres query optimizer",       +
+             "optimizer": "off",                            +
              "enable_parallel": "off",                      +
              "parallel_setup_cost": "0",                    +
              "parallel_tuple_cost": "0",                    +
diff --git a/src/test/regress/expected/external_table.out 
b/src/test/regress/expected/external_table.out
index 38fbb3458de..d102e2b0c77 100644
--- a/src/test/regress/expected/external_table.out
+++ b/src/test/regress/expected/external_table.out
@@ -23,6 +23,10 @@
 -- m/DETAIL:  Found \d+ URLs and \d+ primary segments./
 -- s/Found.+//
 --
+-- # normalize absolute source paths across environments (also handles file:// 
URIs)
+-- m|/.+/src/test/regress/|
+-- s|/.+/src/test/regress/|/ABSPATH/src/test/regress/|
+--
 -- end_matchsubs
 \getenv abs_srcdir PG_ABS_SRCDIR
 \getenv hostname PG_HOSTNAME
@@ -323,9 +327,9 @@ create external table badt1 (x text)
 location (:'badt1_file' )
 format 'text' (delimiter '|');
 select * from badt1;
-NOTICE:  gfile stat 
/home/gpadmin/cloudberry/src/test/regress/data/no/such/place/badt1.tbl failure: 
No such file or directory  (seg0 slice1 127.0.1.1:7002 pid=26072)
-NOTICE:  fstream unable to open file 
/home/gpadmin/cloudberry/src/test/regress/data/no/such/place/badt1.tbl  (seg0 
slice1 127.0.1.1:7002 pid=26072)
-ERROR:  could not open file 
"/home/gpadmin/cloudberry/src/test/regress/data/no/such/place/badt1.tbl": 404 
file not found  (seg0 slice1 127.0.1.1:7002 pid=26072)
+NOTICE:  gfile stat /ABSPATH/src/test/regress/data/no/such/place/badt1.tbl 
failure: No such file or directory  (seg0 slice1 127.0.1.1:7002 pid=26072)
+NOTICE:  fstream unable to open file 
/ABSPATH/src/test/regress/data/no/such/place/badt1.tbl  (seg0 slice1 
127.0.1.1:7002 pid=26072)
+ERROR:  could not open file 
"/ABSPATH/src/test/regress/data/no/such/place/badt1.tbl": 404 file not found  
(seg0 slice1 127.0.1.1:7002 pid=26072)
 drop external table badt1;
 --
 -- try a bad protocol
@@ -818,7 +822,7 @@ LOG ERRORS SEGMENT REJECT LIMIT 2;
 SELECT * FROM exttab_basic_3;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26072)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_basic_3, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_basic_3, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- Error log should be populated
 select count(*) > 0 from gp_read_error_log('exttab_basic_3');
  ?column? 
@@ -850,7 +854,7 @@ LOG ERRORS SEGMENT REJECT LIMIT 5;
 INSERT INTO exttab_insert_1 select * from exttab_basic_5;
 ERROR:  segment reject limit reached, aborting operation  (seg0 127.0.1.1:7002 
pid=26072)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_basic_5, line 18 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_basic_5, line 18 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT * from exttab_insert_1 order by i;
  i  |     j     
 ----+-----------
@@ -921,7 +925,7 @@ NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- 
Using column(s) named 'i'
 HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26167)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_basic_7, line 18 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_basic_7, line 18 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- Table should not exist
 SELECT * from exttab_ctas_2 order by i;
 ERROR:  relation "exttab_ctas_2" does not exist
@@ -1011,7 +1015,7 @@ WHERE e1.i = e2.i ORDER BY e1.i
 SELECT * FROM cte1 ORDER BY cte1.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice2 
127.0.1.1:7002 pid=26190)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_cte_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_cte_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 select count(*) from gp_read_error_log('exttab_cte_2');
  count 
 -------
@@ -1022,8 +1026,8 @@ select count(*) from gp_read_error_log('exttab_cte_2');
 select gp_read_error_log('exttab_cte_2');
                                                                                
                                                         gp_read_error_log      
                                                                                
                                                  
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ("Fri Jan 02 07:40:32.618206 2026 
PST",exttab_cte_2,"file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data
 
[/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data]",5,,"invalid
 input syntax for type integer: ""error_1"", column i",error_1,)
- ("Fri Jan 02 07:40:32.618206 2026 
PST",exttab_cte_2,"file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data
 
[/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data]",7,,"invalid
 input syntax for type integer: ""error_1"", column i",error_1,)
+ ("Fri Jan 02 07:40:32.618206 2026 
PST",exttab_cte_2,"file:/ABSPATH/src/test/regress/data/exttab_more_errors.data 
[/ABSPATH/src/test/regress/data/exttab_more_errors.data]",5,,"invalid input 
syntax for type integer: ""error_1"", column i",error_1,)
+ ("Fri Jan 02 07:40:32.618206 2026 
PST",exttab_cte_2,"file:/ABSPATH/src/test/regress/data/exttab_more_errors.data 
[/ABSPATH/src/test/regress/data/exttab_more_errors.data]",7,,"invalid input 
syntax for type integer: ""error_1"", column i",error_1,)
 (2 rows)
 
 -- end_ignore
@@ -1075,7 +1079,7 @@ NOTICE:  found 2 data formatting errors (2 or more input 
rows), rejected related
 SELECT COUNT(*) FROM exttab_permissions_2;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26072)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_permissions_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_permissions_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- Only superuser can do gp_truncate_error_log('*.*')
 DROP ROLE IF EXISTS exttab_non_superuser;
 NOTICE:  role "exttab_non_superuser" does not exist, skipping
@@ -1290,7 +1294,7 @@ SELECT sum(distinct e1.i), sum(distinct e2.i), e1.j FROM
 group by e1.j;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26262)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_subq_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1321,7 +1325,7 @@ group by e1.j
 HAVING sum(distinct e1.i) > (SELECT max(i) FROM exttab_subq_2);
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice5 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_subq_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1418,7 +1422,7 @@ FROM exttab_subq_2 e1, exttab_subq_1 e2
 WHERE e1.i = e2.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_subq_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- CSQ
 SELECT gp_truncate_error_log('exttab_subq_1');
  gp_truncate_error_log 
@@ -1438,7 +1442,7 @@ WHERE e1.j = e2.j and
 e1.i + 1 IN ( SELECT i from exttab_subq_2 WHERE i <= e1.i);
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26262)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_subq_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1467,7 +1471,7 @@ FROM exttab_subq_2 e1, exttab_subq_1 e2
 WHERE e1.i = e2.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_subq_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1597,7 +1601,7 @@ SELECT e1.i, e2.j FROM
 WHERE e1.i = e2.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_subtxs_2, line 7 of 
file://gpadmin:/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_subtxs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 COMMIT;
 -- Error logs should not have been rolled back.
 -- Check that number of errors is greater than 12 instead of checking for
@@ -1734,7 +1738,7 @@ SELECT e1.i, e2.j FROM
 WHERE e1.i = e2.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_txs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_txs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 COMMIT;
 -- Additional error rows should have been inserted into the error logs even if 
the tx is aborted.
 -- Truncate of error logs should not be rolled back even if the transaction is 
aborted. All operation on error logs are persisted.
@@ -1806,7 +1810,7 @@ SELECT e1.i, e2.j FROM
 WHERE e1.i = e2.i order by e1.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice2 
127.0.1.1:7002 pid=26343)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_txs_3, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_txs_3, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 COMMIT;
 -- Error logs should not exist for these tables that would have been rolled 
back
 SELECT count(*) FROM gp_read_error_log('exttab_txs_3');
@@ -1855,7 +1859,7 @@ LANGUAGE plpgsql volatile;
 SELECT * FROM exttab_udfs_func1();
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26362)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_udfs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SQL statement "SELECT sum(distinct e1.i) as sum_i, sum(distinct e2.i) as 
sum_j, e1.j as j FROM
           (SELECT i, j FROM exttab_udfs_1 WHERE i < 5 ) e1,
           (SELECT i, j FROM exttab_udfs_2 WHERE i < 10) e2
@@ -1895,7 +1899,7 @@ SELECT gp_truncate_error_log('exttab_udfs_2');
 INSERT INTO exttab_udfs_insert_1 SELECT * FROM exttab_udfs_func1();
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26389)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_udfs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SQL statement "SELECT sum(distinct e1.i) as sum_i, sum(distinct e2.i) as 
sum_j, e1.j as j FROM
           (SELECT i, j FROM exttab_udfs_1 WHERE i < 5 ) e1,
           (SELECT i, j FROM exttab_udfs_2 WHERE i < 10) e2
@@ -1981,7 +1985,7 @@ SELECT * FROM exttab_udfs_func2();
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
 ERROR:  segment reject limit reached, aborting operation  (seg0 127.0.1.1:7002 
pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_udfs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -2009,7 +2013,7 @@ SELECT exttab_udfs_func2();
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
 ERROR:  segment reject limit reached, aborting operation  (seg0 127.0.1.1:7002 
pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_udfs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -2037,7 +2041,7 @@ INSERT INTO exttab_udfs_insert_1 SELECT * FROM 
exttab_udfs_func2();
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
 ERROR:  segment reject limit reached, aborting operation  (seg0 127.0.1.1:7002 
pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_udfs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -2067,7 +2071,7 @@ HINT:  The 'DISTRIBUTED BY' clause determines the 
distribution of data. Make sur
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
 ERROR:  segment reject limit reached, aborting operation  (seg0 127.0.1.1:7002 
pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_udfs_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -2108,7 +2112,7 @@ SELECT * FROM exttab_union_2
 order by FOO.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice2 
127.0.1.1:7002 pid=26423)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_union_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_union_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- Error table count
 select count(*) > 0 from
 (
@@ -2144,7 +2148,7 @@ UNION ALL
 SELECT e1.i, e2.j from exttab_union_2 e1 INNER JOIN exttab_union_2 e2 ON e1.i 
= e2.i;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice2 
127.0.1.1:7002 pid=26444)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_union_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_union_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- should return 0 rows
 SELECT * from exttab_union_insert_1;
  i | j 
@@ -2231,7 +2235,7 @@ SELECT gp_truncate_error_log('exttab_views_2');
 SELECT * FROM exttab_views_3;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26462)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_views_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_views_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- Error table should be populated
 SELECT count(*) > 0 FROM
 (
@@ -2266,7 +2270,7 @@ SELECT gp_truncate_error_log('exttab_views_2');
 INSERT INTO exttab_views_insert_1 SELECT * FROM exttab_views_3;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26496)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_views_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_views_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- should not have any rows
 SELECT * FROM exttab_views_insert_1;
  i | j | k 
@@ -2306,7 +2310,7 @@ NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- 
Using column(s) named 'j'
 HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice2 
127.0.1.1:7002 pid=26490)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_views_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_views_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT * FROM exttab_views_ctas_1;
 ERROR:  relation "exttab_views_ctas_1" does not exist
 LINE 1: SELECT * FROM exttab_views_ctas_1;
@@ -2344,7 +2348,7 @@ NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- 
Using column(s) named 'j'
 HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice2 
127.0.1.1:7002 pid=26490)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_views_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_views_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 -- Relation should not exist
 SELECT * FROM exttab_views_ctas_1;
 ERROR:  relation "exttab_views_ctas_1" does not exist
@@ -2459,7 +2463,7 @@ ORDER BY c1.i
 limit 5;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice9 
127.0.1.1:7002 pid=26587)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_windows_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_windows_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT COUNT(*) > 0
 FROM
 (
@@ -2494,7 +2498,7 @@ WHERE e1.i = e2.i LIMIT 5
 SELECT * FROM cte1, exttab_limit_2 e3 where cte1.i = e3.i ORDER BY cte1.i 
LIMIT 3;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_limit_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_limit_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT count(*) FROM gp_read_error_log('exttab_limit_2');
  count 
 -------
@@ -2570,7 +2574,7 @@ WHERE e1.i = e2.i LIMIT 3
 SELECT * FROM cte1, exttab_limit_2 e3 where cte1.i = e3.i ORDER BY cte1.i 
LIMIT 5;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_limit_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_limit_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT count(*) > 0 FROM gp_read_error_log('exttab_limit_2');
  ?column? 
 ----------
@@ -2645,7 +2649,7 @@ SELECT gp_truncate_error_log('exttab_limit_2');
 SELECT * FROM exttab_limit_1 e1, exttab_limit_2 e2 where e1.i = e2.i LIMIT 3;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice3 
127.0.1.1:7002 pid=26670)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i
-CONTEXT:  External table exttab_limit_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
+CONTEXT:  External table exttab_limit_2, line 7 of 
file:/ABSPATH/src/test/regress/data/exttab_more_errors.data, column i
 SELECT count(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_limit_1')
@@ -2678,7 +2682,7 @@ LOG ERRORS SEGMENT REJECT LIMIT 20000;
 SELECT COUNT(*) FROM exttab_first_reject_limit_1;
 ERROR:  all 1000 first rows in this segment were rejected  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Aborting operation regardless of REJECT LIMIT value, last error was: 
invalid input syntax for type integer: "error_0", column i
-CONTEXT:  External table exttab_first_reject_limit_1, line 1000 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_first_errors.data,
 column i
+CONTEXT:  External table exttab_first_reject_limit_1, line 1000 of 
file:/ABSPATH/src/test/regress/data/exttab_first_errors.data, column i
 SELECT COUNT(*) > 0 FROM gp_read_error_log('exttab_first_reject_limit_1');
  ?column? 
 ----------
@@ -2717,7 +2721,7 @@ SET gp_initial_bad_row_limit = 2;
 SELECT COUNT(*) FROM exttab_first_reject_limit_2;
 ERROR:  all 2 first rows in this segment were rejected  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Aborting operation regardless of REJECT LIMIT value, last error was: 
invalid input syntax for type integer: "error_0", column i
-CONTEXT:  External table exttab_first_reject_limit_2, line 2 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_first_errors.data,
 column i
+CONTEXT:  External table exttab_first_reject_limit_2, line 2 of 
file:/ABSPATH/src/test/regress/data/exttab_first_errors.data, column i
 SELECT COUNT(*) > 0 from gp_read_error_log('exttab_first_reject_limit_2');
  ?column? 
 ----------
@@ -2735,7 +2739,7 @@ SELECT 
gp_truncate_error_log('exttab_first_reject_limit_2');
 SELECT COUNT(*) FROM exttab_first_reject_limit_2;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_0", 
column i
-CONTEXT:  External table exttab_first_reject_limit_2, line 500 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_first_errors.data,
 column i
+CONTEXT:  External table exttab_first_reject_limit_2, line 500 of 
file:/ABSPATH/src/test/regress/data/exttab_first_errors.data, column i
 SELECT COUNT(*) > 0 from gp_read_error_log('exttab_first_reject_limit_2');
  ?column? 
 ----------
@@ -2753,7 +2757,7 @@ SELECT 
gp_truncate_error_log('exttab_first_reject_limit_2');
 SELECT COUNT(*) FROM exttab_first_reject_limit_2;
 ERROR:  segment reject limit reached, aborting operation  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 DETAIL:  Last error was: invalid input syntax for type integer: "error_0", 
column i
-CONTEXT:  External table exttab_first_reject_limit_2, line 500 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_first_errors.data,
 column i
+CONTEXT:  External table exttab_first_reject_limit_2, line 500 of 
file:/ABSPATH/src/test/regress/data/exttab_first_errors.data, column i
 SELECT COUNT(*) > 0 from gp_read_error_log('exttab_first_reject_limit_2');
  ?column? 
 ----------
@@ -2822,7 +2826,7 @@ OPTIONS (hello 'world', bonjour 'again', nihao 'again and 
again' );
 --------+---------+-----------+----------+---------+-------------
  i      | integer |           |          |         | 
  j      | text    |           |          |         | 
-FDW options: (format 'text', delimiter '|', "null" E'\\N', escape E'\\', hello 
'world', bonjour 'again', nihao 'again and again', format_type 't', 
location_uris 
'file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_few_errors.data',
 execute_on 'ALL_SEGMENTS', log_errors 'f', encoding '6', is_writable 'false')
+FDW options: (format 'text', delimiter '|', "null" E'\\N', escape E'\\', hello 
'world', bonjour 'again', nihao 'again and again', format_type 't', 
location_uris 'file:/ABSPATH/src/test/regress/data/exttab_few_errors.data', 
execute_on 'ALL_SEGMENTS', log_errors 'f', encoding '6', is_writable 'false')
 
 \d exttab_with_option_empty
          Foreign table "public.exttab_with_option_empty"
@@ -2830,7 +2834,7 @@ FDW options: (format 'text', delimiter '|', "null" 
E'\\N', escape E'\\', hello '
 --------+---------+-----------+----------+---------+-------------
  i      | integer |           |          |         | 
  j      | text    |           |          |         | 
-FDW options: (format 'text', delimiter '|', "null" E'\\N', escape E'\\', 
format_type 't', location_uris 
'file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_few_errors.data',
 execute_on 'ALL_SEGMENTS', log_errors 'f', encoding '6', is_writable 'false')
+FDW options: (format 'text', delimiter '|', "null" E'\\N', escape E'\\', 
format_type 't', location_uris 
'file:/ABSPATH/src/test/regress/data/exttab_few_errors.data', execute_on 
'ALL_SEGMENTS', log_errors 'f', encoding '6', is_writable 'false')
 
 DROP EXTERNAL TABLE IF EXISTS exttab_with_option_empty;
 DROP EXTERNAL TABLE IF EXISTS exttab_with_option_1;
@@ -2998,7 +3002,7 @@ LANGUAGE plpgSQL READS SQL DATA;
 SET gp_log_gang TO DEBUG;
 SELECT * FROM exttab_error_context_callback_func();
 ERROR:  invalid input syntax for type integer: "1|1_number"  (seg0 slice1 
127.0.1.1:7002 pid=26824)
-CONTEXT:  External table exttab_error_context_callback, line 1 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab.data, 
column c1
+CONTEXT:  External table exttab_error_context_callback, line 1 of 
file:/ABSPATH/src/test/regress/data/exttab.data, column c1
 PL/pgSQL function exttab_error_context_callback_func() line 5 at FOR over 
SELECT rows
 SET gp_log_gang TO DEFAULT;
 DROP FUNCTION exttab_error_context_callback_func();
diff --git a/src/test/regress/expected/gp_connections.out 
b/src/test/regress/expected/gp_connections.out
index 9fe6bfb2470..e4025e94b3e 100644
--- a/src/test/regress/expected/gp_connections.out
+++ b/src/test/regress/expected/gp_connections.out
@@ -1,6 +1,22 @@
 --
 -- GPDB internal connection tests
 --
+--
+-- Segment connection tests
+--
+-- We should not be able to directly connect to a primary segment.
+-- Use a psql subprocess to test connection; its exit code won't affect us.
+-- start_matchsubs
+-- m/at "localhost" \(.*\), port \d+/
+-- s/at "localhost" \(.*\), port \d+/at "localhost" (IP), port PORT/
+-- end_matchsubs
+\! psql -h localhost -p $(psql -t -A -d regression -c "SELECT port FROM 
gp_segment_configuration WHERE content <> -1 AND role = 'p' LIMIT 1") -d 
postgres -c "SELECT 1" 2>&1
+psql: error: connection to server at "localhost" (IP), port PORT failed: 
FATAL:  connections to primary segments are not allowed
+DETAIL:  This database instance is running as a primary segment in a 
Cloudberry cluster and does not permit direct connections.
+HINT:  To force a connection anyway (dangerous!), use utility mode.
+--
+-- Internal connection tests
+--
 -- create a new user
 drop user if exists user_disallowed_via_local;
 create user user_disallowed_via_local with login;
@@ -37,16 +53,3 @@ select * from t1_of_user_disallowed_via_local, pg_sleep(0);
 
 -- cleanup settings if any
 \! sed -i '/user_disallowed_via_local/d' 
$COORDINATOR_DATA_DIRECTORY/pg_hba.conf;
---
--- Segment connection tests
---
--- We should not be able to directly connect to a primary segment.
--- start_ignore
-SELECT port FROM gp_segment_configuration
-                       WHERE content <> -1 AND role = 'p'
-                       LIMIT 1
-\gset
-ERROR:  permission denied for view gp_segment_configuration
-\connect - - - :port
-\connect: invalid integer value ":port" for connection option "port"
--- end_ignore
diff --git a/src/test/regress/expected/gp_tablespace.out 
b/src/test/regress/expected/gp_tablespace.out
index 0f4267bbed9..fa53640fa14 100644
--- a/src/test/regress/expected/gp_tablespace.out
+++ b/src/test/regress/expected/gp_tablespace.out
@@ -1,3 +1,7 @@
+-- start_matchsubs
+-- m|/.*/testtablespace_existing_version_dir/|
+-- 
s|/.*/testtablespace_existing_version_dir/|/ABSPATH/testtablespace_existing_version_dir/|
+-- end_matchsubs
 -- start_matchignore
 -- m/WARNING:  tablespace symlink path is too long for TAR/
 -- m/DETAIL:  The symlinked path \".*\" will be truncated to 100 characters 
when sending a TAR to the utilities \(e.g. pg_basebackup\)/
@@ -416,28 +420,28 @@ SELECT force_mirrors_to_catch_up();
 (1 row)
 
 \! ls $PG_ABS_SRCDIR/testtablespace_existing_version_dir/*
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/1:
+/ABSPATH/testtablespace_existing_version_dir/1:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/2:
+/ABSPATH/testtablespace_existing_version_dir/2:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/3:
+/ABSPATH/testtablespace_existing_version_dir/3:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/4:
+/ABSPATH/testtablespace_existing_version_dir/4:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/5:
+/ABSPATH/testtablespace_existing_version_dir/5:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/6:
+/ABSPATH/testtablespace_existing_version_dir/6:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/7:
+/ABSPATH/testtablespace_existing_version_dir/7:
 GPDB_99_399999991
 
-/home/gpadmin/cloudberry/src/test/regress/testtablespace_existing_version_dir/8:
+/ABSPATH/testtablespace_existing_version_dir/8:
 GPDB_99_399999991
 -- Test alter tablespace: PG does not seem to test these.    
 -- test SET & OWNER
diff --git a/src/test/regress/expected/profile.out 
b/src/test/regress/expected/profile.out
index 256d41024db..9c2c203602b 100644
--- a/src/test/regress/expected/profile.out
+++ b/src/test/regress/expected/profile.out
@@ -5,7 +5,7 @@
 SELECT COUNT(*) FROM pg_stat_activity;
  count 
 -------
-    10
+     9
 (1 row)
 
 -- Display pg_authid, pg_roles, pg_profile and pg_password_history catalog
diff --git a/src/test/regress/expected/stats.out 
b/src/test/regress/expected/stats.out
index 55b836f029c..b0e53f2141b 100644
--- a/src/test/regress/expected/stats.out
+++ b/src/test/regress/expected/stats.out
@@ -413,7 +413,7 @@ INSERT INTO drop_stats_test_xact DEFAULT VALUES;
 SELECT n_tup_ins FROM gp_stat_xact_all_tables_summary where relid = 
:drop_stats_test_xact_oid;
  n_tup_ins 
 -----------
-         1
+         2
 (1 row)
 
 DROP TABLE drop_stats_test_xact;
@@ -459,7 +459,7 @@ INSERT INTO drop_stats_test_xact DEFAULT VALUES;
 SELECT n_tup_ins FROM gp_stat_xact_all_tables_summary where relid = 
:drop_stats_test_xact_oid;
  n_tup_ins 
 -----------
-         1
+         2
 (1 row)
 
 DROP TABLE drop_stats_test_xact;
@@ -499,7 +499,7 @@ INSERT INTO drop_stats_test_subxact DEFAULT VALUES;
 SELECT n_tup_ins FROM gp_stat_xact_all_tables_summary where relid = 
:drop_stats_test_subxact_oid;
  n_tup_ins 
 -----------
-         2
+         4
 (1 row)
 
 SAVEPOINT sp2;
@@ -508,7 +508,7 @@ ROLLBACK TO SAVEPOINT sp2;
 SELECT n_tup_ins FROM gp_stat_xact_all_tables_summary where relid = 
:drop_stats_test_subxact_oid;
  n_tup_ins 
 -----------
-         2
+         4
 (1 row)
 
 COMMIT;
diff --git a/src/test/regress/input/uao_dml/uao_dml.source 
b/src/test/regress/input/uao_dml/uao_dml.source
index b51faff222d..e13a17c2b20 100644
--- a/src/test/regress/input/uao_dml/uao_dml.source
+++ b/src/test/regress/input/uao_dml/uao_dml.source
@@ -70,11 +70,11 @@ select reltuples from pg_class where relname = 
'ao2_@amname@';
 select count(*)  from ao2_@amname@;
 delete from ao2_@amname@ where i < 27;
 -- make sure the pgstat msg sends out at least PGSTAT_STAT_INTERVAL msec since 
last one
-select pg_sleep(0.6);
+SELECT gp_stat_force_next_flush();
 analyze ao2_@amname@;
 select count(*)  from ao2_@amname@;
 -- make sure the pgstat msg sends out at least PGSTAT_STAT_INTERVAL msec since 
last one
-select pg_sleep(0.6);
+SELECT gp_stat_force_next_flush();
 select pg_stat_get_live_tuples(c.oid) as livetuples, 
pg_stat_get_dead_tuples(c.oid) as deadtuples 
 from pg_class c 
 where relname = 'ao2_@amname@';
diff --git a/src/test/regress/output/uao_dml/uao_dml.source 
b/src/test/regress/output/uao_dml/uao_dml.source
index 49963db03e7..db6c4ec0200 100644
--- a/src/test/regress/output/uao_dml/uao_dml.source
+++ b/src/test/regress/output/uao_dml/uao_dml.source
@@ -147,9 +147,9 @@ select count(*)  from ao2_@amname@;
 
 delete from ao2_@amname@ where i < 27;
 -- make sure the pgstat msg sends out at least PGSTAT_STAT_INTERVAL msec since 
last one
-select pg_sleep(0.6);
- pg_sleep 
-----------
+SELECT gp_stat_force_next_flush();
+ gp_stat_force_next_flush 
+--------------------------
  
 (1 row)
 
@@ -161,9 +161,9 @@ select count(*)  from ao2_@amname@;
 (1 row)
 
 -- make sure the pgstat msg sends out at least PGSTAT_STAT_INTERVAL msec since 
last one
-select pg_sleep(0.6);
- pg_sleep 
-----------
+SELECT gp_stat_force_next_flush();
+ gp_stat_force_next_flush 
+--------------------------
  
 (1 row)
 
diff --git a/src/test/regress/sql/external_table.sql 
b/src/test/regress/sql/external_table.sql
index b8054a085d4..29e9270ce19 100644
--- a/src/test/regress/sql/external_table.sql
+++ b/src/test/regress/sql/external_table.sql
@@ -23,6 +23,10 @@
 -- m/DETAIL:  Found \d+ URLs and \d+ primary segments./
 -- s/Found.+//
 --
+-- # normalize absolute source paths across environments (also handles file:// 
URIs)
+-- m|/.+/src/test/regress/|
+-- s|/.+/src/test/regress/|/ABSPATH/src/test/regress/|
+--
 -- end_matchsubs
 \getenv abs_srcdir PG_ABS_SRCDIR
 \getenv hostname PG_HOSTNAME
diff --git a/src/test/regress/sql/gp_connections.sql 
b/src/test/regress/sql/gp_connections.sql
index 9b24d978e48..92971cfc504 100644
--- a/src/test/regress/sql/gp_connections.sql
+++ b/src/test/regress/sql/gp_connections.sql
@@ -2,6 +2,22 @@
 -- GPDB internal connection tests
 --
 
+--
+-- Segment connection tests
+--
+
+-- We should not be able to directly connect to a primary segment.
+-- Use a psql subprocess to test connection; its exit code won't affect us.
+-- start_matchsubs
+-- m/at "localhost" \(.*\), port \d+/
+-- s/at "localhost" \(.*\), port \d+/at "localhost" (IP), port PORT/
+-- end_matchsubs
+\! psql -h localhost -p $(psql -t -A -d regression -c "SELECT port FROM 
gp_segment_configuration WHERE content <> -1 AND role = 'p' LIMIT 1") -d 
postgres -c "SELECT 1" 2>&1
+
+--
+-- Internal connection tests
+--
+
 -- create a new user
 drop user if exists user_disallowed_via_local;
 create user user_disallowed_via_local with login;
@@ -30,18 +46,3 @@ select * from t1_of_user_disallowed_via_local, pg_sleep(0);
 
 -- cleanup settings if any
 \! sed -i '/user_disallowed_via_local/d' 
$COORDINATOR_DATA_DIRECTORY/pg_hba.conf;
-
---
--- Segment connection tests
---
-
--- We should not be able to directly connect to a primary segment.
--- start_ignore
-SELECT port FROM gp_segment_configuration
-                       WHERE content <> -1 AND role = 'p'
-                       LIMIT 1
-\gset
-\connect - - - :port
--- end_ignore
--- DON'T PUT ANYTHING BELOW THIS TEST! It'll be ignored since the above 
\connect
--- fails and exits the script. Add them above, instead.
diff --git a/src/test/regress/sql/gp_tablespace.sql 
b/src/test/regress/sql/gp_tablespace.sql
index 30ab9236949..fbfd411201e 100644
--- a/src/test/regress/sql/gp_tablespace.sql
+++ b/src/test/regress/sql/gp_tablespace.sql
@@ -1,3 +1,7 @@
+-- start_matchsubs
+-- m|/.*/testtablespace_existing_version_dir/|
+-- 
s|/.*/testtablespace_existing_version_dir/|/ABSPATH/testtablespace_existing_version_dir/|
+-- end_matchsubs
 -- start_matchignore
 -- m/WARNING:  tablespace symlink path is too long for TAR/
 -- m/DETAIL:  The symlinked path \".*\" will be truncated to 100 characters 
when sending a TAR to the utilities \(e.g. pg_basebackup\)/


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

Reply via email to