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


The following commit(s) were added to refs/heads/cbdb-postgres-merge by this 
push:
     new cd065a2d93f Fix some answer files
cd065a2d93f is described below

commit cd065a2d93f2af4200b2661b85ad60f3af449477
Author: Jinbao Chen <[email protected]>
AuthorDate: Fri Jan 2 23:48:14 2026 +0800

    Fix some answer files
---
 GNUmakefile.in                                     |   4 +-
 src/test/regress/expected/alter_table.out          |   3 +-
 src/test/regress/expected/create_table.out         |   3 +-
 src/test/regress/expected/external_table.out       | 711 +++++++++++++--------
 .../expected/index_constraint_naming_partition.out |   7 +-
 src/test/regress/expected/partition_ddl.out        |   8 +-
 src/test/regress/sql/external_table.sql            | 196 +++---
 7 files changed, 563 insertions(+), 369 deletions(-)

diff --git a/GNUmakefile.in b/GNUmakefile.in
index f9955375051..4e08ad6ee67 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -14,7 +14,7 @@ all:
 #      $(MAKE) -C contrib/auto_explain all
        $(MAKE) -C contrib/citext all
 #      $(MAKE) -C contrib/file_fdw all
-#      $(MAKE) -C contrib/formatter all
+       $(MAKE) -C contrib/formatter all
 #      $(MAKE) -C contrib/formatter_fixedwidth all
 #      $(MAKE) -C contrib/fuzzystrmatch all
        $(MAKE) -C contrib/extprotocol all
@@ -61,7 +61,7 @@ install:
 #      $(MAKE) -C contrib/auto_explain $@
        $(MAKE) -C contrib/citext $@
 #      $(MAKE) -C contrib/file_fdw $@
-#      $(MAKE) -C contrib/formatter $@
+       $(MAKE) -C contrib/formatter $@
 #      $(MAKE) -C contrib/formatter_fixedwidth $@
 #      $(MAKE) -C contrib/fuzzystrmatch $@
        $(MAKE) -C contrib/extprotocol $@
diff --git a/src/test/regress/expected/alter_table.out 
b/src/test/regress/expected/alter_table.out
index fc8bd2f7689..da9b05fdb76 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -3997,8 +3997,7 @@ ALTER TABLE partitioned ALTER COLUMN b TYPE char(5);
 ERROR:  cannot alter column "b" because it is part of the partition key of 
relation "partitioned"
 -- specifying storage parameters for partitioned tables is not supported
 ALTER TABLE partitioned SET (fillfactor=100);
-ERROR:  cannot specify storage parameters for a partitioned table
-HINT:  Specify storage parameters for its leaf partitions instead.
+ERROR:  unrecognized parameter "fillfactor"
 -- partitioned table cannot participate in regular inheritance
 CREATE TABLE nonpartitioned (
        a int,
diff --git a/src/test/regress/expected/create_table.out 
b/src/test/regress/expected/create_table.out
index 53e6f72289f..46235d97e46 100644
--- a/src/test/regress/expected/create_table.out
+++ b/src/test/regress/expected/create_table.out
@@ -991,8 +991,7 @@ Number of partitions: 0
 DROP TABLE parted_col_comment;
 -- specifying storage parameters for partitioned tables is not supported
 CREATE TABLE parted_col_comment (a int, b text) PARTITION BY LIST (a) WITH 
(fillfactor=100);
-ERROR:  cannot specify storage parameters for a partitioned table
-HINT:  Specify storage parameters for its leaf partitions instead.
+ERROR:  unrecognized parameter "fillfactor"
 -- list partitioning on array type column
 CREATE TABLE arrlp (a int[]) PARTITION BY LIST (a);
 CREATE TABLE arrlp12 PARTITION OF arrlp FOR VALUES IN ('{1}', '{2}');
diff --git a/src/test/regress/expected/external_table.out 
b/src/test/regress/expected/external_table.out
index c7c628e5c6b..798a93d415b 100644
--- a/src/test/regress/expected/external_table.out
+++ b/src/test/regress/expected/external_table.out
@@ -24,6 +24,9 @@
 -- s/Found.+//
 --
 -- end_matchsubs
+\getenv abs_srcdir PG_ABS_SRCDIR
+\getenv hostname PG_HOSTNAME
+\set nation_tbl 'file://' :hostname :abs_srcdir '/data/nation.tbl'
 CREATE TABLE REG_REGION (R_REGIONKEY INT, R_NAME CHAR(25), R_COMMENT 
VARCHAR(152)) DISTRIBUTED BY (R_REGIONKEY);
 -- --------------------------------------
 -- 'file' protocol - (only CREATE, don't SELECT - won't work on distributed 
installation)
@@ -32,10 +35,10 @@ CREATE EXTERNAL TABLE EXT_NATION  ( N_NATIONKEY  INTEGER ,
                             N_NAME       CHAR(25) ,
                             N_REGIONKEY  INTEGER ,
                             N_COMMENT    VARCHAR(152))
-location ('file://@hostname@@abs_srcdir@/data/nation.tbl' )
+location (:'nation_tbl' )
 FORMAT 'text' (delimiter '|');
 CREATE EXTERNAL TABLE EXT_REGION  (LIKE REG_REGION)
-location ('file://@hostname@@abs_srcdir@/data/region.tbl' )
+location (:'nation_tbl' )
 FORMAT 'text' (delimiter '|');
 -- Only tables with custom protocol should create dependency, due to a bug 
there
 -- used to be entries created for non custom protocol tables with refobjid=0.
@@ -51,81 +54,186 @@ DROP EXTERNAL TABLE EXT_REGION;
 -- --------------------------------------
 -- check platform
 -- --------------------------------------
+DROP TABLE IF EXISTS REG_REGION;
+DROP TABLE IF EXISTS tableless_heap;
+NOTICE:  table "tableless_heap" does not exist, skipping
+DROP TABLE IF EXISTS errlog_save;
+NOTICE:  table "errlog_save" does not exist, skipping
+DROP TABLE IF EXISTS exttab_insert_1;
+NOTICE:  table "exttab_insert_1" does not exist, skipping
+DROP TABLE IF EXISTS exttab_ctas_1;
+NOTICE:  table "exttab_ctas_1" does not exist, skipping
+DROP TABLE IF EXISTS exttab_constraints_insert_1;
+NOTICE:  table "exttab_constraints_insert_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS tableless_ext;
+NOTICE:  foreign table "tableless_ext" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS ret_too_many_uris;
+NOTICE:  foreign table "ret_too_many_uris" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS wet_too_many_uris;
+NOTICE:  foreign table "wet_too_many_uris" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_1;
+NOTICE:  foreign table "exttab_basic_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_error_1;
+NOTICE:  foreign table "exttab_basic_error_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_2;
+NOTICE:  foreign table "exttab_basic_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_3;
+NOTICE:  foreign table "exttab_basic_3" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_4;
+NOTICE:  foreign table "exttab_basic_4" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_5;
+NOTICE:  foreign table "exttab_basic_5" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_6;
+NOTICE:  foreign table "exttab_basic_6" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_basic_7;
+NOTICE:  foreign table "exttab_basic_7" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_constraints_1;
+NOTICE:  foreign table "exttab_constraints_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_cte_1;
+NOTICE:  foreign table "exttab_cte_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_cte_2;
+NOTICE:  foreign table "exttab_cte_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_permissions_1;
+NOTICE:  foreign table "exttab_permissions_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_permissions_2;
+NOTICE:  foreign table "exttab_permissions_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_permissions_3;
+NOTICE:  foreign table "exttab_permissions_3" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_subq_1;
+NOTICE:  foreign table "exttab_subq_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_subq_2;
+NOTICE:  foreign table "exttab_subq_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_subtxs_1;
+NOTICE:  foreign table "exttab_subtxs_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_subtxs_2;
+NOTICE:  foreign table "exttab_subtxs_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_txs_1;
+NOTICE:  foreign table "exttab_txs_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_txs_2;
+NOTICE:  foreign table "exttab_txs_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_udfs_1;
+NOTICE:  foreign table "exttab_udfs_1" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_udfs_2;
+NOTICE:  foreign table "exttab_udfs_2" does not exist, skipping
+DROP EXTERNAL TABLE IF EXISTS exttab_views_3;
+NOTICE:  foreign table "exttab_views_3" does not exist, skipping
+DROP EXTERNAL WEB TABLE IF EXISTS table_env;
+NOTICE:  foreign table "table_env" does not exist, skipping
+DROP EXTERNAL WEB TABLE IF EXISTS table_master;
+NOTICE:  foreign table "table_master" does not exist, skipping
+DROP EXTERNAL WEB TABLE IF EXISTS table_qry;
+NOTICE:  foreign table "table_qry" does not exist, skipping
+DROP VIEW IF EXISTS exttab_views_3;
+NOTICE:  view "exttab_views_3" does not exist, skipping
+DROP PROTOCOL IF EXISTS demoprot_untrusted;
+NOTICE:  protocol "demoprot_untrusted" does not exist, skipping
+DROP PROTOCOL IF EXISTS demoprot_untrusted2;
+NOTICE:  protocol "demoprot_untrusted2" does not exist, skipping
 drop external web table if exists check_ps;
-NOTICE:  table "check_ps" does not exist, skipping
+NOTICE:  foreign table "check_ps" does not exist, skipping
 CREATE EXTERNAL WEB TABLE check_ps (x text)
 execute E'( (ps -ef || ps -aux) | grep gpfdist | grep -v grep)'
 on SEGMENT 0
 format 'text';
 drop external web table if exists check_env;
-NOTICE:  table "check_env" does not exist, skipping
+NOTICE:  foreign table "check_env" does not exist, skipping
 CREATE EXTERNAL WEB TABLE check_env (x text)
 execute E'( env | sort)'
 on SEGMENT 0
 format 'text';
 select * from check_ps;
-ERROR:  external table check_ps command ended with error.  (seg0 slice1 
@hostname@:50000 pid=64819)
+ERROR:  external table check_ps command ended with error.  (seg0 slice1 
127.0.1.1:7002 pid=26072)
 DETAIL:  Command: execute:( (ps -ef || ps -aux) | grep gpfdist | grep -v grep)
 select * from check_env;
-                                                                               
                                                                                
                                                                       x        
                                                                                
                                                                                
                                                              
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- CLICOLOR=1
- 
DYLD_LIBRARY_PATH=/Users/@curusername@/cloudberry-db-devel/lib:/Users/@curusername@/cloudberry-db-devel/ext/python/lib:/opt/gcc_infrastructure/lib:/Users/@curusername@/greenplum-perfmon-web-4.0.1.0/lib:/Users/@curusername@/cloudberry-db-devel/lib:/Users/@curusername@/cloudberry-db-devel/ext/python/lib:
- GPHOME=/Users/@curusername@/cloudberry-db-devel
- GPROOT=/Users/@curusername@
- GP_CID=0
+                                                                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
              [...]
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 [...]
+ 
BACKOUT_FILE=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/gpAdminLogs/backout_gpinitsystem_gpadmin_20260102_233846
+ BLDWRAP_POSTGRES_CONF_ADDONS=fsync=on 
+ 
COORDINATOR_DATA_DIRECTORY=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/qddir/demoDataDir-1
+ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
+ DEBUGINFOD_URLS=https://debuginfod.ubuntu.com 
+ DEFAULT_QD_MAX_CONNECT=150
+ DEMO_PORT_BASE=7002
+ ENCODING=UNICODE
+ GP_CID=35
  GP_DATABASE=regression
- GP_DATE=20110816
- GP_HADOOP_CONN_JARDIR=lib//hadoop
- GP_HADOOP_CONN_VERSION=CE_1.0.0.0
- GP_MASTER_HOST=127.0.0.1
- GP_MASTER_PORT=5432
+ GP_DATE=20260102
+ GPERA=2fe6e473bc3ac1f8_260102233947
+ GPHOME=/home/gpadmin/gpdb
+ GP_MASTER_HOST=127.0.1.1
+ GP_MASTER_PORT=7000
  GP_QUERY_STRING=select * from check_env;
- GP_SEGMENT_COUNT=2
+ 
GP_SEG_DATADIR=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0
+ GP_SEGMENT_COUNT=3
  GP_SEGMENT_ID=0
- GP_SEG_DATADIR=/Users/@curusername@/greenplum-db-data/dbfast1/gpseg0
- 
GP_SEG_PG_CONF=/Users/@curusername@/greenplum-db-data/dbfast1/gpseg0/postgresql.conf
- GP_SEG_PORT=50000
- GP_SESSION_ID=438
+ 
GP_SEG_PG_CONF=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0/postgresql.conf
+ GP_SEG_PORT=7002
+ GPSESSID=0000000000
+ GP_SESSION_ID=31
  GP_SN=1
- GP_TIME=132701
- GP_USER=@curusername@
- GP_XID=1313526180-0000006772
- HADOOP_HOME=/Users/@curusername@/WorkDir/hadoop-0.20.1-dev
- HADOOP_VERSION=0.21.0
- HOME=/Users/@curusername@
- JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
- LC_COLLATE=en_US.utf-8
- LC_CTYPE=en_US.utf-8
+ GP_TIME=234031
+ GP_USER=gpadmin
+ GP_XID=31-0000000053
+ HOME=/home/gpadmin
+ LANG=en_US.UTF-8
+ LC_ALL_SETTINGS=--lc-messages=en_US.UTF-8
+ LC_COLLATE=en_US.UTF-8
+ LC_CTYPE=en_US.UTF-8
  LC_MESSAGES=C
  LC_MONETARY=C
+ --lc-monetary=en_US.UTF-8
  LC_NUMERIC=C
+ --lc-numeric=en_US.UTF-8
+ LC_TERMINAL=iTerm2
+ LC_TERMINAL_VERSION=3.5.11
  LC_TIME=C
- LOGNAME=@curusername@
- MAIL=/var/mail/@curusername@
- COORDINATOR_DATA_DIRECTORY=//Users/@curusername@/greenplum-master/gpseg-1
- OPENSSL_CONF=/Users/@curusername@/cloudberry-db-devel/etc/openssl.cnf
- P4CONFIG=.p4config
- 
PATH=/Users/@curusername@/cloudberry-db-devel/bin:/Users/@curusername@/cloudberry-db-devel/ext/python/bin:/Users/@curusername@/cloudberry-db-devel/bin:/Users/@curusername@/cloudberry-db-devel/ext/python/bin:/opt/gcc-4.4.2/bin:/Users/@curusername@/Workdir/mybin:/Users/@curusername@/greenplum-perfmon-web-4.0.1.0/bin:/Users/@curusername@/cloudberry-db-devel/bin:/Users/@curusername@/cloudberry-db-devel/ext/python/bin:/Users/@curusername@/cloudberry-db-devel/bin:/Users/@curusername@/cloudber
 [...]
- PGDATA=/Users/@curusername@/greenplum-db-data/dbfast1/gpseg0
- PGHOST=127.0.0.1
- PGSYSCONFDIR=/Users/@curusername@/cloudberry-db-devel/etc/postgresql
- PWD=/Users/@curusername@/greenplum-db-data/dbfast1/gpseg0
- PYTHONHOME=/Users/@curusername@/cloudberry-db-devel/ext/python
- PYTHONPATH=/Users/@curusername@/cloudberry-db-devel/lib/python
+ --lc-time=en_US.UTF-8
+ LD_LIBRARY_PATH=/home/gpadmin/gpdb/lib:/home/gpadmin/gpdb/lib
+ LESSCLOSE=/usr/bin/lesspipe %s %s
+ LESSOPEN=| /usr/bin/lesspipe %s
+ LOCALE_SETTING=
+ 
LOG_FILE=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/gpAdminLogs/gpinitsystem_20260102.log
+ LOGNAME=gpadmin
+ 
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.t
 [...]
+ MAKEFLAGS=w
+ MAKELEVEL=2
+ MAKE_TERMERR=/dev/pts/2
+ MAKE_TERMOUT=/dev/pts/2
+ 
MASTER_DATA_DIRECTORY=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/qddir/demoDataDir-1
+ MFLAGS=-w
+ NUM_PRIMARY_MIRROR_PAIRS=3
+ OLDPWD=/home/gpadmin/cloudberry
+ PARALLEL_STATUS_FILE=/tmp/gpinitsystem_parallel_status_file.22146
+ 
PATH=/home/gpadmin/gpdb/bin:/home/gpadmin/gpdb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
+ PG_CONF_ADD_FILE=clusterConfigPostgresAddonsFile
+ PGDATA=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0
+ PG_GRANDPARENT_PID=25556
+ PGPORT=7000
+ PGSYSCONFDIR=/home/gpadmin/gpdb/etc/postgresql
+ PWD=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast1/demoDataDir0
+ PYTHONPATH=/home/gpadmin/gpdb/lib/python
+ QD_DIR=/home/gpadmin/cloudberry/gpAux/gpdemo/datadirs/dbfast3/demoDataDir2
+ QE_MAX_CONNECT=750
+ QE_SHARED_BUFFERS=128000kB
+ SEG_PREFIX=demoDataDir
  SHELL=/bin/bash
  SHLVL=4
- SSH_CLIENT=127.0.0.1 50658 22
- SSH_CONNECTION=127.0.0.1 50658 127.0.0.1 22
- TERM=xterm-color
- USER=@curusername@
- VERSIONER_PERL_PREFER_32_BIT=yes
- VERSIONER_PERL_VERSION=5.8.9
- ZK_HOME=/Users/@curusername@/WorkDir/zookeeper-3.3.3
+ SSH_CLIENT=192.168.68.1 56133 22
+ SSH_CONNECTION=192.168.68.1 56133 192.168.68.136 22
+ SSH_TTY=/dev/pts/2
+ TERM=xterm-256color
+ TOTAL_SEG=3
+ USER=gpadmin
  _=/usr/bin/env
- __CF_USER_TEXT_ENCODING=0x1F7:0:0
-(55 rows)
-
+ XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
+ XDG_RUNTIME_DIR=/run/user/1000
+ XDG_SESSION_CLASS=user
+ XDG_SESSION_ID=16526
+ XDG_SESSION_TYPE=tty
+(83 rows)
+
+drop external table check_ps;
+drop external table check_env;
 -- end_ignore
 -- table to get shell command "env" output which list all environment variable
 CREATE EXTERNAL WEB TABLE table_env (val TEXT)
@@ -144,8 +252,9 @@ SELECT * FROM table_env WHERE val LIKE 'GP_QUERY%\%' ESCAPE 
'&' ORDER BY val ASC
 (1 row)
 
 -- ensure squelching on master
+\set lineitem 'cat ' :abs_srcdir '/data/lineitem.csv'
 CREATE EXTERNAL WEB TABLE table_master (val TEXT)
-  EXECUTE E'cat @abs_srcdir@/data/lineitem.csv' ON MASTER
+  EXECUTE E:'lineitem' ON MASTER
   FORMAT 'TEXT' (ESCAPE 'OFF');
 BEGIN;
 DECLARE _psql_cursor NO SCROLL CURSOR FOR SELECT 1 FROM table_master;
@@ -182,21 +291,22 @@ SELECT * FROM table_qry WHERE val LIKE '%\%' ESCAPE '&' 
ORDER BY val ASC;
 create external web table ext_stderr1(a text) execute 'nosuchcommand' format 
'text';
 create external web table ext_stderr2(a text) execute 'cat nosuchfile.txt' 
format 'text';
 select * from ext_stderr1;
-ERROR:  external table ext_stderr1 command ended with error. sh: 
nosuchcommand: command not found  (seg0 slice1 @hostname@:50000 pid=64819)
+ERROR:  external table ext_stderr1 command ended with error. sh: 1: 
nosuchcommand: not found  (seg0 slice1 127.0.1.1:7002 pid=26072)
 DETAIL:  Command: execute:nosuchcommand
 select * from ext_stderr2;
-ERROR:  external table ext_stderr2 command ended with error. cat: 
nosuchfile.txt: No such file or directory  (seg0 slice1 @hostname@:50000 
pid=64819)
+ERROR:  external table ext_stderr2 command ended with error. cat: 
nosuchfile.txt: No such file or directory  (seg1 slice1 127.0.1.1:7003 
pid=26073)
 DETAIL:  Command: execute:cat nosuchfile.txt
 drop external web table ext_stderr1;
 drop external web table ext_stderr2;
 --
 -- bad csv (quote must be a single char)
 --
+\set whois_file 'gpfdist://' :hostname ':7070/exttab1/whois.csv'
 create external table bad_whois (
 source_lineno                  int,
 domain_name                    varchar(350)
 )
-location ('gpfdist://@hostname@:7070/exttab1/whois.csv' )
+location (:'whois_file' )
 format 'csv' ( header quote as 'ggg');
 ERROR:  COPY quote must be a single one-byte character
 select count(*) from bad_whois;
@@ -208,26 +318,28 @@ ERROR:  foreign table "bad_whois" does not exist
 --
 -- try a bad location
 --
+\set badt1_file 'file://' :hostname :abs_srcdir '/data/no/such/place/badt1.tbl'
 create external table badt1 (x text)
-location ('file://@hostname@@abs_srcdir@/data/no/such/place/badt1.tbl' )
+location (:'badt1_file' )
 format 'text' (delimiter '|');
 select * from badt1;
-NOTICE:  gfile stat @abs_srcdir@/data/no/such/place/badt1.tbl failure: No such 
file or directory  (seg0 slice1 @hostname@:50000 pid=64819)
-NOTICE:  fstream unable to open file @abs_srcdir@/data/no/such/place/badt1.tbl 
 (seg0 slice1 @hostname@:50000 pid=64819)
-ERROR:  could not open file "@abs_srcdir@/data/no/such/place/badt1.tbl": 404 
file not found  (seg0 slice1 @hostname@:50000 pid=64819)
+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)
 drop external table badt1;
 --
 -- try a bad protocol
 --
