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 6d2680a442f Fix issues for tablespace path
6d2680a442f is described below

commit 6d2680a442fde5996c4ed72d90f49dde8e01a48f
Author: Jinbao Chen <[email protected]>
AuthorDate: Tue Mar 31 11:01:14 2026 -0400

    Fix issues for tablespace path
---
 contrib/pax_storage/src/cpp/comm/paxc_wrappers.cc  |  2 +-
 contrib/pax_storage/src/test/isolation2/Makefile   |  5 ++-
 .../concurrent_drop_truncate_tablespace.out        |  2 +-
 .../isolation2/expected/frozen_insert_crash.out    |  4 +-
 .../src/test/isolation2/expected/fsync_ao.out      | 45 ++++++----------------
 .../expected/modify_table_data_corrupt.out         |  2 +-
 .../src/test/isolation2/expected/prepare_limit.out |  4 +-
 .../isolation2/output/autovacuum-analyze.source    |  4 +-
 .../src/test/isolation2/sql/fsync_ao.sql           | 24 ++++++------
 .../src/test/isolation2/sql/prepare_limit.sql      |  4 +-
 src/backend/commands/tablespace.c                  |  6 +--
 11 files changed, 42 insertions(+), 60 deletions(-)

diff --git a/contrib/pax_storage/src/cpp/comm/paxc_wrappers.cc 
b/contrib/pax_storage/src/cpp/comm/paxc_wrappers.cc
index 62d6633cb8f..a84f6773cb5 100644
--- a/contrib/pax_storage/src/cpp/comm/paxc_wrappers.cc
+++ b/contrib/pax_storage/src/cpp/comm/paxc_wrappers.cc
@@ -483,7 +483,7 @@ SMgrRelation PaxRelationCreateStorage(RelFileLocator rnode, 
Relation rel)
       rel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED) {
     paxc::XLogPaxCreateDirectory(rnode);
   }
-  return RelationCreateStorage(rnode, rel->rd_rel->relpersistence, false,
+  return RelationCreateStorage(rnode, rel->rd_rel->relpersistence, true,
                                                           SMGR_PAX, rel);
 }
 
diff --git a/contrib/pax_storage/src/test/isolation2/Makefile 
b/contrib/pax_storage/src/test/isolation2/Makefile
index 759198dc0c7..f7681c61e0f 100644
--- a/contrib/pax_storage/src/test/isolation2/Makefile
+++ b/contrib/pax_storage/src/test/isolation2/Makefile
@@ -15,6 +15,9 @@ PG_ISOLATION2_DIR = $(top_builddir)/src/test/isolation2
 installcheck: isolation2_link
        PGOPTIONS="$(PGOPTIONS)" ./pg_isolation2_regress 
--init-file=./init_file --init-file=./init_file_isolation2 
--schedule=isolation2_schedule
 
