From 30b23afb5fca43110f09201897742c378eccb285 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Mon, 15 Apr 2013 15:27:31 +0200 Subject: added statsfs patch from Роман Бородин MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pgsql.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'pgsql.c') diff --git a/pgsql.c b/pgsql.c index e42a6cf..6b7a263 100644 --- a/pgsql.c +++ b/pgsql.c @@ -928,3 +928,54 @@ size_t psql_get_block_size( PGconn *conn, const size_t block_size ) return db_block_size; } +size_t psql_get_fs_used( PGconn *conn ) +{ + PGresult *res; + char *data; + size_t fs_used; + res = PQexec( conn, "SELECT SUM(size) FROM dir;" ); + if( PQresultStatus( res ) != PGRES_TUPLES_OK ) { + syslog( LOG_ERR, "Error in psql_get_fs_used: %s", PQerrorMessage( conn ) ); + PQclear( res ); + return -EIO; + } + + /* empty, this is ok, any blocksize acceptable after initialization */ + if( PQntuples( res ) == 0 ) { + PQclear( res ); + return 0; + } + + data = PQgetvalue( res, 0, 0 ); + fs_used = atol( data ); + + PQclear( res ); + + return fs_used; +} + +size_t psql_get_fs_free( PGconn *conn ) +{ + PGresult *res; + char *data; + size_t fs_free; + res = PQexec( conn, "SELECT db_disk_free();" ); + if( PQresultStatus( res ) != PGRES_TUPLES_OK ) { + syslog( LOG_ERR, "Error in psql_get_fs_free: %s", PQerrorMessage( conn ) ); + PQclear( res ); + return -EIO; + } + + /* empty, this is ok, any blocksize acceptable after initialization */ + if( PQntuples( res ) == 0 ) { + PQclear( res ); + return -EIO; + } + + data = PQgetvalue( res, 0, 0 ); + fs_free = atol( data ); + + PQclear( res ); + + return fs_free; +} -- cgit v1.2.3-54-g00ecf