+\set baadt2_file 'bad_protocol://' :hostname :abs_srcdir 
'/data/no/such/place/badt2.tbl'
 create external table badt2 (x text)
-location ('bad_protocol://@hostname@@abs_srcdir@/data/no/such/place/badt2.tbl' 
)
+location (:'baadt2_file' )
 format 'text' (delimiter '|');
 ERROR:  protocol "bad_protocol" does not exist
 --
 -- ALTER (partial support)
 --
 create external table ext (a int, x text)
-location ('file://@hostname@@abs_srcdir@/data/no/such/place/badt1.tbl' )
+location (:'badt1_file' )
 format 'text';
 alter table ext drop column a; -- should pass
 alter external table ext add column a int; -- pass
@@ -249,7 +361,8 @@ ERROR:  cannot update foreign table "ext"
 insert into ext(x) values(123);
 ERROR:  foreign table "ext" does not allow inserts
 create index ext_index on ext(x); -- should fail
-ERROR:  cannot create index on foreign table "ext"
+ERROR:  cannot create index on relation "ext"
+DETAIL:  This operation is not supported for foreign tables.
 drop table ext; -- should fail (wrong object)
 ERROR:  "ext" is not a table
 HINT:  Use DROP FOREIGN TABLE to remove a foreign table.
@@ -263,8 +376,6 @@ DROP EXTERNAL TABLE IF EXISTS ext_r;
 NOTICE:  foreign table "ext_r" does not exist, skipping
 DROP ROLE IF EXISTS extprotu;
 NOTICE:  role "extprotu" does not exist, skipping
-NOTICE:  role "extprotu" does not exist, skipping  (seg0 @hostname@:50000 
pid=64819)
-NOTICE:  role "extprotu" does not exist, skipping  (seg1 @hostname@:50001 
pid=64820)
 CREATE OR REPLACE FUNCTION write_to_file() RETURNS integer as 
'$libdir/gpextprotocol.so', 'demoprot_export' LANGUAGE C STABLE NO SQL;
 CREATE OR REPLACE FUNCTION read_from_file() RETURNS integer as 
'$libdir/gpextprotocol.so', 'demoprot_import' LANGUAGE C STABLE NO SQL;
 DROP PROTOCOL IF EXISTS demoprot;
@@ -300,7 +411,7 @@ GRANT INSERT ON PROTOCOL demoprot TO extprotu;
 \t on
 -- print with tuples-only mode : suppress diff related to user string length.
 SELECT ptcname, ptcacl FROM PG_EXTPROTOCOL WHERE ptcname = 'demoprot';
- demoprot | {@curusername@=ar/@curusername@,extprotu=ar/@curusername@}
+ demoprot | {gpadmin=ar/gpadmin,extprotu=ar/gpadmin}
 
 \t off
 SET SESSION AUTHORIZATION extprotu;
@@ -408,7 +519,8 @@ DROP EXTERNAL TABLE public.test_ext;
 -- positive
 create writable external web table wet_pos4(a text, b text) execute 'some 
command' format 'text';
 -- negative
-create writable external table wet_neg1(a text, b text) 
location('file://@hostname@@abs_srcdir@/badt1.tbl') format 'text';
+\set badt1_file2 'file://' :hostname :abs_srcdir '/badt1.tbl'
+create writable external table wet_neg1(a text, b text) 
location(:'badt1_file2') format 'text';
 ERROR:  unsupported URI protocol 'file' for writable external table
 HINT:  Writable external tables may use 'gpfdist' or 'gpfdists' URIs only.
 create writable external table wet_neg1(a text, b text) 
location('gpfdist://foo:7070/wet.out', 'gpfdist://foo:7070/wet.out') format 
'text';
@@ -426,8 +538,9 @@ HINT:  Create the table as READABLE instead.
 -- scans, because the planner generated plans that used the CTID attribute
 -- to implement certain semi-joins. Nowadays, we use generated row IDs in
 -- such plans, and don't need CTID for that purpose anymore.
+\set mpp17980_file2 'file://' :hostname :abs_srcdir '/data/mpp17980.data'
 CREATE EXTERNAL TABLE ext_mpp17980 ( id int , id1 int , id2 int)
-LOCATION ('file://@hostname@@abs_srcdir@/data/mpp17980.data')
+LOCATION (:'mpp17980_file2')
 FORMAT 'CSV' ( DELIMITER ',' NULL ' ');
 CREATE TABLE mpp17980 (id int, date date, amt decimal(10,2))
 DISTRIBUTED randomly PARTITION BY RANGE (date)
@@ -471,9 +584,12 @@ SELECT ctid, * FROM ext_mpp17980;
 
 DROP EXTERNAL TABLE ext_mpp17980;
 DROP TABLE mpp17980;
-COPY (VALUES('1,2'),('1,2,3'),('1,'),('1')) TO 
'@abs_srcdir@/data/tableless.csv';
+\set tableless_file :abs_srcdir '/data/tableless.csv'
+COPY (VALUES('1,2'),('1,2,3'),('1,'),('1')) TO :'tableless_file';
 CREATE TABLE tableless_heap(a int, b int);
-COPY tableless_heap FROM '@abs_srcdir@/data/tableless.csv' CSV LOG ERRORS 
SEGMENT REJECT LIMIT 10;
+NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' 
as the Apache Cloudberry data distribution key for this table.
+HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
+COPY tableless_heap FROM :'tableless_file' CSV LOG ERRORS SEGMENT REJECT LIMIT 
10;
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
 SELECT relname, linenum, errmsg FROM gp_read_error_log('tableless_heap');
     relname     | linenum |                errmsg                 
@@ -483,6 +599,8 @@ SELECT relname, linenum, errmsg FROM 
gp_read_error_log('tableless_heap');
 (2 rows)
 
 create table errlog_save as select * from gp_read_error_log('tableless_heap');
+NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column(s) named 
'cmdtime' as the Apache Cloudberry data distribution key for this table.
+HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
 select count(*) from errlog_save;
  count 
 -------
@@ -500,16 +618,17 @@ SELECT relname, linenum, errmsg FROM 
gp_read_error_log('tableless_heap');
 ---------+---------+--------
 (0 rows)
 
+\set tableless_file2 'file://' :hostname :abs_srcdir '/data/tableless.csv'
 create external table tableless_ext(a int, b int)
-location ('file://@hostname@@abs_srcdir@/data/tableless.csv')
+location (:'tableless_file2')
 format 'csv'
 log errors segment reject limit 10;
 select * from tableless_ext;
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
  a | b 
 ---+---
- 1 |  
  1 | 2
+ 1 |  
 (2 rows)
 
 SELECT relname, linenum, errmsg FROM gp_read_error_log('tableless_ext');
@@ -541,8 +660,8 @@ select * from tableless_ext;
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
  a | b 
 ---+---
- 1 |  
  1 | 2
+ 1 |  
 (2 rows)
 
 SELECT gp_truncate_error_log('*');
@@ -555,8 +674,8 @@ select * from tableless_ext;
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
  a | b 
 ---+---
- 1 |  
  1 | 2
+ 1 |  
 (2 rows)
 
 SELECT gp_truncate_error_log('*.*');
@@ -614,11 +733,12 @@ create writable external table wet_too_many_uris(a text, 
b text) location(
   'gpfdist://foo.invalid:7070/wet.out19', 
'gpfdist://foo.invalid:7070/wet.out20'
 ) format 'text';
 insert into wet_too_many_uris values ('foo', 'bar');