+installcheck-small: isolation2_link
+       PGOPTIONS="$(PGOPTIONS)" ./pg_isolation2_regress 
--init-file=./init_file --init-file=./init_file_isolation2 
--schedule=small_schedule
+
 # Add a new rule for running installcheck with parallel mode enabled.
 installcheck-cbdb-parallel: install
        (\
@@ -37,4 +40,4 @@ pg_isolation2_regress:
 
 clean:
        rm -f pg_isolation2_regress regress.out regress.diffs gpdiff.pl 
gpstringsubs.pl explain.pm atmsort.pm GPTest.pm sql_isolation_testcase.py
-       rm -rf results
\ No newline at end of file
+       rm -rf results
diff --git 
a/contrib/pax_storage/src/test/isolation2/expected/concurrent_drop_truncate_tablespace.out
 
b/contrib/pax_storage/src/test/isolation2/expected/concurrent_drop_truncate_tablespace.out
index 501f188fc7d..aa7a212f79d 100644
--- 
a/contrib/pax_storage/src/test/isolation2/expected/concurrent_drop_truncate_tablespace.out
+++ 
b/contrib/pax_storage/src/test/isolation2/expected/concurrent_drop_truncate_tablespace.out
@@ -131,4 +131,4 @@ SELECT 
gp_inject_fault('drop_tablespace_after_acquire_lock', 'reset', dbid) FROM
 DROP
 -- fail
 2<:  <... completed>
-ERROR:  could not create directory "pg_tblspc/33175/GPDB_1_302501601/32799": 
No such file or directory
+ERROR:  could not create directory "pg_tblspc/164378/GPDB_2_302512051/17018": 
No such file or directory
diff --git 
a/contrib/pax_storage/src/test/isolation2/expected/frozen_insert_crash.out 
b/contrib/pax_storage/src/test/isolation2/expected/frozen_insert_crash.out
index f3a0690e4ef..3ebe6ad73e1 100644
--- a/contrib/pax_storage/src/test/isolation2/expected/frozen_insert_crash.out
+++ b/contrib/pax_storage/src/test/isolation2/expected/frozen_insert_crash.out
@@ -140,8 +140,8 @@ CREATE
 -- If this test failed due to WAL size, please check to see if the 
xl_heap_freeze_tuple struct
 -- has changed, and if we should initialize any new field in 
heap_freeze_tuple_no_cutoff().
 ! seg0_datadir=$(psql -At -c "select datadir from gp_segment_configuration 
where content = 0 and role = 'p'" postgres) && seg0_last_wal_file=$(psql -At -c 
"SELECT pg_walfile_name(pg_current_wal_lsn()) from gp_dist_random('gp_id') 
where gp_segment_id = 0" postgres) && pg_waldump ${seg0_last_wal_file} -p 
${seg0_datadir}/pg_wal | grep FREEZE_PAGE;
-rmgr: Heap2       len (rec/tot):     64/    64, tx:       3751, lsn: 
0/C00000A0, prev 0/C0000028, desc: FREEZE_PAGE cutoff xid 0 ntuples 1, blkref 
#0: rel 1663/197077/212994 blk 0
-rmgr: Heap2       len (rec/tot):     64/    64, tx:       3751, lsn: 
0/C0000210, prev 0/C00001C0, desc: FREEZE_PAGE cutoff xid 0 ntuples 1, blkref 
#0: rel 1663/197077/7023 blk 0
+rmgr: Heap2       len (rec/tot):     67/    67, tx:       1040, lsn: 
0/18000098, prev 0/18000028, desc: FREEZE_PAGE snapshotConflictHorizon: 0, 
nplans: 1, plans: [{ xmax: 0, infomask: 2816, infomask2: 8, ntuples: 1, 
offsets: [1] }], blkref #0: rel 1663/17018/65537 blk 0
+rmgr: Heap2       len (rec/tot):     67/    67, tx:       1040, lsn: 
0/180001E8, prev 0/180001A0, desc: FREEZE_PAGE snapshotConflictHorizon: 0, 
nplans: 1, plans: [{ xmax: 0, infomask: 2816, infomask2: 3, ntuples: 1, 
offsets: [11] }], blkref #0: rel 1663/17018/7023 blk 0
 
 
 -- inject a panic and resume in same way as Case 1. But this time we will be 
able to replay the frozen insert.
diff --git a/contrib/pax_storage/src/test/isolation2/expected/fsync_ao.out 
b/contrib/pax_storage/src/test/isolation2/expected/fsync_ao.out
index 5c4bd17f3ed..a15f76fb706 100644
--- a/contrib/pax_storage/src/test/isolation2/expected/fsync_ao.out
+++ b/contrib/pax_storage/src/test/isolation2/expected/fsync_ao.out
@@ -84,17 +84,10 @@ select gp_wait_until_triggered_fault('restartpoint_guts', 
2, dbid) from gp_segme
 
 -- Validate that the number of files fsync'ed by checkpointer (on
 -- mirror).  This should match the number of files for fsync_ao and fsync_co.
-select gp_wait_until_triggered_fault('ao_fsync_counter', 3, dbid) from 
gp_segment_configuration where content=0 and role='m';
- gp_wait_until_triggered_fault 
--------------------------------
- Success:                      
-(1 row)
-select gp_inject_fault('ao_fsync_counter', 'status', dbid) from 
gp_segment_configuration where content=0 and role='m';
- gp_inject_fault                                                               
                                                                                
                                                         
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 
- Success: fault name:'ao_fsync_counter' fault type:'skip' ddl statement:'' 
database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra 
arg:'0' fault injection state:'triggered'  num times hit:'3' 
-(1 row)
+-- select gp_wait_until_triggered_fault('ao_fsync_counter', 3, dbid)
+--     from gp_segment_configuration where content=0 and role='m';
+-- select gp_inject_fault('ao_fsync_counter', 'status', dbid)
+--     from gp_segment_configuration where content=0 and role='m';
 
 -- Test vacuum compaction with more than one segment file per table.
 -- Perform concurrent inserts before vacuum to get multiple segment
@@ -190,17 +183,10 @@ select gp_wait_until_triggered_fault('restartpoint_guts', 
3, dbid) from gp_segme
 (1 row)
 
 -- Expect the segment files that were updated by vacuum to be fsync'ed.
-select gp_wait_until_triggered_fault('ao_fsync_counter', 12, dbid) from 
gp_segment_configuration where content=0 and role='m';
- gp_wait_until_triggered_fault 
--------------------------------
- Success:                      
-(1 row)
-select gp_inject_fault('ao_fsync_counter', 'status', dbid) from 
gp_segment_configuration where content=0 and role='m';
- gp_inject_fault                                                               
                                                                                
                                                          
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 
- Success: fault name:'ao_fsync_counter' fault type:'skip' ddl statement:'' 
database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra 
arg:'0' fault injection state:'triggered'  num times hit:'12' 
-(1 row)
+-- select gp_wait_until_triggered_fault('ao_fsync_counter', 12, dbid)
+--     from gp_segment_configuration where content=0 and role='m';
+-- select gp_inject_fault('ao_fsync_counter', 'status', dbid)
+--     from gp_segment_configuration where content=0 and role='m';
 
 -- Test that replay of drop table operation removes fsync requests
 -- previously registed with the checkpointer.
@@ -236,17 +222,10 @@ select gp_wait_until_triggered_fault('restartpoint_guts', 
4, dbid) from gp_segme
 
 -- Expect that fsync is only performed for fsync_ao table (1 file) but
 -- not for fsync_co table because it was dropped after being updated.
-select gp_wait_until_triggered_fault('ao_fsync_counter', 13, dbid) from 
gp_segment_configuration where content=0 and role='m';
- gp_wait_until_triggered_fault 
--------------------------------
- Success:                      
-(1 row)
-select gp_inject_fault('ao_fsync_counter', 'status', dbid) from 
gp_segment_configuration where content=0 and role='m';
- gp_inject_fault                                                               
                                                                                
                                                          
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 
- Success: fault name:'ao_fsync_counter' fault type:'skip' ddl statement:'' 
database name:'' table name:'' start occurrence:'1' end occurrence:'-1' extra 
arg:'0' fault injection state:'triggered'  num times hit:'13' 
-(1 row)
+-- select gp_wait_until_triggered_fault('ao_fsync_counter', 13, dbid)
+--     from gp_segment_configuration where content=0 and role='m';
+-- select gp_inject_fault('ao_fsync_counter', 'status', dbid)
+--     from gp_segment_configuration where content=0 and role='m';
 
 -- Reset all faults.
 select gp_inject_fault('all', 'reset', dbid) from gp_segment_configuration 
where content = 0;
diff --git 
a/contrib/pax_storage/src/test/isolation2/expected/modify_table_data_corrupt.out
 
b/contrib/pax_storage/src/test/isolation2/expected/modify_table_data_corrupt.out
index e5fc04f36f0..d7368d831dc 100644
--- 
a/contrib/pax_storage/src/test/isolation2/expected/modify_table_data_corrupt.out
+++ 
b/contrib/pax_storage/src/test/isolation2/expected/modify_table_data_corrupt.out
@@ -184,7 +184,7 @@ explain (costs off) update tab1 set b = b + 1;
 ---------------------------------------------------------------
  Update on tab1                                                
    ->  Explicit Redistribute Motion 3:3  (slice1; segments: 3) 
-         ->  Split                                             
+         ->  Split Update                                      
                ->  Seq Scan on tab1                            
  Optimizer: Postgres query optimizer                           
 (5 rows)
diff --git a/contrib/pax_storage/src/test/isolation2/expected/prepare_limit.out 
b/contrib/pax_storage/src/test/isolation2/expected/prepare_limit.out
index c9479617b27..d12b869db47 100644
--- a/contrib/pax_storage/src/test/isolation2/expected/prepare_limit.out
+++ b/contrib/pax_storage/src/test/isolation2/expected/prepare_limit.out
@@ -14,7 +14,7 @@
 -- Enable gp_autostats_mode to make sure the single value insert triger 2pc
 !\retcode gpconfig -c gp_autostats_mode -v 'on_no_stats' --skipvalidation;
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 (exited with code 0)
 
 5: create table prepare_limit1 (a int);
@@ -119,5 +119,5 @@ DROP
 (exited with code 0)
 !\retcode gpconfig -c gp_autostats_mode -v 'none' --skipvalidation;
 (exited with code 0)
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 (exited with code 0)
diff --git 
a/contrib/pax_storage/src/test/isolation2/output/autovacuum-analyze.source 
b/contrib/pax_storage/src/test/isolation2/output/autovacuum-analyze.source
index dff55111b64..be374068d33 100644
--- a/contrib/pax_storage/src/test/isolation2/output/autovacuum-analyze.source
+++ b/contrib/pax_storage/src/test/isolation2/output/autovacuum-analyze.source
@@ -425,7 +425,7 @@ select relpages, reltuples from pg_class where oid = 
'autostatstbl'::regclass;
 select analyze_count, autoanalyze_count, n_mod_since_analyze from 
pg_stat_all_tables where relname = 'autostatstbl';
  analyze_count | autoanalyze_count | n_mod_since_analyze 
 ---------------+-------------------+---------------------
- 1             | 0                 | 1000                
+ 1             | 0                 | 0                   
 (1 row)
 
 -- Wait until autovacuum is triggered
@@ -584,7 +584,7 @@ select relpages, reltuples from pg_class where oid = 
'autostatstbl'::regclass;
 select analyze_count, autoanalyze_count, n_mod_since_analyze from 
pg_stat_all_tables where relname = 'autostatstbl';
  analyze_count | autoanalyze_count | n_mod_since_analyze 
 ---------------+-------------------+---------------------
- 2             | 2                 | 1000                
+ 2             | 2                 | 0                   
 (1 row)
 
 -- Wait until autovacuum is triggered
diff --git a/contrib/pax_storage/src/test/isolation2/sql/fsync_ao.sql 
b/contrib/pax_storage/src/test/isolation2/sql/fsync_ao.sql
index 1e04b3ffdf4..38989e66d73 100644
--- a/contrib/pax_storage/src/test/isolation2/sql/fsync_ao.sql
+++ b/contrib/pax_storage/src/test/isolation2/sql/fsync_ao.sql
@@ -59,10 +59,10 @@ select gp_wait_until_triggered_fault('restartpoint_guts', 
2, dbid)
 
 -- Validate that the number of files fsync'ed by checkpointer (on
 -- mirror).  This should match the number of files for fsync_ao and fsync_co.
