working well, now, adjust everything, optimise, and TODO
authorCédric Villemain <cedric.villemain.debian@gmail.com>
Mon, 10 Aug 2009 00:53:40 +0000 (02:53 +0200)
committerCédric Villemain <cedric.villemain.debian@gmail.com>
Mon, 10 Aug 2009 00:53:40 +0000 (02:53 +0200)
pgfincore.c
pgfincore_84.sql.in

index 775258f84c15892f7755bb6f494357e60809088b..8a885dd7246154eafc81f831465bde77423047a8 100644 (file)
@@ -112,10 +112,14 @@ Datum pgfincore(PG_FUNCTION_ARGS)
        fctx->segcount = 0;
        funcctx->user_fctx = fctx;
        
-       tupdesc = CreateTemplateTupleDesc(2, false);
+       tupdesc = CreateTemplateTupleDesc(4, false);
        TupleDescInitEntry(tupdesc, (AttrNumber) 1, "relpath",
                                                                                TEXTOID, -1, 0);
-       TupleDescInitEntry(tupdesc, (AttrNumber) 2, "block_mem",
+       TupleDescInitEntry(tupdesc, (AttrNumber) 2, "block_disk",
+                                                                               INT8OID, -1, 0);
+       TupleDescInitEntry(tupdesc, (AttrNumber) 3, "block_mem",
+                                                                               INT8OID, -1, 0);
+       TupleDescInitEntry(tupdesc, (AttrNumber) 4, "group_mem",
                                                                                INT8OID, -1, 0);
 
        funcctx->tuple_desc = BlessTupleDesc(tupdesc);
@@ -149,12 +153,14 @@ Datum pgfincore(PG_FUNCTION_ARGS)
   /* or send the result */
   else {
        HeapTuple               tuple;
-       Datum                   values[2];
-       bool                    nulls[2];
+       Datum                   values[4];
+       bool                    nulls[4];
 
        fctx->segcount++;
        values[0] = CStringGetTextDatum(pathname);
-       values[1] = Int64GetDatum(info->block_mem);
+       values[1] = Int64GetDatum(info->block_disk);
+       values[2] = Int64GetDatum(info->block_mem);
+       values[3] = Int64GetDatum(info->group_mem);
        memset(nulls, 0, sizeof(nulls));
        tuple = heap_form_tuple(funcctx->tuple_desc, values, nulls);
        elog(DEBUG1, "file %s contain %i block in linux cache memory", pathname, info->block_mem);
index f2e9afed722e6ee0084bc95950a8fe0a75c58351..a68ebdd1361d0baea5b3c97c41cf29bd91cf6fb3 100644 (file)
@@ -1,12 +1,12 @@
 SET search_path = public;
 
 CREATE OR REPLACE FUNCTION 
-pgfincore(IN regclass, IN text, OUT relpath text, OUT block_mem bigint)
+pgfincore(IN regclass, IN text, OUT relpath text, OUT block_disk bigint, OUT block_mem bigint, OUT group_mem bigint)
 RETURNS setof record
 AS 'MODULE_PATHNAME'
 LANGUAGE C;
 
-CREATE OR REPLACE FUNCTION pgfincore(IN regclass, OUT relpath text, OUT block_mem bigint)
+CREATE OR REPLACE FUNCTION pgfincore(IN regclass, OUT relpath text, OUT block_disk bigint, OUT block_mem bigint, OUT group_mem bigint)
 RETURNS setof record
 AS 'SELECT pgfincore($1, ''main'')'
 LANGUAGE SQL;