-ERROR:  external table has more URLs than available primary segments that can 
write into them  (seg2 127.0.0.1:40002 pid=24162)
+ERROR:  external table has more URLs than available primary segments that can 
write into them  (seg1 127.0.1.1:7003 pid=26073)
 -- Test for error log functionality
 -- Scan with no errors
+\set exttab_file 'file://' :hostname :abs_srcdir '/data/exttab.data'
 CREATE EXTERNAL TABLE exttab_basic_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT' 
(DELIMITER '|')
+LOCATION (:'exttab_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Empty error log
 SELECT * FROM gp_read_error_log('exttab_basic_1');
@@ -639,8 +759,9 @@ SELECT * FROM gp_read_error_log('exttab_basic_1');
 (0 rows)
 
 -- test ON COORDINATOR without LOG ERRORS, return empty results for all rows 
error out
+\set cat_exttab 'cat ' :abs_srcdir '/data/exttab.data'
 CREATE EXTERNAL WEB TABLE exttab_basic_error_1( i int )
-EXECUTE E'cat @abs_srcdir@/data/exttab.data' ON COORDINATOR
+EXECUTE E:'cat_exttab' ON COORDINATOR
 FORMAT 'TEXT' (DELIMITER '|')
 SEGMENT REJECT LIMIT 20;
 SELECT * FROM exttab_basic_error_1;
@@ -652,7 +773,7 @@ NOTICE:  found 10 data formatting errors (10 or more input 
rows), rejected relat
 DROP EXTERNAL TABLE IF EXISTS exttab_basic_error_1;
 -- test ON MASTER still works (this syntax will be removed in GPDB8 and 
forward)
 CREATE EXTERNAL WEB TABLE exttab_basic_error_1( i int )
-EXECUTE E'cat @abs_srcdir@/data/exttab.data' ON MASTER
+EXECUTE E:'cat_exttab' ON MASTER
 FORMAT 'TEXT' (DELIMITER '|')
 SEGMENT REJECT LIMIT 20;
 SELECT * FROM exttab_basic_error_1;
@@ -662,8 +783,9 @@ NOTICE:  found 10 data formatting errors (10 or more input 
rows), rejected relat
 (0 rows)
 
 -- Some errors without exceeding reject limit
+\set exttab_few_errors_file 'file://' :hostname :abs_srcdir 
'/data/exttab_few_errors.data'
 CREATE EXTERNAL TABLE exttab_basic_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- should not error out as segment reject limit will not be reached
 SELECT * FROM exttab_basic_2 order by i;
@@ -688,14 +810,15 @@ select count(*) from gp_read_error_log('exttab_basic_2');
 (1 row)
 
 -- Errors with exceeding reject limit
+\set exttab_more_errors_file 'file://' :hostname :abs_srcdir 
'/data/exttab_more_errors.data'
 CREATE EXTERNAL TABLE exttab_basic_3( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- should error out as segment reject limit will be reached
 SELECT * FROM exttab_basic_3;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12084)
-CONTEXT:  External table exttab_basic_3, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 -- Error log should be populated
 select count(*) > 0 from gp_read_error_log('exttab_basic_3');
  ?column? 
@@ -705,7 +828,7 @@ select count(*) > 0 from 
gp_read_error_log('exttab_basic_3');
 
 -- Insert into another table
 CREATE EXTERNAL TABLE exttab_basic_4( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 100;
 CREATE TABLE exttab_insert_1 (LIKE exttab_basic_4);
 NOTICE:  table doesn't have 'DISTRIBUTED BY' clause, defaulting to 
distribution columns from LIKE table
@@ -721,13 +844,13 @@ select count(*) > 0 from 
gp_read_error_log('exttab_basic_4');
 
 -- Use the same error log above
 CREATE EXTERNAL TABLE exttab_basic_5( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 5;
 -- Insert should fail
 INSERT INTO exttab_insert_1 select * from exttab_basic_5;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i (seg0 slice1 127.0.0.1:40000 pid=12121)
-CONTEXT:  External table exttab_basic_5, line 18 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT * from exttab_insert_1 order by i;
  i  |     j     
 ----+-----------
@@ -756,7 +879,7 @@ SELECT count(*) from gp_read_error_log('exttab_basic_5');
 
 -- CTAS
 CREATE EXTERNAL TABLE exttab_basic_6( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 100;
 CREATE TABLE exttab_ctas_1 as SELECT * FROM exttab_basic_6;
 NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column(s) named 
'i' as the Apache Cloudberry data distribution key for this table.
@@ -790,15 +913,15 @@ select count(*) from gp_read_error_log('exttab_basic_6');
 (1 row)
 
 CREATE EXTERNAL TABLE exttab_basic_7( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 5;
 -- CTAS should fail
 CREATE TABLE exttab_ctas_2 AS select * from exttab_basic_7;
 NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column(s) named 
'i' as the Apache Cloudberry data distribution key for this table.
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12121)
-CONTEXT:  External table exttab_basic_7, line 18 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 -- Table should not exist
 SELECT * from exttab_ctas_2 order by i;
 ERROR:  relation "exttab_ctas_2" does not exist
@@ -815,7 +938,7 @@ SELECT count(*) from gp_read_error_log('exttab_basic_7');
 DROP EXTERNAL TABLE IF EXISTS exttab_error_log;
 NOTICE:  foreign table "exttab_error_log" does not exist, skipping
 CREATE EXTERNAL TABLE exttab_error_log( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT' 
(DELIMITER '|')
+LOCATION (:'exttab_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 SELECT COUNT(*) FROM exttab_error_log;
  count 
@@ -838,7 +961,7 @@ SELECT COUNT(*) FROM gp_read_error_log('exttab_error_log');
 
 -- Insert into another table with unique constraints
 CREATE EXTERNAL TABLE exttab_constraints_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT' 
(DELIMITER '|')
+LOCATION (:'exttab_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- Should not error out
 SELECT COUNT(*) FROM exttab_constraints_1;
@@ -874,11 +997,11 @@ SELECT COUNT(*) FROM 
gp_read_error_log('exttab_constraints_1');
 -- CTE with segment reject limit reached
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_cte_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_cte_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 with cte1 as
 (
@@ -886,9 +1009,9 @@ SELECT e1.i, e2.j FROM exttab_cte_2 e1, exttab_cte_1 e2
 WHERE e1.i = e2.i ORDER BY e1.i
 )
 SELECT * FROM cte1 ORDER BY cte1.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12121)
-CONTEXT:  External table exttab_cte_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 select count(*) from gp_read_error_log('exttab_cte_2');
  count 
 -------
@@ -897,10 +1020,11 @@ select count(*) from gp_read_error_log('exttab_cte_2');
 
 -- start_ignore
 select gp_read_error_log('exttab_cte_2');
-                                                                               
                                                                   
gp_read_error_log                                                               
                                                                                
    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- ("Tue Mar 27 13:18:48.708775 2018 
PDT",exttab_cte_2,"file://@hostname@@abs_srcdir@/data/exttab_more_errors.data 
[/home/heikki/git-sandbox-gpdb/master/src/test/regress/data/exttab_more_errors.data]",5,,"invalid
 input syntax for type integer: ""error_1"", column i",error_1,)
-(1 row)
+                                                                               
                                                         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,)
+(2 rows)
 
 -- end_ignore
 -- CTE without segment reject limit exceeded
@@ -934,11 +1058,11 @@ NOTICE:  found 4 data formatting errors (4 or more input 
rows), rejected related
 -- Check permissions with gp_truncate_error_log and gp_read_error_log
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_permissions_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_permissions_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- generate some error logs
 SELECT COUNT(*) FROM exttab_permissions_1;
@@ -949,18 +1073,19 @@ NOTICE:  found 2 data formatting errors (2 or more input 
rows), rejected related
 (1 row)
 
 SELECT COUNT(*) FROM exttab_permissions_2;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12084)
-CONTEXT:  External table exttab_permissions_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 -- Only superuser can do gp_truncate_error_log('*.*')
 DROP ROLE IF EXISTS exttab_non_superuser;
+NOTICE:  role "exttab_non_superuser" does not exist, skipping
 CREATE ROLE exttab_non_superuser WITH NOSUPERUSER LOGIN CREATEDB;
 NOTICE:  resource queue required -- using default resource queue "pg_default"
 SET ROLE exttab_non_superuser;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_1');
-ERROR:  permission denied for table exttab_permissions_1  (seg2 slice1 
@hostname@:40002 pid=50448)
+ERROR:  permission denied for table exttab_permissions_1  (seg0 slice1 
127.0.1.1:7002 pid=26072)
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_2');
-ERROR:  permission denied for table exttab_permissions_2  (seg1 slice1 
@hostname@:40001 pid=50437)
+ERROR:  permission denied for table exttab_permissions_2  (seg0 slice1 
127.0.1.1:7002 pid=26072)
 SELECT gp_truncate_error_log('exttab_permissions_1');
 ERROR:  permission denied for table exttab_permissions_1
 SELECT gp_truncate_error_log('exttab_permissions_2');
@@ -971,6 +1096,7 @@ SELECT gp_truncate_error_log('*.*');
 ERROR:  must be superuser to delete all error log files
 RESET ROLE;
 DROP ROLE IF EXISTS exttab_superuser;
+NOTICE:  role "exttab_superuser" does not exist, skipping
 CREATE ROLE exttab_superuser WITH SUPERUSER LOGIN;
 SET ROLE exttab_superuser;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_2');
@@ -1016,8 +1142,11 @@ SELECT * FROM gp_read_error_log('exttab_permissions_2');
 
 -- Only database owner can do gp_truncate_error_log('*')
 DROP DATABASE IF EXISTS exttab_db;
+NOTICE:  database "exttab_db" does not exist, skipping
 DROP ROLE IF EXISTS exttab_user1;
+NOTICE:  role "exttab_user1" does not exist, skipping
 DROP ROLE IF EXISTS exttab_user2;
+NOTICE:  role "exttab_user2" does not exist, skipping
 CREATE ROLE exttab_user1 WITH NOSUPERUSER LOGIN;
 NOTICE:  resource queue required -- using default resource queue "pg_default"
 CREATE ROLE exttab_user2 WITH NOSUPERUSER LOGIN;
@@ -1025,9 +1154,8 @@ NOTICE:  resource queue required -- using default 
resource queue "pg_default"
 CREATE DATABASE exttab_db WITH OWNER=exttab_user1;
 \c exttab_db
 -- generate some error logs in this db
-NOTICE:  table "exttab_permissions_1" does not exist, skipping
 CREATE EXTERNAL TABLE exttab_permissions_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 SELECT COUNT(*) FROM exttab_permissions_1 e1, exttab_permissions_1 e2;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
@@ -1044,7 +1172,7 @@ SELECT COUNT(*) FROM 
gp_read_error_log('exttab_permissions_1');
 
 SET ROLE exttab_user2;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_1');
-ERROR:  permission denied for table exttab_permissions_1  (seg0 slice1 
@hostname@:40000 pid=51060)
+ERROR:  permission denied for table exttab_permissions_1  (seg2 slice1 
127.0.1.1:7004 pid=26214)
 SELECT gp_truncate_error_log('*');
 ERROR:  must be owner of database exttab_db
 SELECT gp_truncate_error_log('*.*');
@@ -1054,7 +1182,7 @@ ERROR:  permission denied for table exttab_permissions_1
 SET ROLE exttab_user1;
 -- Database owner can still not perform read / truncate on specific tables. 
This follows the same mechanism as TRUNCATE table.
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_1');
-ERROR:  permission denied for table exttab_permissions_1  (seg1 slice1 
@hostname@:40001 pid=51061)
+ERROR:  permission denied for table exttab_permissions_1  (seg0 slice1 
127.0.1.1:7002 pid=26212)
 SELECT gp_truncate_error_log('exttab_permissions_1');
 ERROR:  permission denied for table exttab_permissions_1
 SELECT gp_truncate_error_log('*');
@@ -1074,14 +1202,16 @@ SELECT * FROM gp_read_error_log('exttab_permissions_1');
 
 \c regression
 DROP ROLE IF EXISTS errlog_exttab_user3;
+NOTICE:  role "errlog_exttab_user3" does not exist, skipping
 DROP ROLE IF EXISTS errlog_exttab_user4;
+NOTICE:  role "errlog_exttab_user4" does not exist, skipping
 CREATE ROLE errlog_exttab_user3 WITH NOSUPERUSER LOGIN;
 NOTICE:  resource queue required -- using default resource queue "pg_default"
 CREATE ROLE errlog_exttab_user4 WITH NOSUPERUSER LOGIN;
 NOTICE:  resource queue required -- using default resource queue "pg_default"
 -- generate some error logs in this db
 CREATE EXTERNAL TABLE exttab_permissions_3( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 SELECT COUNT(*) FROM exttab_permissions_3 e1, exttab_permissions_3 e2;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
@@ -1100,7 +1230,7 @@ ALTER EXTERNAL TABLE exttab_permissions_3 OWNER TO 
errlog_exttab_user3;
 -- This should fail with non table owner
 SET ROLE errlog_exttab_user4;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_3');
-ERROR:  permission denied for table exttab_permissions_3  (seg0 slice1 
@hostname@:40000 pid=51087)
+ERROR:  permission denied for table exttab_permissions_3  (seg0 slice1 
127.0.1.1:7002 pid=26235)
 SELECT gp_truncate_error_log('exttab_permissions_3');
 ERROR:  permission denied for table exttab_permissions_3
 -- should go through fine with table owner
@@ -1148,19 +1278,19 @@ SELECT * FROM gp_read_error_log('exttab_permissions_3');
 -- Subqueries reaching segment reject limit
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_subq_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_subq_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 SELECT sum(distinct e1.i), sum(distinct e2.i), e1.j FROM
 (SELECT i, j FROM exttab_subq_1 WHERE i < 5 ) e1,
 (SELECT i, j FROM exttab_subq_2 WHERE i < 10) e2
 group by e1.j;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1189,9 +1319,9 @@ SELECT sum(distinct e1.i), sum(distinct e2.i), e1.j FROM
 (SELECT i, j FROM exttab_subq_1 WHERE i < 10) e2
 group by e1.j
 HAVING sum(distinct e1.i) > (SELECT max(i) FROM exttab_subq_2);
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice3 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1286,9 +1416,9 @@ SELECT gp_truncate_error_log('exttab_subq_2');
 SELECT ( SELECT i FROM exttab_subq_2 WHERE i <= e1.i) as i, e1.j
 FROM exttab_subq_2 e1, exttab_subq_1 e2
 WHERE e1.i = e2.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12217)
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 -- CSQ
 SELECT gp_truncate_error_log('exttab_subq_1');
  gp_truncate_error_log 
@@ -1306,9 +1436,9 @@ SELECT e1.i , e1.j FROM
 exttab_subq_1 e1, exttab_subq_1 e2
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1335,9 +1465,9 @@ SELECT gp_truncate_error_log('exttab_subq_2');
 SELECT ( SELECT i FROM exttab_subq_2 WHERE i <= e1.i) as i, e1.j
 FROM exttab_subq_2 e1, exttab_subq_1 e2
 WHERE e1.i = e2.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice3 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_subq_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_subq_1')
@@ -1352,11 +1482,12 @@ SELECT * FROM gp_read_error_log('exttab_subq_2')
 -- TRUNCATE / delete / write to error logs within subtransactions
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_subtxs_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
+\set exttab_more_errors_file2 'file://' :hostname ':' :abs_srcdir 
'/data/exttab_more_errors.data'
 CREATE EXTERNAL TABLE exttab_subtxs_2( i int, j text )
-LOCATION ('file://@hostname@:@abs_srcdir@/data/exttab_more_errors.data') 
FORMAT 'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file2') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Populate error logs before transaction
 SELECT e1.i, e2.j FROM
@@ -1366,8 +1497,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1403,8 +1534,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1428,8 +1559,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1441,8 +1572,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1464,9 +1595,9 @@ SELECT e1.i, e2.j FROM
 (SELECT i, j FROM exttab_subtxs_2 WHERE i < 5 ) e1,
 (SELECT i, j FROM exttab_subtxs_2 WHERE i < 10) e2
 WHERE e1.i = e2.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice2 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_subtxs_2, line 7 of 
file://@hostname@:@abs_srcdir@/data/exttab_more_errors.data, column 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
 COMMIT;
 -- Error logs should not have been rolled back.
 -- Check that number of errors is greater than 12 instead of checking for
@@ -1487,11 +1618,11 @@ SELECT * FROM gp_read_error_log('exttab_subtxs_2')
 -- TRUNCATE error logs within tx , abort transaction
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_txs_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_txs_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Populate error log before transaction
 SELECT e1.i, e2.j FROM
@@ -1501,8 +1632,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1537,8 +1668,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1567,8 +1698,8 @@ WHERE e1.i = e2.i;
 NOTICE:  found 4 data formatting errors (4 or more input rows), rejected 
related input data
  i |    j     
 ---+----------
- 1 | 1_number
  2 | 2_number
+ 1 | 1_number
  4 | 4_number
 (3 rows)
 
@@ -1601,9 +1732,9 @@ SELECT e1.i, e2.j FROM
 (SELECT i, j FROM exttab_txs_1 WHERE i < 5 ) e1,
 (SELECT i, j FROM exttab_txs_2 WHERE i < 10) e2
 WHERE e1.i = e2.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice2 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_txs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 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.
@@ -1643,11 +1774,11 @@ BEGIN;
 -- create an external table that will reach segment reject limit
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_txs_3( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- new error log, within segment reject limit
 CREATE EXTERNAL TABLE exttab_txs_4( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 SELECT e1.i, e2.j FROM
 (SELECT i, j FROM exttab_txs_4 WHERE i < 5 ) e1,
@@ -1673,9 +1804,9 @@ SELECT e1.i, e2.j FROM
 (SELECT i, j FROM exttab_txs_3 WHERE i < 5 ) e1,
 (SELECT i, j FROM exttab_txs_4 WHERE i < 10) e2
 WHERE e1.i = e2.i order by e1.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12217)
-CONTEXT:  External table exttab_txs_3, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 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');
@@ -1702,11 +1833,11 @@ LINE 1: SELECT count(*) FROM exttab_txs_4;
 -- UDFS with segment reject limit reached
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_udfs_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_udfs_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 CREATE OR REPLACE FUNCTION exttab_udfs_func1 ()
 RETURNS boolean
@@ -1722,9 +1853,9 @@ $$
 LANGUAGE plpgsql volatile;
 -- Should fail
 SELECT * FROM exttab_udfs_func1();
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12217)
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 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
@@ -1762,9 +1893,9 @@ SELECT gp_truncate_error_log('exttab_udfs_2');
 
 -- Should fail
 INSERT INTO exttab_udfs_insert_1 SELECT * FROM exttab_udfs_func1();
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12217)
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 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
@@ -1848,9 +1979,9 @@ SELECT gp_truncate_error_log('exttab_udfs_2');
 -- All this should fail, error logs should be populated even if the UDF gets 
aborted as we persist error rows written within aborted txs.
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -1876,9 +2007,9 @@ SELECT gp_truncate_error_log('exttab_udfs_2');
 
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12217)
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -1904,9 +2035,9 @@ SELECT gp_truncate_error_log('exttab_udfs_2');
 
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -1934,9 +2065,9 @@ CREATE TABLE exttab_udfs_ctas_2 AS SELECT * FROM 
exttab_udfs_func2();
 NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column(s) named 
'exttab_udfs_func2' as the Apache Cloudberry data distribution key for this 
table.
 HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
 NOTICE:  found 2 data formatting errors (2 or more input rows), rejected 
related input data
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12217)
-CONTEXT:  External table exttab_udfs_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT COUNT(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_udfs_1')
@@ -1961,11 +2092,11 @@ NOTICE:  foreign table "exttab_union_1" does not exist, 
skipping
 DROP EXTERNAL TABLE IF EXISTS exttab_union_2;
 NOTICE:  foreign table "exttab_union_2" does not exist, skipping
 CREATE EXTERNAL TABLE exttab_union_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_union_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Should error out as exttab_union_2 would reach it's reject limit
 SELECT * FROM
@@ -1975,9 +2106,9 @@ UNION
 SELECT * FROM exttab_union_2
 ) FOO
 order by FOO.i;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_union_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 -- Error table count
 select count(*) > 0 from
 (
@@ -2011,9 +2142,9 @@ insert into exttab_union_insert_1
 SELECT e1.i, e2.j from exttab_union_2 e1 INNER JOIN exttab_union_2 e2 ON e1.i 
= e2.i
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_union_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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
 -- should return 0 rows
 SELECT * from exttab_union_insert_1;
  i | j 
@@ -2071,11 +2202,11 @@ DROP EXTERNAL TABLE IF EXISTS exttab_views_2 CASCADE;
 NOTICE:  foreign table "exttab_views_2" does not exist, skipping
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_views_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_views_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 DROP VIEW IF EXISTS exttab_views_3;
 NOTICE:  view "exttab_views_3" does not exist, skipping
@@ -2098,9 +2229,9 @@ SELECT gp_truncate_error_log('exttab_views_2');
 
 -- This should error out
 SELECT * FROM exttab_views_3;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12226)
-CONTEXT:  External table exttab_views_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 -- Error table should be populated
 SELECT count(*) > 0 FROM
 (
@@ -2133,9 +2264,9 @@ SELECT gp_truncate_error_log('exttab_views_2');
 
 -- Should fail
 INSERT INTO exttab_views_insert_1 SELECT * FROM exttab_views_3;
-ERROR:  segment reject limit reached, aborting operation
+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://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i  (seg0 
slice1 127.0.0.1:40000 pid=12217)
+CONTEXT:  External table exttab_views_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
 -- should not have any rows
 SELECT * FROM exttab_views_insert_1;
  i | j | k 
@@ -2173,9 +2304,9 @@ SELECT gp_truncate_error_log('exttab_views_2');
 CREATE TABLE exttab_views_ctas_1 AS SELECT * FROM exttab_views_3 where 
length(j) < 100;
 NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column(s) named 
'j' as the Apache Cloudberry data distribution key for this table.
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12322)
-CONTEXT:  External table exttab_views_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT * FROM exttab_views_ctas_1;
 ERROR:  relation "exttab_views_ctas_1" does not exist
 LINE 1: SELECT * FROM exttab_views_ctas_1;
