summaryrefslogtreecommitdiffstats
path: root/commands.c
diff options
context:
space:
mode:
authorMark Wong <markwkm@gmail.com>2012-06-02 22:41:12 -0700
committerMark Wong <markwkm@gmail.com>2012-09-17 14:52:47 -0700
commite81bf4167a0a2e485bfbcf0be37f2456121da0cf (patch)
tree1330214e088069c0dfc420836ae9e75b26548df3 /commands.c
parent122387cb00375bbc6233b8d957c4dd9fc21e1ffc (diff)
Abstract pg_stat_activity calls
Move all the queries against pg_stat_activity into pg.c. They need to be modified to take into consideration the version of postgres server. It should be easier to maintain if they're all in one file.
Diffstat (limited to 'commands.c')
-rw-r--r--commands.c28
1 files changed, 3 insertions, 25 deletions
diff --git a/commands.c b/commands.c
index b3f2bda..374ccbb 100644
--- a/commands.c
+++ b/commands.c
@@ -80,19 +80,6 @@ static char *err_listem =
#define BEGIN "BEGIN;"
#define ROLLBACK "ROLLBACK;"
-#define CURRENT_QUERY \
- "SELECT current_query\n" \
- "FROM pg_stat_activity\n" \
- "WHERE procpid = %d;"
-
-#define GET_LOCKS \
- "SELECT datname, relname, mode, granted\n" \
- "FROM pg_stat_activity, pg_locks\n" \
- "LEFT OUTER JOIN pg_class\n" \
- "ON relation = pg_class.oid\n"\
- "WHERE procpid = %d\n" \
- " AND procpid = pid;" \
-
/*
* err_compar(p1, p2) - comparison routine used by "qsort"
* for sorting errors.
@@ -529,13 +516,10 @@ show_current_query(char *conninfo, int procpid)
{
int i;
int rows;
- char *sql;
char info[64];
PGconn *pgconn;
PGresult *pgresult = NULL;
- sql = (char *) malloc(strlen(CURRENT_QUERY) + 7);
- sprintf(sql, CURRENT_QUERY, procpid);
sprintf(info, "Current query for procpid %d:\n\n", procpid);
display_pager(info);
@@ -543,7 +527,7 @@ show_current_query(char *conninfo, int procpid)
pgconn = connect_to_db(conninfo);
if (pgconn != NULL)
{
- pgresult = PQexec(pgconn, sql);
+ pgresult = pg_query(pgconn, procpid);
rows = PQntuples(pgresult);
}
else
@@ -556,7 +540,6 @@ show_current_query(char *conninfo, int procpid)
}
display_pager("\n\n");
- free(sql);
if (pgresult != NULL)
PQclear(pgresult);
PQfinish(pgconn);
@@ -575,7 +558,6 @@ show_explain(char *conninfo, int procpid, int analyze)
PGresult *pgresult_query = NULL;
PGresult *pgresult_explain = NULL;
- sprintf(sql, CURRENT_QUERY, procpid);
sprintf(info,
"Current query plan for procpid %d:\n\n Statement:\n\n",
procpid);
@@ -585,7 +567,7 @@ show_explain(char *conninfo, int procpid, int analyze)
pgconn = connect_to_db(conninfo);
if (pgconn != NULL)
{
- pgresult_query = PQexec(pgconn, sql);
+ pgresult_query = pg_query(pgconn, procpid);
rows = PQntuples(pgresult_query);
}
else
@@ -636,7 +618,6 @@ show_locks(char *conninfo, int procpid)
j,
k;
int rows;
- char *sql;
char info[64];
int width[5] = {1, 8, 5, 4, 7};
PGconn *pgconn;
@@ -646,8 +627,6 @@ show_locks(char *conninfo, int procpid)
char prefix[21]; /* Should hold any 64 bit integer. */
char line[1024];
- sql = (char *) malloc(strlen(GET_LOCKS) + 7);
- sprintf(sql, GET_LOCKS, procpid);
sprintf(info, "Locks held by procpid %d:\n\n", procpid);
display_pager(info);
@@ -659,8 +638,7 @@ show_locks(char *conninfo, int procpid)
return;
}
- pgresult = PQexec(pgconn, sql);
- free(sql);
+ pgresult = pg_locks(pgconn, procpid);
rows = PQntuples(pgresult);
/* Determine column sizes. */