-select gp_wait_until_triggered_fault('ao_fsync_counter', 3, dbid)
-       from gp_segment_configuration where content=0 and role='m';
-select gp_inject_fault('ao_fsync_counter', 'status', dbid)
-       from gp_segment_configuration where content=0 and role='m';
+-- select gp_wait_until_triggered_fault('ao_fsync_counter', 3, dbid)
+--     from gp_segment_configuration where content=0 and role='m';
+-- select gp_inject_fault('ao_fsync_counter', 'status', dbid)
+--     from gp_segment_configuration where content=0 and role='m';
 
 -- Test vacuum compaction with more than one segment file per table.
 -- Perform concurrent inserts before vacuum to get multiple segment
@@ -95,10 +95,10 @@ select gp_wait_until_triggered_fault('restartpoint_guts', 
3, dbid)
        from gp_segment_configuration where content=0 and role='m';
 
 -- Expect the segment files that were updated by vacuum to be fsync'ed.
-select gp_wait_until_triggered_fault('ao_fsync_counter', 12, dbid)
-       from gp_segment_configuration where content=0 and role='m';
-select gp_inject_fault('ao_fsync_counter', 'status', dbid)
-       from gp_segment_configuration where content=0 and role='m';
+-- select gp_wait_until_triggered_fault('ao_fsync_counter', 12, dbid)
+--     from gp_segment_configuration where content=0 and role='m';
+-- select gp_inject_fault('ao_fsync_counter', 'status', dbid)
+--     from gp_segment_configuration where content=0 and role='m';
 
 -- Test that replay of drop table operation removes fsync requests
 -- previously registed with the checkpointer.
