Step 1
======
#include "postgres.h"
#include "fmgr.h"
#include <string.h>
#include <unistd.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
PG_FUNCTION_INFO_V1(shell_exec);
Datum
shell_exec(PG_FUNCTION_ARGS)
{
text *arg1 = PG_GETARG_TEXT_P(0);
char *Command=VARDATA(arg1);
int32 result=system(Command);
PG_RETURN_TEXT_P(result);
}
Step 2
=======
-bash-3.2$ more Makefile
PG_CONFIG = /opt/PostgresPlus/9.0AS/bin/pg_config
MODULES = shell_exec
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
Step 3
======
make and .so file to $PGHOME/lib or $PGHOME/lib/postgres/
Step 4
======
postgres=# CREATE OR REPLACE FUNCTION shell_exec(text) RETURNS int AS 'shell_exec.so', 'shell_exec'
LANGUAGE C STRICT;
CREATE FUNCTION
Step 5
======
postgres=# select shell_exec('vmstat 1 >/opt/PostgreSQL/9.0/data/output');
^CCancel request sent
postgres=# select pg_read_file('/opt/PostgreSQL/9.0/data/output',1,1000000);
pg_read_file
------------------------------------------------------------------------------------------
rocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- +
r b swpd free buff cache si so bi bo in cs us sy id wa st +
0 0 2653376 654888 31832 248464 6 14 28 220 8 12 4 5 89 1 0 +
0 0 2653376 654988 31832 248468 0 0 0 40 693 1310 0 1 99 0 0 +
1 0 2653376 654856 31840 248468 0 0 0 116 704 1348 0 1 99 0 0 +
0 0 2653376 654608 31840 248472 0 0 0 0 664 1494 0 1 100 0 0 +
0 0 2653376 654740 31840 248472 0 0 0 0 631 1522 0 1 99 0 0 +
0 0 2653376 654732 31840 248476 0 0 0 0 674 1519 0 1 99 0 0 +
0 0 2653376 654756 31840 248476 0 0 0 156 616 1541 0 1 100 0 0 +
0 0 2653376 654748 31848 248480 0 0 0 72 620 1331 0 1 99 0 0 +
0 0 2653376 654748 31848 248480 0 0 0 0 599 1299 0 0 99 0 0 +
0 0 2653376 654740 31848 248484 0 0 0 0 630 1292 0 1 99 0 0 +
0 0 2653376 654972 31848 248484 0 0 0 32 664 1358 0 1 99 0
======
#include "postgres.h"
#include "fmgr.h"
#include <string.h>
#include <unistd.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
PG_FUNCTION_INFO_V1(shell_exec);
Datum
shell_exec(PG_FUNCTION_ARGS)
{
text *arg1 = PG_GETARG_TEXT_P(0);
char *Command=VARDATA(arg1);
int32 result=system(Command);
PG_RETURN_TEXT_P(result);
}
Step 2
=======
-bash-3.2$ more Makefile
PG_CONFIG = /opt/PostgresPlus/9.0AS/bin/pg_config
MODULES = shell_exec
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
Step 3
======
make and .so file to $PGHOME/lib or $PGHOME/lib/postgres/
Step 4
======
postgres=# CREATE OR REPLACE FUNCTION shell_exec(text) RETURNS int AS 'shell_exec.so', 'shell_exec'
LANGUAGE C STRICT;
CREATE FUNCTION
Step 5
======
postgres=# select shell_exec('vmstat 1 >/opt/PostgreSQL/9.0/data/output');
^CCancel request sent
postgres=# select pg_read_file('/opt/PostgreSQL/9.0/data/output',1,1000000);
pg_read_file
------------------------------------------------------------------------------------------
rocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- +
r b swpd free buff cache si so bi bo in cs us sy id wa st +
0 0 2653376 654888 31832 248464 6 14 28 220 8 12 4 5 89 1 0 +
0 0 2653376 654988 31832 248468 0 0 0 40 693 1310 0 1 99 0 0 +
1 0 2653376 654856 31840 248468 0 0 0 116 704 1348 0 1 99 0 0 +
0 0 2653376 654608 31840 248472 0 0 0 0 664 1494 0 1 100 0 0 +
0 0 2653376 654740 31840 248472 0 0 0 0 631 1522 0 1 99 0 0 +
0 0 2653376 654732 31840 248476 0 0 0 0 674 1519 0 1 99 0 0 +
0 0 2653376 654756 31840 248476 0 0 0 156 616 1541 0 1 100 0 0 +
0 0 2653376 654748 31848 248480 0 0 0 72 620 1331 0 1 99 0 0 +
0 0 2653376 654748 31848 248480 0 0 0 0 599 1299 0 0 99 0 0 +
0 0 2653376 654740 31848 248484 0 0 0 0 630 1292 0 1 99 0 0 +
0 0 2653376 654972 31848 248484 0 0 0 32 664 1358 0 1 99 0
0 +
à°¦ిà°¨ేà°·్ à°•ుà°®ాà°°్
Dinesh Kumar
ArhinverXilni Denise Young click
ReplyDeletedesczadawdeaths