Adds pg_database_size_local_function

pull/7375/head
gindibay 2023-12-07 13:49:54 +03:00 committed by gurkanindibay
parent 6801a1ed1e
commit 5edc04d956
4 changed files with 74 additions and 0 deletions

View File

@ -17,6 +17,7 @@
#include "postgres.h"
#include "fmgr.h"
#include "miscadmin.h"
#include "pgstat.h"
@ -184,6 +185,8 @@ PG_FUNCTION_INFO_V1(citus_internal_add_tenant_schema);
PG_FUNCTION_INFO_V1(citus_internal_delete_tenant_schema);
PG_FUNCTION_INFO_V1(citus_internal_update_none_dist_table_metadata);
PG_FUNCTION_INFO_V1(citus_internal_database_command);
PG_FUNCTION_INFO_V1(citus_pg_database_size_by_db_name);
PG_FUNCTION_INFO_V1(citus_pg_database_size_by_db_oid);
static bool got_SIGTERM = false;
@ -4048,6 +4051,43 @@ citus_internal_database_command(PG_FUNCTION_ARGS)
PG_RETURN_VOID();
}
Datum
citus_pg_database_size_by_db_name(PG_FUNCTION_ARGS){
CheckCitusVersion(ERROR);
PG_ENSURE_ARGNOTNULL(0, "dbName");
Name dbName = PG_GETARG_NAME(0);
Datum size = DirectFunctionCall1(pg_database_size_name, NameGetDatum(dbName));
PG_RETURN_DATUM(size);
}
Datum
citus_pg_database_size_by_db_oid(PG_FUNCTION_ARGS){
CheckCitusVersion(ERROR);
PG_ENSURE_ARGNOTNULL(0, "dbOid");
Oid dbOid = PG_GETARG_OID(0);
Datum size = DirectFunctionCall1(pg_database_size_oid, ObjectIdGetDatum(dbOid));
PG_RETURN_DATUM(size);
}
Datum citus_internal_database_size(PG_FUNCTION_ARGS){
CheckCitusVersion(ERROR);
PG_ENSURE_ARGNOTNULL(0, "dbName");
Name dbName = PG_GETARG_NAME(0);
PG_RETURN_DATUM(size);
}
/*
* SyncNewColocationGroup synchronizes a new pg_dist_colocation entry to a worker.

View File

@ -1,5 +1,7 @@
-- citus--12.2-1--12.1-1
DROP FUNCTION pg_catalog.citus_internal_database_command(text);
DROP FUNCTION pg_catalog.pg_database_size_local(name);
DROP FUNCTION pg_catalog.pg_database_size_local(oid);
#include "../udfs/citus_add_rebalance_strategy/10.1-1.sql"

View File

@ -8,3 +8,19 @@ CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_database_command(command te
AS 'MODULE_PATHNAME', $$citus_internal_database_command$$;
COMMENT ON FUNCTION pg_catalog.citus_internal_database_command(text) IS
'run a database command without transaction block restrictions';
CREATE OR REPLACE FUNCTION pg_catalog.pg_database_size_local(db_name name)
RETURNS bigint
LANGUAGE C
VOLATILE
AS 'MODULE_PATHNAME', $$citus_pg_database_size_by_db_name$$;
COMMENT ON FUNCTION pg_catalog.pg_database_size_local(name) IS
'calculates the size of a database in bytes by its name in a multi-node cluster';
CREATE OR REPLACE FUNCTION pg_catalog.pg_database_size_local(db_oid oid)
RETURNS bigint
LANGUAGE C
VOLATILE
AS 'MODULE_PATHNAME', $$citus_pg_database_size_by_db_oid$$;
COMMENT ON FUNCTION pg_catalog.pg_database_size_local(oid) IS
'calculates the size of a database in bytes by its oid in a multi-node cluster';

View File

@ -8,3 +8,19 @@ CREATE OR REPLACE FUNCTION pg_catalog.citus_internal_database_command(command te
AS 'MODULE_PATHNAME', $$citus_internal_database_command$$;
COMMENT ON FUNCTION pg_catalog.citus_internal_database_command(text) IS
'run a database command without transaction block restrictions';
CREATE OR REPLACE FUNCTION pg_catalog.pg_database_size_local(db_name name)
RETURNS bigint
LANGUAGE C
VOLATILE
AS 'MODULE_PATHNAME', $$citus_pg_database_size_by_db_name$$;
COMMENT ON FUNCTION pg_catalog.pg_database_size_local(name) IS
'calculates the size of a database in bytes by its name in a multi-node cluster';
CREATE OR REPLACE FUNCTION pg_catalog.pg_database_size_local(db_oid oid)
RETURNS bigint
LANGUAGE C
VOLATILE
AS 'MODULE_PATHNAME', $$citus_pg_database_size_by_db_oid$$;
COMMENT ON FUNCTION pg_catalog.pg_database_size_local(oid) IS
'calculates the size of a database in bytes by its oid in a multi-node cluster';