This is an automated email from the ASF dual-hosted git repository.
avamingli pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
The following commit(s) were added to refs/heads/main by this push:
new a64917415eb Fix calculating size of a database or tablespace
a64917415eb is described below
commit a64917415eb2f557657562770b6e6e19d1fe3426
Author: Hao Wu <[email protected]>
AuthorDate: Fri Nov 14 00:54:50 2025 +0000
Fix calculating size of a database or tablespace
pg_database_size only counts phyical files in database directory.
The sub-directory under database directory can't represent the real
storage size. The same issue happens on calculating the size of
tablespace as well.
Currently, PAX creates a separate directory to storage all its
phyical files, like micro-partition files, visibility-map files, etc.
To include the phyical files occupied by PAX tables, `db_dir_size`
should calculate its sub-directories recursively.
---
src/backend/utils/adt/dbsize.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index e41dc619b89..d163a7f38ea 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -153,6 +153,15 @@ db_dir_size(const char *path)
continue;
snprintf(filename, sizeof(filename), "%s/%s", path,
direntry->d_name);
+ if (direntry->d_type == DT_DIR)
+ {
+ /**
+ * Recurse into subdirectory. PAX stores data file in a
separate
+ * directory, so we need to account for that.
+ */
+ dirsize += db_dir_size(filename);
+ continue;
+ }
if (stat(filename, &fst) < 0)
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]