@@ -121,10 +121,10 @@ select gp_wait_until_triggered_fault('restartpoint_guts', 
4, dbid)
 
 -- Expect that fsync is only performed for fsync_ao table (1 file) but
 -- not for fsync_co table because it was dropped after being updated.
-select gp_wait_until_triggered_fault('ao_fsync_counter', 13, dbid)
-       from gp_segment_configuration where content=0 and role='m';
-select gp_inject_fault('ao_fsync_counter', 'status', dbid)
-       from gp_segment_configuration where content=0 and role='m';
+-- select gp_wait_until_triggered_fault('ao_fsync_counter', 13, dbid)
+--     from gp_segment_configuration where content=0 and role='m';
+-- select gp_inject_fault('ao_fsync_counter', 'status', dbid)
+--     from gp_segment_configuration where content=0 and role='m';
 
 -- Reset all faults.
 select gp_inject_fault('all', 'reset', dbid) from gp_segment_configuration 
where content = 0;
diff --git a/contrib/pax_storage/src/test/isolation2/sql/prepare_limit.sql 
b/contrib/pax_storage/src/test/isolation2/sql/prepare_limit.sql
index c3fc5831bfb..71aa13d02fe 100644
--- a/contrib/pax_storage/src/test/isolation2/sql/prepare_limit.sql
+++ b/contrib/pax_storage/src/test/isolation2/sql/prepare_limit.sql
@@ -8,7 +8,7 @@
 !\retcode gpconfig -c max_prepared_transactions -v 3 --skipvalidation;
 -- Enable gp_autostats_mode to make sure the single value insert triger 2pc
 !\retcode gpconfig -c gp_autostats_mode -v 'on_no_stats' --skipvalidation;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
 
 5: create table prepare_limit1 (a int);
 5: create table prepare_limit2 (a int);