@@ -2211,9 +2342,9 @@ SELECT gp_truncate_error_log('exttab_views_2');
 CREATE TABLE exttab_views_ctas_1 AS SELECT * FROM exttab_views_3;
 NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column(s) named 
'j' as the Apache Cloudberry data distribution key for this table.
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12313)
-CONTEXT:  External table exttab_views_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 -- Relation should not exist
 SELECT * FROM exttab_views_ctas_1;
 ERROR:  relation "exttab_views_ctas_1" does not exist
@@ -2238,11 +2369,11 @@ DROP EXTERNAL TABLE IF EXISTS exttab_windows_2;
 NOTICE:  foreign table "exttab_windows_2" does not exist, skipping
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_windows_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_windows_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- without reaching segment reject limit
 with cte1 as(
@@ -2326,9 +2457,9 @@ SELECT * FROM cte1 c1, cte2 c2
 WHERE c1.i = c2.i
 ORDER BY c1.i
 limit 5;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12357)
-CONTEXT:  External table exttab_windows_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT COUNT(*) > 0
 FROM
 (
@@ -2348,11 +2479,11 @@ DROP EXTERNAL TABLE IF EXISTS exttab_limit_2 cascade;
 NOTICE:  foreign table "exttab_limit_2" does not exist, skipping
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_limit_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_limit_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Note that even though we use exttab_limit_2 here , the LIMIT 3 will not 
throw a segment reject limit error
 with cte1 as
@@ -2361,9 +2492,9 @@ SELECT e1.i, e2.j FROM exttab_limit_1 e1, exttab_limit_1 
e2
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice4 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_limit_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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_limit_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
 SELECT count(*) FROM gp_read_error_log('exttab_limit_2');
  count 
 -------
@@ -2437,9 +2568,9 @@ SELECT e1.i, e2.j FROM exttab_limit_1 e1, exttab_limit_1 
e2
 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
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice4 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_limit_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column 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_limit_2, line 7 of 
file://gpadmin/home/gpadmin/cloudberry/src/test/regress/data/exttab_more_errors.data,
 column i
 SELECT count(*) > 0 FROM gp_read_error_log('exttab_limit_2');
  ?column? 
 ----------
@@ -2512,9 +2643,9 @@ SELECT gp_truncate_error_log('exttab_limit_2');
 (1 row)
 
 SELECT * FROM exttab_limit_1 e1, exttab_limit_2 e2 where e1.i = e2.i LIMIT 3;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_1", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12436)
-CONTEXT:  External table exttab_limit_2, line 7 of 
file://@hostname@@abs_srcdir@/data/exttab_more_errors.data, column i
+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
 SELECT count(*) > 0 FROM
 (
 SELECT * FROM gp_read_error_log('exttab_limit_1')
@@ -2531,6 +2662,7 @@ SELECT * FROM gp_read_error_log('exttab_limit_2')
 -- the data. If there is a valid row within the first 'n' rows specified by
 -- this guc, the database continues to load the data.
 -- default should be 1000
+\set exttab_first_errors_file 'file://' :hostname :abs_srcdir 
'/data/exttab_first_errors.data'
 SHOW gp_initial_bad_row_limit;
  gp_initial_bad_row_limit 
 --------------------------
@@ -2540,13 +2672,13 @@ SHOW gp_initial_bad_row_limit;
 DROP EXTERNAL TABLE IF EXISTS exttab_first_reject_limit_1 cascade;
 NOTICE:  foreign table "exttab_first_reject_limit_1" does not exist, skipping
 CREATE EXTERNAL TABLE exttab_first_reject_limit_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_first_errors.data') 
FORMAT 'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_first_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 20000;
 -- should fail with an appropriate error message
 SELECT COUNT(*) FROM exttab_first_reject_limit_1;
-ERROR:  all 1000 first rows in this segment were rejected
-DETAIL:  Aborting operation regardless of REJECT LIMIT value, last error was: 
invalid input syntax for type integer: "error_0", column i  (seg0 slice1 
127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_first_reject_limit_1, line 1000 of 
file://@hostname@@abs_srcdir@/data/exttab_first_errors.data, column i
+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
 SELECT COUNT(*) > 0 FROM gp_read_error_log('exttab_first_reject_limit_1');
  ?column? 
 ----------
@@ -2578,14 +2710,14 @@ SELECT COUNT(*) FROM 
gp_read_error_log('exttab_first_reject_limit_1');
 DROP EXTERNAL TABLE IF EXISTS exttab_first_reject_limit_2;
 NOTICE:  foreign table "exttab_first_reject_limit_2" does not exist, skipping
 CREATE EXTERNAL TABLE exttab_first_reject_limit_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_first_errors.data') 
FORMAT 'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_first_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 500;
 -- should report an error saying first rows were rejected
 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
-DETAIL:  Aborting operation regardless of REJECT LIMIT value, last error was: 
invalid input syntax for type integer: "error_0", column i  (seg0 slice1 
127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_first_reject_limit_2, line 2 of 
file://@hostname@@abs_srcdir@/data/exttab_first_errors.data, column i
+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
 SELECT COUNT(*) > 0 from gp_read_error_log('exttab_first_reject_limit_2');
  ?column? 
 ----------
@@ -2601,9 +2733,9 @@ SELECT 
gp_truncate_error_log('exttab_first_reject_limit_2');
 (1 row)
 
 SELECT COUNT(*) FROM exttab_first_reject_limit_2;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_0", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_first_reject_limit_2, line 500 of 
file://@hostname@@abs_srcdir@/data/exttab_first_errors.data, column 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_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
 SELECT COUNT(*) > 0 from gp_read_error_log('exttab_first_reject_limit_2');
  ?column? 
 ----------
@@ -2619,9 +2751,9 @@ SELECT 
gp_truncate_error_log('exttab_first_reject_limit_2');
 (1 row)
 
 SELECT COUNT(*) FROM exttab_first_reject_limit_2;
-ERROR:  segment reject limit reached, aborting operation
-DETAIL:  Last error was: invalid input syntax for type integer: "error_0", 
column i  (seg0 slice1 127.0.0.1:40000 pid=12211)
-CONTEXT:  External table exttab_first_reject_limit_2, line 500 of 
file://@hostname@@abs_srcdir@/data/exttab_first_errors.data, column 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_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
 SELECT COUNT(*) > 0 from gp_read_error_log('exttab_first_reject_limit_2');
  ?column? 
 ----------
@@ -2632,7 +2764,7 @@ DROP EXTERNAL TABLE IF EXISTS exttab_heap_join_1;
 NOTICE:  foreign table "exttab_heap_join_1" does not exist, skipping
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_heap_join_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 DROP TABLE IF EXISTS test_ext_heap_join;
 NOTICE:  table "test_ext_heap_join" does not exist, skipping
@@ -2656,13 +2788,14 @@ SELECT COUNT(*) FROM 
gp_read_error_log('exttab_heap_join_1');
 (1 row)
 
 \! rm @abs_srcdir@/data/tableless.csv
+rm: cannot remove '@abs_srcdir@/data/tableless.csv': No such file or directory
 -- start_ignore
 DROP EXTERNAL TABLE IF EXISTS exttab_with_on_coordinator;
-NOTICE:  table "exttab_with_on_coordinator" does not exist, skipping
+NOTICE:  foreign table "exttab_with_on_coordinator" does not exist, skipping
 -- end_ignore
 -- Create external table with on clause
 CREATE EXTERNAL TABLE exttab_with_on_coordinator( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') ON 
COORDINATOR FORMAT 'TEXT' (DELIMITER '|');
+LOCATION (:'exttab_few_errors_file') ON COORDINATOR FORMAT 'TEXT' (DELIMITER 
'|');
 SELECT * FROM exttab_with_on_coordinator;
 ERROR:  'ON COORDINATOR' is not supported by this protocol yet
 DROP EXTERNAL TABLE IF EXISTS exttab_with_on_coordinator;
@@ -2676,13 +2809,13 @@ NOTICE:  foreign table "exttab_with_options" does not 
exist, skipping
 -- end_ignore
 -- Create external table with 'OPTIONS'
 CREATE EXTERNAL TABLE exttab_with_option_empty( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 OPTIONS ();
 CREATE EXTERNAL TABLE exttab_with_option_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 OPTIONS (hello 'world');
 CREATE EXTERNAL TABLE exttab_with_options( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 OPTIONS (hello 'world', bonjour 'again', nihao 'again and again' );
 \d exttab_with_options
            Foreign table "public.exttab_with_options"
@@ -2690,7 +2823,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://@hostname@@abs_srcdir@/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://gpadmin/home/gpadmin/cloudberry/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"
@@ -2698,7 +2831,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://@hostname@@abs_srcdir@/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://gpadmin/home/gpadmin/cloudberry/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;
@@ -2716,16 +2849,22 @@ DROP EXTERNAL TABLE IF EXISTS tbl_wet_csv5;
 NOTICE:  foreign table "tbl_wet_csv5" does not exist, skipping
 -- end_ignore
 -- Create writable external table with AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv1 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv1.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' ');
+\set wet_csv1_file 'cat > ' :abs_srcdir '/data/wet_csv1.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv1 (a int, b text) EXECUTE 
:'wet_csv1_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ');
 -- Create writable external table without AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv2 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv2.tbl' FORMAT 'CSV' (DELIMITER AS ',' NULL 'null' 
ESCAPE ' ');
+\set wet_csv2_file 'cat > ' :abs_srcdir '/data/wet_csv2.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv2 (a int, b text) EXECUTE 
:'wet_csv2_file' FORMAT 'CSV' (DELIMITER AS ',' NULL 'null' ESCAPE ' ');
 -- Create writable external table with double quotes
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv3 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv3.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' '  QUOTE AS '"');
+\set wet_csv3_file 'cat > ' :abs_srcdir '/data/wet_csv3.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv3 (a int, b text) EXECUTE 
:'wet_csv3_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' '  
QUOTE AS '"');
 -- Create writable external table with single quotes
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv4 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv4.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' '  QUOTE AS '''');
+\set wet_csv4_file 'cat > ' :abs_srcdir '/data/wet_csv4.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv4 (a int, b text) EXECUTE 
:'wet_csv4_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' '  
QUOTE AS '''');
 -- Create writable external table with force quote
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv5 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv5.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' '  QUOTE AS '"' FORCE QUOTE b);
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv6 (a int, b text, c text) 
EXECUTE 'cat > @abs_srcdir@/data/wet_csv6.tbl' FORMAT 'CSV' (DELIMITER AS '|' 
NULL AS 'null' ESCAPE AS ' ' QUOTE AS '"' FORCE QUOTE *);
+\set wet_csv5_file 'cat > ' :abs_srcdir '/data/wet_csv5.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv5 (a int, b text) EXECUTE 
:'wet_csv5_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' '  
QUOTE AS '"' FORCE QUOTE b);
+\set wet_csv6_file 'cat > ' :abs_srcdir '/data/wet_csv6.tbl'   
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv6 (a int, b text, c text) 
EXECUTE :'wet_csv6_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE 
AS ' ' QUOTE AS '"' FORCE QUOTE *);
 INSERT INTO tbl_wet_csv1 VALUES (generate_series(1,256), 'test_1');
 INSERT INTO tbl_wet_csv2 VALUES (generate_series(1,256), 'test_2');
 INSERT INTO tbl_wet_csv3 VALUES (generate_series(1,256), 'test_3');
