#include "postgres.h"
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include "access/heapam.h"
#include "catalog/catalog.h"
#include "catalog/namespace.h"
#include "commands/dbcommands.h"
#include "fmgr.h"
#include "utils/builtins.h"
#include <sys/vfs.h>
/*Author haung cheng,2009-12-09
*Mail:wsjhhc@tom.com
*QQ:123557014
*/
/*
* SQL function: disk_size(name) returns bigint
*/
PG_FUNCTION_INFO_V1(disk_size);
Datum disk_size(PG_FUNCTION_ARGS);
Datum disk_size(PG_FUNCTION_ARGS)
{
Name dbname = PG_GETARG_NAME(0);
int32 iflags = PG_GETARG_INT32(1);
Oid dbid;
char *dbpath;
int64 totalsize = 0;
struct statfs fs;
dbid = get_database_oid(NameStr(*dbname));
if (!OidIsValid(dbid))
elog(ERROR, "database %s does not exist", NameStr(*dbname));
dbpath = GetDatabasePath(dbid);
memset (&fs, 0, sizeof (fs));
if (statfs (dbpath, &fs) != 0)
elog(ERROR, "dbpath %s access failed", dbpath);
switch(iflags)
{
case 0:/*all space (M byte) in file system */
totalsize = fs.f_blocks / 1024 * fs.f_bsize / 1000;
break;
case 1:/*used space (M byte) in file system*/
totalsize = (fs.f_blocks - fs.f_bavail) / 1024 * fs.f_bsize / 1000;
break;
default:
break;
}
PG_RETURN_INT64(totalsize);
}
没有合适的资源?快使用搜索试试~ 我知道了~
disk_size.rar_disk
共4个文件
disk_size:1个
makefile:1个
in:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 157 浏览量
2022-09-19
15:43:56
上传
评论
收藏 2KB RAR 举报
温馨提示
绝对原创,函数库disk_size.so+源码,支持查询postgresql数据库分区大小
资源推荐
资源详情
资源评论
收起资源包目录
disk_size.rar (4个子文件)
disk_size
disk_size.c 1KB
README.disk_size 494B
disk_size.sql.in 127B
Makefile 213B
共 4 条
- 1
资源评论
Kinonoyomeo
- 粉丝: 77
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功