Merge pull request #237 from sosedoff/activity-fix

Activity tab fix
This commit is contained in:
Dan Sosedoff 2017-05-10 22:14:21 -05:00 committed by GitHub
commit 84cfef8480
3 changed files with 42 additions and 20 deletions

View File

@ -19,6 +19,7 @@ import (
type Client struct {
db *sqlx.DB
tunnel *Tunnel
serverVersion string
History []history.Record `json:"history"`
ConnectionString string `json:"connection_string"`
}
@ -62,6 +63,7 @@ func New() (*Client, error) {
History: history.New(),
}
client.setServerVersion()
return &client, nil
}
@ -113,9 +115,20 @@ func NewFromUrl(url string, sshInfo *shared.SSHInfo) (*Client, error) {
History: history.New(),
}
client.setServerVersion()
return &client, nil
}
func (client *Client) setServerVersion() {
res, err := client.query("SELECT version()")
if err != nil || len(res.Rows) < 1 {
return
}
version := res.Rows[0][0].(string)
client.serverVersion = strings.Split(version, " ")[1]
}
func (client *Client) Test() error {
return client.db.Ping()
}
@ -211,7 +224,15 @@ func (client *Client) TableConstraints(table string) (*Result, error) {
// Returns all active queriers on the server
func (client *Client) Activity() (*Result, error) {
return client.query(statements.Activity)
chunks := strings.Split(client.serverVersion, ".")
version := strings.Join(chunks[0:2], ".")
query := statements.Activity[version]
if query == "" {
query = statements.Activity["default"]
}
return client.query(query)
}
func (client *Client) Query(query string) (*Result, error) {

View File

@ -159,6 +159,13 @@ func test_Info(t *testing.T) {
assert.NotEqual(t, nil, res)
}
func test_Activity(t *testing.T) {
res, err := testClient.Activity()
assert.Equal(t, nil, err)
assert.NotEqual(t, nil, res)
}
func test_Databases(t *testing.T) {
res, err := testClient.Databases()
@ -360,6 +367,7 @@ func TestAll(t *testing.T) {
test_NewClientFromUrl(t)
test_Test(t)
test_Info(t)
test_Activity(t)
test_Databases(t)
test_Objects(t)
test_Table(t)

View File

@ -107,25 +107,6 @@ WHERE
// ---------------------------------------------------------------------------
Activity = `
SELECT
datname,
query,
state,
waiting,
query_start,
state_change,
pid,
datid,
application_name,
client_addr
FROM
pg_stat_activity
WHERE
state IS NOT NULL`
// ---------------------------------------------------------------------------
Objects = `
SELECT
n.nspname as "schema",
@ -151,3 +132,15 @@ WHERE
has_schema_privilege(n.nspname, 'USAGE')
ORDER BY 1, 2`
)
var (
Activity = map[string]string{
"default": "SELECT * FROM pg_stat_activity",
"9.1": "SELECT datname, current_query, waiting, query_start, procpid as pid, datid, application_name, client_addr FROM pg_stat_activity",
"9.2": "SELECT datname, query, state, waiting, query_start, state_change, pid, datid, application_name, client_addr FROM pg_stat_activity",
"9.3": "SELECT datname, query, state, waiting, query_start, state_change, pid, datid, application_name, client_addr FROM pg_stat_activity",
"9.4": "SELECT datname, query, state, waiting, query_start, state_change, pid, datid, application_name, client_addr FROM pg_stat_activity",
"9.5": "SELECT datname, query, state, waiting, query_start, state_change, pid, datid, application_name, client_addr FROM pg_stat_activity",
"9.6": "SELECT datname, query, state, query_start, state_change, pid, datid, application_name, client_addr FROM pg_stat_activity",
}
)