@@ -2740,18 +2879,21 @@ DROP EXTERNAL TABLE IF EXISTS tbl_wet_csv5;
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_csv6;
 -- start_ignore
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_text1;
-NOTICE:  table "tbl_wet_text1" does not exist, skipping
+NOTICE:  foreign table "tbl_wet_text1" does not exist, skipping
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_text2;
-NOTICE:  table "tbl_wet_text2" does not exist, skipping
+NOTICE:  foreign table "tbl_wet_text2" does not exist, skipping
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_text3;
-NOTICE:  table "tbl_wet_text3" does not exist, skipping
+NOTICE:  foreign table "tbl_wet_text3" does not exist, skipping
 -- end_ignore
 -- Create writable external table with AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text1 (a int, b text) EXECUTE 'cat 
> @abs_srcdir@/data/wet_text1.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 
'null' ESCAPE AS ' ');
+\set wet_text1_file 'cat > ' :abs_srcdir '/data/wet_text1.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text1 (a int, b text) EXECUTE 
:'wet_text1_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ');
 -- Create writable external table without AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text2 (a int, b text) EXECUTE 'cat 
> @abs_srcdir@/data/wet_text2.tbl' FORMAT 'TEXT' (DELIMITER AS ',' NULL 'null' 
ESCAPE ' ');
+\set wet_text2_file 'cat > ' :abs_srcdir '/data/wet_text2.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text2 (a int, b text) EXECUTE 
:'wet_text2_file' FORMAT 'TEXT' (DELIMITER AS ',' NULL 'null' ESCAPE ' ');
 -- Create writable external table with ESCAPE OFF
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text3 (a int, b text) EXECUTE 'cat 
> @abs_srcdir@/data/wet_text3.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 
'null' ESCAPE 'OFF');
+\set wet_text3_file 'cat > ' :abs_srcdir '/data/wet_text3.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text3 (a int, b text) EXECUTE 
:'wet_text3_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE 'OFF');
 INSERT INTO tbl_wet_text1 VALUES (generate_series(1,256), 'test_1');
 INSERT INTO tbl_wet_text2 VALUES (generate_series(1,256), 'test_2');
 INSERT INTO tbl_wet_text3 VALUES (generate_series(1,256), 'test_3');
@@ -2764,17 +2906,20 @@ NOTICE:  table "test_dp1" does not exist, skipping
 DROP TABLE IF EXISTS test_dp2;
 NOTICE:  table "test_dp2" does not exist, skipping
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_syntax1;
-NOTICE:  table "tbl_wet_syntax1" does not exist, skipping
+NOTICE:  foreign table "tbl_wet_syntax1" does not exist, skipping
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_syntax2;
-NOTICE:  table "tbl_wet_syntax2" does not exist, skipping
+NOTICE:  foreign table "tbl_wet_syntax2" does not exist, skipping
 DROP EXTERNAL TABLE IF EXISTS tbl_wet_syntax3;
-NOTICE:  table "tbl_wet_syntax3" does not exist, skipping
+NOTICE:  foreign table "tbl_wet_syntax3" does not exist, skipping
 -- end_ignore
 CREATE TABLE test_dp1 (a int, b text) DISTRIBUTED RANDOMLY;
 CREATE TABLE test_dp2 (a int, b text) DISTRIBUTED BY (b);
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax1 (like test_dp1) EXECUTE 
'cat > @abs_srcdir@/data/wet_syntax1.tbl' FORMAT 'TEXT' (DELIMITER '|' ) 
DISTRIBUTED BY (a);
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax2 (like test_dp2) EXECUTE 
'cat > @abs_srcdir@/data/wet_syntax2.tbl' FORMAT 'TEXT' (DELIMITER '|' ) 
DISTRIBUTED BY (a);
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax3 (like test_dp2) EXECUTE 
'cat > @abs_srcdir@/data/wet_syntax3.tbl' FORMAT 'TEXT' (DELIMITER '|' ) 
DISTRIBUTED RANDOMLY;
+\set wet_syntax1_file 'cat > ' :abs_srcdir '/data/wet_syntax1.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax1 (like test_dp1) EXECUTE 
:'wet_syntax1_file' FORMAT 'TEXT' (DELIMITER '|' ) DISTRIBUTED BY (a);
+\set wet_syntax2_file 'cat > ' :abs_srcdir '/data/wet_syntax2.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax2 (like test_dp2) EXECUTE 
:'wet_syntax2_file' FORMAT 'TEXT' (DELIMITER '|' ) DISTRIBUTED BY (a);
+\set wet_syntax3_file 'cat > ' :abs_srcdir '/data/wet_syntax3.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax3 (like test_dp2) EXECUTE 
:'wet_syntax3_file' FORMAT 'TEXT' (DELIMITER '|' ) DISTRIBUTED RANDOMLY;
 INSERT INTO tbl_wet_syntax1 VALUES (generate_series(1,256), 'test_1');
 INSERT INTO tbl_wet_syntax2 VALUES (generate_series(1,256), 'test_2');
 INSERT INTO tbl_wet_syntax3 VALUES (generate_series(1,256), 'test_3');
@@ -2793,7 +2938,8 @@ CREATE TABLE table_execute (id integer, name varchar(40)) 
DISTRIBUTED RANDOMLY;
 INSERT INTO table_execute VALUES (100, 'name_1');
 INSERT INTO table_execute VALUES (200, 'name_2');
 INSERT INTO table_execute VALUES (300, 'name_3');
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_execute (like table_execute) 
EXECUTE 'cat > @abs_srcdir@/data/wet_execute.tbl' FORMAT 'TEXT' (DELIMITER '|' 
);
+\set wet_execute_file 'cat > ' :abs_srcdir '/data/wet_execute.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_execute (like table_execute) 
EXECUTE :'wet_execute_file' FORMAT 'TEXT' (DELIMITER '|' );
 NOTICE:  table doesn't have 'DISTRIBUTED BY' clause, defaulting to 
distribution columns from LIKE table
 INSERT INTO tbl_wet_execute SELECT * from table_execute ;
 DROP TABLE IF EXISTS table_execute;
@@ -2826,14 +2972,15 @@ DROP PROTOCOL if exists demoprot;
 NOTICE:  protocol "demoprot" does not exist, skipping
 DROP PROTOCOL if exists demoprot2;
 -- create external protocol with a serial type column
+\set serial_file 'file://' :hostname :abs_srcdir 
'/data/no/such/place/serial.tbl'
 CREATE EXTERNAL TABLE SERIAL (a serial, x text)
-LOCATION ('file://@hostname@@abs_srcdir@/data/no/such/place/serial.tbl')
+LOCATION (:'serial_file')
 FORMAT 'csv';
 -- drop temp external table
 DROP EXTERNAL TABLE IF EXISTS serial;
 -- External table query within plpgSQL function get error
 CREATE EXTERNAL TABLE exttab_error_context_callback(c1 int, c2 int)
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT';
+LOCATION (:'exttab_file') FORMAT 'TEXT';
 CREATE or REPLACE FUNCTION exttab_error_context_callback_func()
 RETURNS SETOF INTEGER
 AS
@@ -2851,8 +2998,8 @@ $$
 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.0.1:40000 pid=12458)
-CONTEXT:  External table exttab_error_context_callback, line 1 of 
file://@hostname@@abs_srcdir@/data/exttab.data, column c1
+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
 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();
@@ -2860,8 +3007,9 @@ DROP EXTERNAL TABLE exttab_error_context_callback;
 -- --------------------------------------
 -- Encoding
 -- --------------------------------------
+\set latin1_encoding_file 'file://' :hostname :abs_srcdir 
'/data/latin1_encoding.csv'
 CREATE EXTERNAL TABLE encoding_issue (num int, word text)
-LOCATION ('file://@hostname@@abs_srcdir@/data/latin1_encoding.csv')
+LOCATION (:'latin1_encoding_file')
 FORMAT 'CSV' ENCODING 'LATIN1';
 SELECT * FROM encoding_issue WHERE num = 4;
  num |           word            
@@ -2870,8 +3018,9 @@ SELECT * FROM encoding_issue WHERE num = 4;
 (1 row)
 
 COPY (SELECT * FROM encoding_issue) TO '/tmp/latin1_encoding.csv' WITH (FORMAT 
'csv', ENCODING 'LATIN1');
+\set latin1_encoding_file2 'file://' :hostname '/tmp/latin1_encoding.csv'
 CREATE EXTERNAL TABLE encoding_issue2 (num int, word text)
-LOCATION ('file://@hostname@/tmp/latin1_encoding.csv')
+LOCATION (:'latin1_encoding_file2')
 FORMAT 'CSV' ENCODING 'LATIN1';
 SELECT * FROM encoding_issue2 WHERE num = 5;
  num |                word                
@@ -4754,6 +4903,7 @@ line_delim=E'\n'
 ;
 drop external table large_custom_format_definitions;
 -- Incomplete external data file
+\set incomplete_formatter_data 'file://' :hostname :abs_srcdir 
'/data/incomplete_formatter_data.tbl'
 CREATE OR REPLACE FUNCTION gpformatter() RETURNS record
 AS '$libdir/gpformatter.so', 'formatter_import'
 LANGUAGE C STABLE;
@@ -4763,12 +4913,11 @@ CREATE READABLE EXTERNAL TABLE tbl_ext_gpformatter (
 d1 text
 )
 LOCATION (
-  'file://@hostname@@abs_srcdir@/data/incomplete_formatter_data.tbl'
+  :'incomplete_formatter_data'
 )
 FORMAT 'CUSTOM' (formatter='gpformatter');
 SELECT * FROM tbl_ext_gpformatter;
-WARNING:  unexpected end of file  (seg0 slice1 127.0.0.1:25432 pid=18207)
-CONTEXT:  External table tbl_ext_gpformatter
+WARNING:  unexpected end of file  (seg0 slice1 127.0.1.1:7002 pid=26235)
  d1 
 ----
  0
@@ -4823,10 +4972,10 @@ select 
gp_debug_reset_create_table_default_numsegments();
 --
 CREATE READABLE EXTERNAL TABLE ext_invalid_host() LOCATION 