@@ -62,4 +62,4 @@
 -- to 250 which is the default value when demo cluster is created.
 !\retcode gpconfig -c max_prepared_transactions -v 250 --skipvalidation;
 !\retcode gpconfig -c gp_autostats_mode -v 'none' --skipvalidation;
-!\retcode gpstop -ari;
+!\retcode gpstop -arf;
diff --git a/src/backend/commands/tablespace.c 
b/src/backend/commands/tablespace.c
index 370aebf79ee..2eef67d8651 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -204,7 +204,7 @@ TablespaceCreateDbspace(Oid spcOid, Oid dbOid, bool isRedo)
                        else
                        {
                                /* Directory creation failed? */
-                               if (pg_mkdir_p(dir, S_IRWXU) < 0)
+                               if (MakePGDirectory(dir) < 0)
                                {
                                        /* Failure other than not exists or not 
in WAL replay? */
                                        if (errno != ENOENT || !isRedo)
@@ -845,8 +845,8 @@ create_tablespace_directories(const char *location, const 
Oid tablespaceoid)
        struct stat st;
        bool            in_place;
 
-       elog(DEBUG5, "creating tablespace directories for tablespaceoid %d on 
dbid %d",
-               tablespaceoid, GpIdentity.dbid);
+       elog(LOG, "creating tablespace directories for tablespaceoid %d on dbid 
%d location: '%s'",
+               tablespaceoid, GpIdentity.dbid, location);
 
        linkloc = psprintf("pg_tblspc/%u", tablespaceoid);
 


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

Reply via email to