('gpfdist://not-exist-host/data.csv') FORMAT 'CSV' ( DELIMITER AS ',');
 SELECT * from ext_invalid_host;
-WARNING:  could not translate host name "not-exist-host", port "8080" to 
address: Name or service not known
-WARNING:  could not translate host name "not-exist-host", port "8080" to 
address: Name or service not known
-WARNING:  could not translate host name "not-exist-host", port "8080" to 
address: Name or service not known
-ERROR:  hostname cannot be resolved 'gpfdist://not-exist-host:8080/data.csv'  
(seg0 slice1 127.0.0.1:5434 pid=181826)
+WARNING:  could not translate host name "not-exist-host", port "8080" to 
address: Temporary failure in name resolution  (seg0 slice1 127.0.1.1:7002 
pid=26235)
+WARNING:  could not translate host name "not-exist-host", port "8080" to 
address: Temporary failure in name resolution  (seg1 slice1 127.0.1.1:7003 
pid=26236)
+WARNING:  could not translate host name "not-exist-host", port "8080" to 
address: Temporary failure in name resolution  (seg2 slice1 127.0.1.1:7004 
pid=26237)
+ERROR:  hostname cannot be resolved 'gpfdist://not-exist-host:8080/data.csv'  
(seg0 slice1 127.0.1.1:7002 pid=26235)
 -- Test delimiter off
 CREATE EXTERNAL TABLE test_delimiter(data text) 
LOCATION('gpfdist://127.0.0.1/test_delimiter.txt') FORMAT 'text' (DELIMITER 
'off');
 DROP EXTERNAL TABLE test_delimiter;
@@ -4892,10 +5041,10 @@ EXPLAIN SELECT
 FROM ext_subplan_t1;
                                    QUERY PLAN                                  
 
 
--------------------------------------------------------------------------------
- Foreign Scan on ext_subplan_t1  (cost=0.00..0.00 rows=1 width=8)
+ Foreign Scan on ext_subplan_t1  (cost=0.00..0.02 rows=1 width=8)
    SubPlan 1
-     ->  Limit  (cost=0.00..0.00 rows=1 width=4)
-           ->  Foreign Scan on ext_subplan_t2  (cost=0.00..0.00 rows=1 width=4)
+     ->  Limit  (cost=0.00..0.01 rows=1 width=4)
+           ->  Foreign Scan on ext_subplan_t2  (cost=0.00..0.01 rows=1 width=4)
                  Filter: (c1 = ext_subplan_t1.c1)
  Optimizer: Postgres query optimizer
 (6 rows)
@@ -4943,7 +5092,8 @@ DROP TABLE test_part_integrity;
 CREATE WRITABLE EXTERNAL WEB TABLE ext_dist_repl(a int, b int) EXECUTE 'some 
command' FORMAT 'TEXT' DISTRIBUTED REPLICATED;
 ERROR:  external tables can't have DISTRIBUTED REPLICATED clause
 -- Testing altering the distribution policy of external tables.
-CREATE WRITABLE EXTERNAL WEB TABLE ext_w_dist(a int, b int) EXECUTE 'cat > 
@abs_srcdir@/data/ext_w_dist.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 
'null' ESCAPE AS ' ') DISTRIBUTED BY (a);
+\set ext_w_dist_file 'cat > ' :abs_srcdir '/data/ext_w_dist.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE ext_w_dist(a int, b int) EXECUTE 
:'ext_w_dist_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' 
') DISTRIBUTED BY (a);
 ALTER TABLE ext_w_dist SET WITH (reorganize=true); -- should error out if 
forcing reorganize
 ERROR:  cannot reorganize external table "ext_w_dist"
 SELECT policytype, distkey FROM gp_distribution_policy WHERE localoid = 
'ext_w_dist'::regclass;
@@ -4975,9 +5125,13 @@ ALTER TABLE ext_r_dist SET DISTRIBUTED BY (a); -- should 
error out altering read
 ERROR:  cannot set distribution policy of readable external table "ext_r_dist"
 -- Testing external table as the partition child.
 CREATE TABLE part_root(a int) PARTITION BY RANGE(a);
+NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' 
as the Apache Cloudberry data distribution key for this table.
+HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make 
sure column(s) chosen are the optimal data distribution key to minimize skew.
 CREATE TABLE part_child (LIKE part_root);
-CREATE EXTERNAL WEB TABLE part_ext_r(a int) EXECUTE 'cat > 
@abs_srcdir@/data/part_ext.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' ');
-CREATE WRITABLE EXTERNAL WEB TABLE part_ext_w(a int, b int) EXECUTE 'cat > 
@abs_srcdir@/data/part_ext.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' ') DISTRIBUTED BY (a);
+NOTICE:  table doesn't have 'DISTRIBUTED BY' clause, defaulting to 
distribution columns from LIKE table
+\set part_ext_file 'cat > ' :abs_srcdir '/data/part_ext.tbl'
+CREATE EXTERNAL WEB TABLE part_ext_r(a int) EXECUTE :'part_ext_file' FORMAT 
'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ');
+CREATE WRITABLE EXTERNAL WEB TABLE part_ext_w(a int, b int) EXECUTE 
:'part_ext_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ') 
DISTRIBUTED BY (a);
 ALTER TABLE part_root ATTACH PARTITION part_child FOR VALUES FROM (0) TO (10);
 ALTER TABLE part_root ATTACH PARTITION part_ext_r FOR VALUES FROM (10) TO (20);
 NOTICE:  partition constraints are not validated when attaching a readable 
external table
@@ -4999,14 +5153,17 @@ SELECT policytype, distkey FROM gp_distribution_policy 
WHERE localoid = 'part_ex
 
 DROP TABLE part_root;
 -- check logerrors value of pg_exttable
+\set ext_fasle_file 'file://' :hostname :abs_srcdir '/data/ext_fasle.tbl'
+\set ext_true_file 'file://' :hostname :abs_srcdir '/data/ext_true.tbl'
+\set ext_persistently_file 'file://' :hostname :abs_srcdir 
'/data/ext_persistently.tbl'
 CREATE EXTERNAL TABLE ext_false (c INT)
-location ('file://@hostname@@abs_srcdir@/data/ext_fasle.tbl' )
+location (:'ext_fasle_file' )
 FORMAT 'text' (delimiter '|');
 CREATE EXTERNAL TABLE ext_true (c INT)
-location ('file://@hostname@@abs_srcdir@/data/ext_true.tbl' )
+location (:'ext_true_file' )
 FORMAT 'text' (delimiter '|') LOG ERRORS SEGMENT REJECT LIMIT 100;
 CREATE EXTERNAL TABLE ext_persistently (c INT)
-location ('file://@hostname@@abs_srcdir@/data/ext_persistently.tbl' )
+location (:'ext_persistently_file' )
 FORMAT 'text' (delimiter '|') LOG ERRORS PERSISTENTLY SEGMENT REJECT LIMIT 100;
 SELECT logerrors, options from pg_exttable a, pg_class b where a.reloid = 
b.oid and b.relname = 'ext_false';
  logerrors | options 
diff --git a/src/test/regress/expected/index_constraint_naming_partition.out 
b/src/test/regress/expected/index_constraint_naming_partition.out
index c66bddac7e3..a934d8c406c 100755
--- a/src/test/regress/expected/index_constraint_naming_partition.out
+++ b/src/test/regress/expected/index_constraint_naming_partition.out
@@ -178,10 +178,9 @@ CREATE FUNCTION recreate_two_level_table() RETURNS VOID
 $fn$;
 -- validate that there are no constraints when we start
 SELECT * FROM partition_tables_show_all('r');
- partition_name | parent_name | root_name | constraint_name | index_name | 
constraint_type 
-----------------+-------------+-----------+-----------------+------------+-----------------
-(0 rows)
-
+ERROR:  relation "r" does not exist
+CONTEXT:  SQL function "partition_tables" statement 1
+SQL function "partition_tables_show_all" statement 1
 -- UNIQUE constraint: validate we correctly add it and can only drop from root
 SELECT recreate_two_level_table();
 NOTICE:  table "r" does not exist, skipping
diff --git a/src/test/regress/expected/partition_ddl.out 
b/src/test/regress/expected/partition_ddl.out
index 7cc88a593b8..21535b7c473 100644
--- a/src/test/regress/expected/partition_ddl.out
+++ b/src/test/regress/expected/partition_ddl.out
@@ -2243,7 +2243,9 @@ CREATE TABLE mpp3250 (
 subpartition by range (unique2) subpartition template ( start (0) end (1000) 
every (100) )
 ( start (0) end (1000) every (100));
 alter table mpp3250 add default partition default_part;
-copy mpp3250 from '@abs_srcdir@/data/onek.data';
+\getenv abs_srcdir PG_ABS_SRCDIR
+\set onek_data :abs_srcdir '/data/onek.data'
+copy mpp3250 from :'onek_data';
 CREATE TABLE mpp3375 (
         unique1         int4,
         unique2         int4,
@@ -2262,7 +2264,7 @@ CREATE TABLE mpp3375 (
         stringu2        name,
         string4         name
 );
-copy mpp3375 from '@abs_srcdir@/data/onek.data';
+copy mpp3375 from :'onek_data';
 CREATE TABLE mpp3375a (
         unique1         int4,
         unique2         int4,
@@ -2569,7 +2571,7 @@ CREATE TABLE mpp3261 (
         stringu2        name,
         string4         name
 );
-copy mpp3261 from '@abs_srcdir@/data/onek.data';
+copy mpp3261 from :'onek_data';
 CREATE TABLE mpp3261_part (
         unique1         int4,
         unique2         int4,
diff --git a/src/test/regress/sql/external_table.sql 
b/src/test/regress/sql/external_table.sql
index 048da739097..7c9bfa1cdca 100644
--- a/src/test/regress/sql/external_table.sql
+++ b/src/test/regress/sql/external_table.sql
@@ -24,6 +24,9 @@
 -- s/Found.+//
 --
 -- end_matchsubs
+\getenv abs_srcdir PG_ABS_SRCDIR
+\getenv hostname PG_HOSTNAME
+\set nation_tbl 'file://' :hostname :abs_srcdir '/data/nation.tbl'
 CREATE TABLE REG_REGION (R_REGIONKEY INT, R_NAME CHAR(25), R_COMMENT 
VARCHAR(152)) DISTRIBUTED BY (R_REGIONKEY);
 
 -- --------------------------------------
@@ -33,11 +36,11 @@ CREATE EXTERNAL TABLE EXT_NATION  ( N_NATIONKEY  INTEGER ,
                             N_NAME       CHAR(25) ,
                             N_REGIONKEY  INTEGER ,
                             N_COMMENT    VARCHAR(152))
-location ('file://@hostname@@abs_srcdir@/data/nation.tbl' )
+location (:'nation_tbl' )
 FORMAT 'text' (delimiter '|');
 
 CREATE EXTERNAL TABLE EXT_REGION  (LIKE REG_REGION)
-location ('file://@hostname@@abs_srcdir@/data/region.tbl' )
+location (:'nation_tbl' )
 FORMAT 'text' (delimiter '|');
 
 -- Only tables with custom protocol should create dependency, due to a bug 
there
@@ -119,8 +122,9 @@ SELECT * FROM table_env WHERE val LIKE 'GP_QUERY%' ORDER BY 
val ASC;
 SELECT * FROM table_env WHERE val LIKE 'GP_QUERY%\%' ESCAPE '&' ORDER BY val 
ASC;
 
 -- ensure squelching on master
+\set lineitem 'cat ' :abs_srcdir '/data/lineitem.csv'
 CREATE EXTERNAL WEB TABLE table_master (val TEXT)
-  EXECUTE E'cat @abs_srcdir@/data/lineitem.csv' ON MASTER
+  EXECUTE E:'lineitem' ON MASTER
   FORMAT 'TEXT' (ESCAPE 'OFF');
 BEGIN;
 DECLARE _psql_cursor NO SCROLL CURSOR FOR SELECT 1 FROM table_master;
@@ -149,19 +153,21 @@ drop external web table ext_stderr2;
 --
 -- bad csv (quote must be a single char)
 --
+\set whois_file 'gpfdist://' :hostname ':7070/exttab1/whois.csv'
 create external table bad_whois (
 source_lineno                  int,
 domain_name                    varchar(350)
 )
-location ('gpfdist://@hostname@:7070/exttab1/whois.csv' )
+location (:'whois_file' )
 format 'csv' ( header quote as 'ggg');
 select count(*) from bad_whois;
 drop external table bad_whois;
 --
 -- try a bad location
 --
+\set badt1_file 'file://' :hostname :abs_srcdir '/data/no/such/place/badt1.tbl'
 create external table badt1 (x text)
-location ('file://@hostname@@abs_srcdir@/data/no/such/place/badt1.tbl' )
+location (:'badt1_file' )
 format 'text' (delimiter '|');
 select * from badt1;
 drop external table badt1;
@@ -169,15 +175,16 @@ drop external table badt1;
 --
 -- try a bad protocol
 --
+\set baadt2_file 'bad_protocol://' :hostname :abs_srcdir 
'/data/no/such/place/badt2.tbl'
 create external table badt2 (x text)
-location ('bad_protocol://@hostname@@abs_srcdir@/data/no/such/place/badt2.tbl' 
)
+location (:'baadt2_file' )
 format 'text' (delimiter '|');
 
 --
 -- ALTER (partial support)
 --
 create external table ext (a int, x text)
-location ('file://@hostname@@abs_srcdir@/data/no/such/place/badt1.tbl' )
+location (:'badt1_file' )
 format 'text';
 alter table ext drop column a; -- should pass
 alter external table ext add column a int; -- pass
@@ -318,7 +325,8 @@ DROP EXTERNAL TABLE public.test_ext;
 create writable external web table wet_pos4(a text, b text) execute 'some 
command' format 'text';
 
 -- negative
-create writable external table wet_neg1(a text, b text) 
location('file://@hostname@@abs_srcdir@/badt1.tbl') format 'text';
+\set badt1_file2 'file://' :hostname :abs_srcdir '/badt1.tbl'
+create writable external table wet_neg1(a text, b text) 
location(:'badt1_file2') format 'text';
 create writable external table wet_neg1(a text, b text) 
location('gpfdist://foo:7070/wet.out', 'gpfdist://foo:7070/wet.out') format 
'text';
 create writable external web table wet_pos5(a text, b text) execute 'some 
command' on segment 0 format 'text';
 
@@ -331,8 +339,9 @@ select * from wet_pos4;
 -- to implement certain semi-joins. Nowadays, we use generated row IDs in
 -- such plans, and don't need CTID for that purpose anymore.
 
+\set mpp17980_file2 'file://' :hostname :abs_srcdir '/data/mpp17980.data'
 CREATE EXTERNAL TABLE ext_mpp17980 ( id int , id1 int , id2 int)
-LOCATION ('file://@hostname@@abs_srcdir@/data/mpp17980.data')
+LOCATION (:'mpp17980_file2')
 FORMAT 'CSV' ( DELIMITER ',' NULL ' ');
 
 CREATE TABLE mpp17980 (id int, date date, amt decimal(10,2))
@@ -351,17 +360,19 @@ SELECT ctid, * FROM ext_mpp17980;
 DROP EXTERNAL TABLE ext_mpp17980;
 DROP TABLE mpp17980;
 
-COPY (VALUES('1,2'),('1,2,3'),('1,'),('1')) TO 
'@abs_srcdir@/data/tableless.csv';
+\set tableless_file :abs_srcdir '/data/tableless.csv'
+COPY (VALUES('1,2'),('1,2,3'),('1,'),('1')) TO :'tableless_file';
 CREATE TABLE tableless_heap(a int, b int);
-COPY tableless_heap FROM '@abs_srcdir@/data/tableless.csv' CSV LOG ERRORS 
SEGMENT REJECT LIMIT 10;
+COPY tableless_heap FROM :'tableless_file' CSV LOG ERRORS SEGMENT REJECT LIMIT 
10;
 SELECT relname, linenum, errmsg FROM gp_read_error_log('tableless_heap');
 create table errlog_save as select * from gp_read_error_log('tableless_heap');
 select count(*) from errlog_save;
 SELECT gp_truncate_error_log('tableless_heap');
 SELECT relname, linenum, errmsg FROM gp_read_error_log('tableless_heap');
 
+\set tableless_file2 'file://' :hostname :abs_srcdir '/data/tableless.csv'
 create external table tableless_ext(a int, b int)
-location ('file://@hostname@@abs_srcdir@/data/tableless.csv')
+location (:'tableless_file2')
 format 'csv'
 log errors segment reject limit 10;
 select * from tableless_ext;
@@ -417,8 +428,9 @@ insert into wet_too_many_uris values ('foo', 'bar');
 -- Test for error log functionality
 
 -- Scan with no errors
+\set exttab_file 'file://' :hostname :abs_srcdir '/data/exttab.data'
 CREATE EXTERNAL TABLE exttab_basic_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT' 
(DELIMITER '|')
+LOCATION (:'exttab_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Empty error log
 SELECT * FROM gp_read_error_log('exttab_basic_1');
@@ -427,8 +439,9 @@ SELECT COUNT(*) FROM exttab_basic_1;
 SELECT * FROM gp_read_error_log('exttab_basic_1');
 
 -- test ON COORDINATOR without LOG ERRORS, return empty results for all rows 
error out
+\set cat_exttab 'cat ' :abs_srcdir '/data/exttab.data'
 CREATE EXTERNAL WEB TABLE exttab_basic_error_1( i int )
-EXECUTE E'cat @abs_srcdir@/data/exttab.data' ON COORDINATOR
+EXECUTE E:'cat_exttab' ON COORDINATOR
 FORMAT 'TEXT' (DELIMITER '|')
 SEGMENT REJECT LIMIT 20;
 SELECT * FROM exttab_basic_error_1;
@@ -436,14 +449,15 @@ DROP EXTERNAL TABLE IF EXISTS exttab_basic_error_1;
 
 -- test ON MASTER still works (this syntax will be removed in GPDB8 and 
forward)
 CREATE EXTERNAL WEB TABLE exttab_basic_error_1( i int )
-EXECUTE E'cat @abs_srcdir@/data/exttab.data' ON MASTER
+EXECUTE E:'cat_exttab' ON MASTER
 FORMAT 'TEXT' (DELIMITER '|')
 SEGMENT REJECT LIMIT 20;
 SELECT * FROM exttab_basic_error_1;
 
 -- Some errors without exceeding reject limit
+\set exttab_few_errors_file 'file://' :hostname :abs_srcdir 
'/data/exttab_few_errors.data'
 CREATE EXTERNAL TABLE exttab_basic_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- should not error out as segment reject limit will not be reached
 SELECT * FROM exttab_basic_2 order by i;
@@ -451,8 +465,9 @@ SELECT * FROM exttab_basic_2 order by i;
 select count(*) from gp_read_error_log('exttab_basic_2');
 
 -- Errors with exceeding reject limit
+\set exttab_more_errors_file 'file://' :hostname :abs_srcdir 
'/data/exttab_more_errors.data'
 CREATE EXTERNAL TABLE exttab_basic_3( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- should error out as segment reject limit will be reached
 SELECT * FROM exttab_basic_3;
@@ -461,7 +476,7 @@ select count(*) > 0 from 
gp_read_error_log('exttab_basic_3');
 
 -- Insert into another table
 CREATE EXTERNAL TABLE exttab_basic_4( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 100;
 CREATE TABLE exttab_insert_1 (LIKE exttab_basic_4);
 -- Insert should go through fine
@@ -470,7 +485,7 @@ INSERT INTO exttab_insert_1 SELECT * FROM exttab_basic_4;
 select count(*) > 0 from gp_read_error_log('exttab_basic_4');
 -- Use the same error log above
 CREATE EXTERNAL TABLE exttab_basic_5( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 5;
 -- Insert should fail
 INSERT INTO exttab_insert_1 select * from exttab_basic_5;
@@ -480,7 +495,7 @@ SELECT count(*) from gp_read_error_log('exttab_basic_5');
 
 -- CTAS
 CREATE EXTERNAL TABLE exttab_basic_6( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 100;
 CREATE TABLE exttab_ctas_1 as SELECT * FROM exttab_basic_6;
 -- CTAS should go through fine
@@ -488,7 +503,7 @@ SELECT * FROM exttab_ctas_1 order by i;
 -- Error log should have six rows that were rejected
 select count(*) from gp_read_error_log('exttab_basic_6');
 CREATE EXTERNAL TABLE exttab_basic_7( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 5;
 -- CTAS should fail
 CREATE TABLE exttab_ctas_2 AS select * from exttab_basic_7;
@@ -499,7 +514,7 @@ SELECT count(*) from gp_read_error_log('exttab_basic_7');
 -- Drop external table gets rid off error logs
 DROP EXTERNAL TABLE IF EXISTS exttab_error_log;
 CREATE EXTERNAL TABLE exttab_error_log( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT' 
(DELIMITER '|')
+LOCATION (:'exttab_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 SELECT COUNT(*) FROM exttab_error_log;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_error_log');
@@ -508,7 +523,7 @@ SELECT COUNT(*) FROM gp_read_error_log('exttab_error_log');
 
 -- Insert into another table with unique constraints
 CREATE EXTERNAL TABLE exttab_constraints_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT' 
(DELIMITER '|')
+LOCATION (:'exttab_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- Should not error out
 SELECT COUNT(*) FROM exttab_constraints_1;
@@ -525,11 +540,11 @@ SELECT COUNT(*) FROM 
gp_read_error_log('exttab_constraints_1');
 -- CTE with segment reject limit reached
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_cte_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_cte_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 with cte1 as
 (
@@ -554,11 +569,11 @@ SELECT  cte1.i , cte1.j FROM cte1 ORDER BY cte1.i;
 -- Check permissions with gp_truncate_error_log and gp_read_error_log
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_permissions_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_permissions_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- generate some error logs
 SELECT COUNT(*) FROM exttab_permissions_1;
@@ -597,7 +612,7 @@ CREATE DATABASE exttab_db WITH OWNER=exttab_user1;
 \c exttab_db
 -- generate some error logs in this db
 CREATE EXTERNAL TABLE exttab_permissions_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 SELECT COUNT(*) FROM exttab_permissions_1 e1, exttab_permissions_1 e2;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_1');
@@ -622,7 +637,7 @@ CREATE ROLE errlog_exttab_user3 WITH NOSUPERUSER LOGIN;
 CREATE ROLE errlog_exttab_user4 WITH NOSUPERUSER LOGIN;
 -- generate some error logs in this db
 CREATE EXTERNAL TABLE exttab_permissions_3( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 SELECT COUNT(*) FROM exttab_permissions_3 e1, exttab_permissions_3 e2;
 SELECT COUNT(*) FROM gp_read_error_log('exttab_permissions_3');
@@ -649,11 +664,11 @@ SELECT * FROM gp_read_error_log('exttab_permissions_3');
 -- Subqueries reaching segment reject limit
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_subq_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_subq_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 SELECT sum(distinct e1.i), sum(distinct e2.i), e1.j FROM
 (SELECT i, j FROM exttab_subq_1 WHERE i < 5 ) e1,
@@ -733,11 +748,12 @@ SELECT * FROM gp_read_error_log('exttab_subq_2')
 -- TRUNCATE / delete / write to error logs within subtransactions
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_subtxs_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
+\set exttab_more_errors_file2 'file://' :hostname ':' :abs_srcdir 
'/data/exttab_more_errors.data'
 CREATE EXTERNAL TABLE exttab_subtxs_2( i int, j text )
-LOCATION ('file://@hostname@:@abs_srcdir@/data/exttab_more_errors.data') 
FORMAT 'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file2') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Populate error logs before transaction
 SELECT e1.i, e2.j FROM
@@ -804,11 +820,11 @@ SELECT * FROM gp_read_error_log('exttab_subtxs_2')
 -- TRUNCATE error logs within tx , abort transaction
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_txs_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_txs_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- Populate error log before transaction
 SELECT e1.i, e2.j FROM
@@ -883,11 +899,11 @@ BEGIN;
 -- create an external table that will reach segment reject limit
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_txs_3( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- new error log, within segment reject limit
 CREATE EXTERNAL TABLE exttab_txs_4( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 SELECT e1.i, e2.j FROM
 (SELECT i, j FROM exttab_txs_4 WHERE i < 5 ) e1,
@@ -911,11 +927,11 @@ SELECT count(*) FROM exttab_txs_4;
 -- UDFS with segment reject limit reached
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_udfs_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_udfs_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 CREATE OR REPLACE FUNCTION exttab_udfs_func1 ()
 RETURNS boolean
@@ -1044,11 +1060,11 @@ SELECT * FROM exttab_udfs_insert_2;
 DROP EXTERNAL TABLE IF EXISTS exttab_union_1;
 DROP EXTERNAL TABLE IF EXISTS exttab_union_2;
 CREATE EXTERNAL TABLE exttab_union_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_union_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 
 -- Should error out as exttab_union_2 would reach it's reject limit
@@ -1101,11 +1117,11 @@ DROP EXTERNAL TABLE IF EXISTS exttab_views_1 CASCADE;
 DROP EXTERNAL TABLE IF EXISTS exttab_views_2 CASCADE;
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_views_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_views_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 DROP VIEW IF EXISTS exttab_views_3;
 CREATE VIEW exttab_views_3 as
@@ -1178,11 +1194,11 @@ DROP EXTERNAL TABLE IF EXISTS exttab_windows_1;
 DROP EXTERNAL TABLE IF EXISTS exttab_windows_2;
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_windows_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit
 CREATE EXTERNAL TABLE exttab_windows_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 -- without reaching segment reject limit
 with cte1 as(
@@ -1260,11 +1276,11 @@ DROP EXTERNAL TABLE IF EXISTS exttab_limit_1 cascade;
 DROP EXTERNAL TABLE IF EXISTS exttab_limit_2 cascade;
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_limit_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 -- reaches reject limit, use the same err table
 CREATE EXTERNAL TABLE exttab_limit_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_more_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_more_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 2;
 
 -- Note that even though we use exttab_limit_2 here , the LIMIT 3 will not 
throw a segment reject limit error
@@ -1353,10 +1369,11 @@ SELECT * FROM gp_read_error_log('exttab_limit_2')
 -- this guc, the database continues to load the data.
 
 -- default should be 1000
+\set exttab_first_errors_file 'file://' :hostname :abs_srcdir 
'/data/exttab_first_errors.data'
 SHOW gp_initial_bad_row_limit;
 DROP EXTERNAL TABLE IF EXISTS exttab_first_reject_limit_1 cascade;
 CREATE EXTERNAL TABLE exttab_first_reject_limit_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_first_errors.data') 
FORMAT 'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_first_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 20000;
 -- should fail with an appropriate error message
 SELECT COUNT(*) FROM exttab_first_reject_limit_1;
@@ -1369,7 +1386,7 @@ SELECT COUNT(*) FROM 
gp_read_error_log('exttab_first_reject_limit_1');
 -- first segment reject limit should be checked before segment reject limit
 DROP EXTERNAL TABLE IF EXISTS exttab_first_reject_limit_2;
 CREATE EXTERNAL TABLE exttab_first_reject_limit_2( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_first_errors.data') 
FORMAT 'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_first_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 500;
 -- should report an error saying first rows were rejected
 SET gp_initial_bad_row_limit = 2;
@@ -1389,7 +1406,7 @@ SELECT COUNT(*) > 0 from 
gp_read_error_log('exttab_first_reject_limit_2');
 DROP EXTERNAL TABLE IF EXISTS exttab_heap_join_1;
 -- does not reach reject limit
 CREATE EXTERNAL TABLE exttab_heap_join_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 LOG ERRORS SEGMENT REJECT LIMIT 10;
 DROP TABLE IF EXISTS test_ext_heap_join;
 CREATE TABLE test_ext_heap_join( i int, j text);
@@ -1407,7 +1424,7 @@ DROP EXTERNAL TABLE IF EXISTS exttab_with_on_coordinator;
 
 -- Create external table with on clause
 CREATE EXTERNAL TABLE exttab_with_on_coordinator( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') ON 
COORDINATOR FORMAT 'TEXT' (DELIMITER '|');
+LOCATION (:'exttab_few_errors_file') ON COORDINATOR FORMAT 'TEXT' (DELIMITER 
'|');
 
 SELECT * FROM exttab_with_on_coordinator;
 
@@ -1421,15 +1438,15 @@ DROP EXTERNAL TABLE IF EXISTS exttab_with_options;
 
 -- Create external table with 'OPTIONS'
 CREATE EXTERNAL TABLE exttab_with_option_empty( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 OPTIONS ();
 
 CREATE EXTERNAL TABLE exttab_with_option_1( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 OPTIONS (hello 'world');
 
 CREATE EXTERNAL TABLE exttab_with_options( i int, j text )
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab_few_errors.data') FORMAT 
'TEXT' (DELIMITER '|')
+LOCATION (:'exttab_few_errors_file') FORMAT 'TEXT' (DELIMITER '|')
 OPTIONS (hello 'world', bonjour 'again', nihao 'again and again' );
 
 \d exttab_with_options
@@ -1449,21 +1466,27 @@ DROP EXTERNAL TABLE IF EXISTS tbl_wet_csv5;
 -- end_ignore
 
 -- Create writable external table with AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv1 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv1.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' ');
+\set wet_csv1_file 'cat > ' :abs_srcdir '/data/wet_csv1.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv1 (a int, b text) EXECUTE 
:'wet_csv1_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ');
 
 -- Create writable external table without AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv2 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv2.tbl' FORMAT 'CSV' (DELIMITER AS ',' NULL 'null' 
ESCAPE ' ');
+\set wet_csv2_file 'cat > ' :abs_srcdir '/data/wet_csv2.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv2 (a int, b text) EXECUTE 
:'wet_csv2_file' FORMAT 'CSV' (DELIMITER AS ',' NULL 'null' ESCAPE ' ');
 
 -- Create writable external table with double quotes
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv3 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv3.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' '  QUOTE AS '"');
+\set wet_csv3_file 'cat > ' :abs_srcdir '/data/wet_csv3.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv3 (a int, b text) EXECUTE 
:'wet_csv3_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' '  
QUOTE AS '"');
 
 -- Create writable external table with single quotes
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv4 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv4.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' '  QUOTE AS '''');
+\set wet_csv4_file 'cat > ' :abs_srcdir '/data/wet_csv4.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv4 (a int, b text) EXECUTE 
:'wet_csv4_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' '  
QUOTE AS '''');
 
 -- Create writable external table with force quote
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv5 (a int, b text) EXECUTE 'cat > 
@abs_srcdir@/data/wet_csv5.tbl' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' '  QUOTE AS '"' FORCE QUOTE b);
+\set wet_csv5_file 'cat > ' :abs_srcdir '/data/wet_csv5.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv5 (a int, b text) EXECUTE 
:'wet_csv5_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' '  
QUOTE AS '"' FORCE QUOTE b);
 
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv6 (a int, b text, c text) 
EXECUTE 'cat > @abs_srcdir@/data/wet_csv6.tbl' FORMAT 'CSV' (DELIMITER AS '|' 
NULL AS 'null' ESCAPE AS ' ' QUOTE AS '"' FORCE QUOTE *);
+\set wet_csv6_file 'cat > ' :abs_srcdir '/data/wet_csv6.tbl'   
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_csv6 (a int, b text, c text) 
EXECUTE :'wet_csv6_file' FORMAT 'CSV' (DELIMITER AS '|' NULL AS 'null' ESCAPE 
AS ' ' QUOTE AS '"' FORCE QUOTE *);
 
 INSERT INTO tbl_wet_csv1 VALUES (generate_series(1,256), 'test_1');
 INSERT INTO tbl_wet_csv2 VALUES (generate_series(1,256), 'test_2');
@@ -1486,13 +1509,16 @@ DROP EXTERNAL TABLE IF EXISTS tbl_wet_text3;
 -- end_ignore
 
 -- Create writable external table with AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text1 (a int, b text) EXECUTE 'cat 
> @abs_srcdir@/data/wet_text1.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 
'null' ESCAPE AS ' ');
+\set wet_text1_file 'cat > ' :abs_srcdir '/data/wet_text1.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text1 (a int, b text) EXECUTE 
:'wet_text1_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ');
 
 -- Create writable external table without AS for DELIMITER , NULL, ESCAPE
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text2 (a int, b text) EXECUTE 'cat 
> @abs_srcdir@/data/wet_text2.tbl' FORMAT 'TEXT' (DELIMITER AS ',' NULL 'null' 
ESCAPE ' ');
+\set wet_text2_file 'cat > ' :abs_srcdir '/data/wet_text2.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text2 (a int, b text) EXECUTE 
:'wet_text2_file' FORMAT 'TEXT' (DELIMITER AS ',' NULL 'null' ESCAPE ' ');
 
 -- Create writable external table with ESCAPE OFF
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text3 (a int, b text) EXECUTE 'cat 
> @abs_srcdir@/data/wet_text3.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 
'null' ESCAPE 'OFF');
+\set wet_text3_file 'cat > ' :abs_srcdir '/data/wet_text3.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_text3 (a int, b text) EXECUTE 
:'wet_text3_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE 'OFF');
 
 INSERT INTO tbl_wet_text1 VALUES (generate_series(1,256), 'test_1');
 INSERT INTO tbl_wet_text2 VALUES (generate_series(1,256), 'test_2');
@@ -1513,9 +1539,12 @@ DROP EXTERNAL TABLE IF EXISTS tbl_wet_syntax3;
 CREATE TABLE test_dp1 (a int, b text) DISTRIBUTED RANDOMLY;
 CREATE TABLE test_dp2 (a int, b text) DISTRIBUTED BY (b);
 
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax1 (like test_dp1) EXECUTE 
'cat > @abs_srcdir@/data/wet_syntax1.tbl' FORMAT 'TEXT' (DELIMITER '|' ) 
DISTRIBUTED BY (a);
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax2 (like test_dp2) EXECUTE 
'cat > @abs_srcdir@/data/wet_syntax2.tbl' FORMAT 'TEXT' (DELIMITER '|' ) 
DISTRIBUTED BY (a);
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax3 (like test_dp2) EXECUTE 
'cat > @abs_srcdir@/data/wet_syntax3.tbl' FORMAT 'TEXT' (DELIMITER '|' ) 
DISTRIBUTED RANDOMLY;
+\set wet_syntax1_file 'cat > ' :abs_srcdir '/data/wet_syntax1.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax1 (like test_dp1) EXECUTE 
:'wet_syntax1_file' FORMAT 'TEXT' (DELIMITER '|' ) DISTRIBUTED BY (a);
+\set wet_syntax2_file 'cat > ' :abs_srcdir '/data/wet_syntax2.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax2 (like test_dp2) EXECUTE 
:'wet_syntax2_file' FORMAT 'TEXT' (DELIMITER '|' ) DISTRIBUTED BY (a);
+\set wet_syntax3_file 'cat > ' :abs_srcdir '/data/wet_syntax3.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_syntax3 (like test_dp2) EXECUTE 
:'wet_syntax3_file' FORMAT 'TEXT' (DELIMITER '|' ) DISTRIBUTED RANDOMLY;
 
 INSERT INTO tbl_wet_syntax1 VALUES (generate_series(1,256), 'test_1');
 INSERT INTO tbl_wet_syntax2 VALUES (generate_series(1,256), 'test_2');
@@ -1538,7 +1567,8 @@ INSERT INTO table_execute VALUES (100, 'name_1');
 INSERT INTO table_execute VALUES (200, 'name_2');
 INSERT INTO table_execute VALUES (300, 'name_3');
 
-CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_execute (like table_execute) 
EXECUTE 'cat > @abs_srcdir@/data/wet_execute.tbl' FORMAT 'TEXT' (DELIMITER '|' 
);
+\set wet_execute_file 'cat > ' :abs_srcdir '/data/wet_execute.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE tbl_wet_execute (like table_execute) 
EXECUTE :'wet_execute_file' FORMAT 'TEXT' (DELIMITER '|' );
 
 INSERT INTO tbl_wet_execute SELECT * from table_execute ;
 
@@ -1571,8 +1601,9 @@ DROP PROTOCOL if exists demoprot;
 DROP PROTOCOL if exists demoprot2;
 
 -- create external protocol with a serial type column
+\set serial_file 'file://' :hostname :abs_srcdir 
'/data/no/such/place/serial.tbl'
 CREATE EXTERNAL TABLE SERIAL (a serial, x text)
-LOCATION ('file://@hostname@@abs_srcdir@/data/no/such/place/serial.tbl')
+LOCATION (:'serial_file')
 FORMAT 'csv';
 
 -- drop temp external table
@@ -1580,7 +1611,7 @@ DROP EXTERNAL TABLE IF EXISTS serial;
 
 -- External table query within plpgSQL function get error
 CREATE EXTERNAL TABLE exttab_error_context_callback(c1 int, c2 int)
-LOCATION ('file://@hostname@@abs_srcdir@/data/exttab.data') FORMAT 'TEXT';
+LOCATION (:'exttab_file') FORMAT 'TEXT';
 
 CREATE or REPLACE FUNCTION exttab_error_context_callback_func()
 RETURNS SETOF INTEGER
@@ -1610,17 +1641,18 @@ DROP EXTERNAL TABLE exttab_error_context_callback;
 -- --------------------------------------
 -- Encoding
 -- --------------------------------------
-
+\set latin1_encoding_file 'file://' :hostname :abs_srcdir 
'/data/latin1_encoding.csv'
 CREATE EXTERNAL TABLE encoding_issue (num int, word text)
-LOCATION ('file://@hostname@@abs_srcdir@/data/latin1_encoding.csv')
+LOCATION (:'latin1_encoding_file')
 FORMAT 'CSV' ENCODING 'LATIN1';
 
 SELECT * FROM encoding_issue WHERE num = 4;
 
 COPY (SELECT * FROM encoding_issue) TO '/tmp/latin1_encoding.csv' WITH (FORMAT 
'csv', ENCODING 'LATIN1');
 
+\set latin1_encoding_file2 'file://' :hostname '/tmp/latin1_encoding.csv'
 CREATE EXTERNAL TABLE encoding_issue2 (num int, word text)
-LOCATION ('file://@hostname@/tmp/latin1_encoding.csv')
+LOCATION (:'latin1_encoding_file2')
 FORMAT 'CSV' ENCODING 'LATIN1';
 
 SELECT * FROM encoding_issue2 WHERE num = 5;
@@ -3502,6 +3534,7 @@ line_delim=E'\n'
 drop external table large_custom_format_definitions;
 
 -- Incomplete external data file
+\set incomplete_formatter_data 'file://' :hostname :abs_srcdir 
'/data/incomplete_formatter_data.tbl'
 CREATE OR REPLACE FUNCTION gpformatter() RETURNS record
 AS '$libdir/gpformatter.so', 'formatter_import'
 LANGUAGE C STABLE;
@@ -3510,7 +3543,7 @@ CREATE READABLE EXTERNAL TABLE tbl_ext_gpformatter (
 d1 text
 )
 LOCATION (
-  'file://@hostname@@abs_srcdir@/data/incomplete_formatter_data.tbl'
+  :'incomplete_formatter_data'
 )
 FORMAT 'CUSTOM' (formatter='gpformatter');
 
@@ -3639,7 +3672,8 @@ DROP TABLE test_part_integrity;
 CREATE WRITABLE EXTERNAL WEB TABLE ext_dist_repl(a int, b int) EXECUTE 'some 
command' FORMAT 'TEXT' DISTRIBUTED REPLICATED;
 
 -- Testing altering the distribution policy of external tables.
-CREATE WRITABLE EXTERNAL WEB TABLE ext_w_dist(a int, b int) EXECUTE 'cat > 
@abs_srcdir@/data/ext_w_dist.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 
'null' ESCAPE AS ' ') DISTRIBUTED BY (a);
+\set ext_w_dist_file 'cat > ' :abs_srcdir '/data/ext_w_dist.tbl'
+CREATE WRITABLE EXTERNAL WEB TABLE ext_w_dist(a int, b int) EXECUTE 
:'ext_w_dist_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' 
') DISTRIBUTED BY (a);
 ALTER TABLE ext_w_dist SET WITH (reorganize=true); -- should error out if 
forcing reorganize
 SELECT policytype, distkey FROM gp_distribution_policy WHERE localoid = 
'ext_w_dist'::regclass;
 ALTER TABLE ext_w_dist SET DISTRIBUTED BY (b);
@@ -3654,8 +3688,9 @@ ALTER TABLE ext_r_dist SET DISTRIBUTED BY (a); -- should 
error out altering read
 -- Testing external table as the partition child.
 CREATE TABLE part_root(a int) PARTITION BY RANGE(a);
 CREATE TABLE part_child (LIKE part_root);
-CREATE EXTERNAL WEB TABLE part_ext_r(a int) EXECUTE 'cat > 
@abs_srcdir@/data/part_ext.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' ');
-CREATE WRITABLE EXTERNAL WEB TABLE part_ext_w(a int, b int) EXECUTE 'cat > 
@abs_srcdir@/data/part_ext.tbl' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' 
ESCAPE AS ' ') DISTRIBUTED BY (a);
+\set part_ext_file 'cat > ' :abs_srcdir '/data/part_ext.tbl'
+CREATE EXTERNAL WEB TABLE part_ext_r(a int) EXECUTE :'part_ext_file' FORMAT 
'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ');
+CREATE WRITABLE EXTERNAL WEB TABLE part_ext_w(a int, b int) EXECUTE 
:'part_ext_file' FORMAT 'TEXT' (DELIMITER AS '|' NULL AS 'null' ESCAPE AS ' ') 
DISTRIBUTED BY (a);
 ALTER TABLE part_root ATTACH PARTITION part_child FOR VALUES FROM (0) TO (10);
 ALTER TABLE part_root ATTACH PARTITION part_ext_r FOR VALUES FROM (10) TO (20);
 
@@ -3670,14 +3705,17 @@ SELECT policytype, distkey FROM gp_distribution_policy 
WHERE localoid = 'part_ex
 DROP TABLE part_root;
 
 -- check logerrors value of pg_exttable
+\set ext_fasle_file 'file://' :hostname :abs_srcdir '/data/ext_fasle.tbl'
+\set ext_true_file 'file://' :hostname :abs_srcdir '/data/ext_true.tbl'
+\set ext_persistently_file 'file://' :hostname :abs_srcdir 
'/data/ext_persistently.tbl'
 CREATE EXTERNAL TABLE ext_false (c INT)
-location ('file://@hostname@@abs_srcdir@/data/ext_fasle.tbl' )
+location (:'ext_fasle_file' )
 FORMAT 'text' (delimiter '|');
 CREATE EXTERNAL TABLE ext_true (c INT)
-location ('file://@hostname@@abs_srcdir@/data/ext_true.tbl' )
+location (:'ext_true_file' )
 FORMAT 'text' (delimiter '|') LOG ERRORS SEGMENT REJECT LIMIT 100;
 CREATE EXTERNAL TABLE ext_persistently (c INT)
-location ('file://@hostname@@abs_srcdir@/data/ext_persistently.tbl' )
+location (:'ext_persistently_file' )
 FORMAT 'text' (delimiter '|') LOG ERRORS PERSISTENTLY SEGMENT REJECT LIMIT 100;
 
 SELECT logerrors, options from pg_exttable a, pg_class b where a.reloid = 
b.oid and b.relname = 'ext_false';


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


Reply via email to