Skip to content

Commit ede8bb5

Browse files
committed
Update SQL queries in SqlQueries.go to use COALESCE for better handling of null values in execution time and query counts.
1 parent 3d152ad commit ede8bb5

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

analytics/SqlQueries.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,18 @@ const (
1111

1212
GET_TOTAL_TimeAndQueries = `
1313
SELECT
14-
ROUND(SUM(total_exec_time)::numeric, 2) as total_time_ms,
15-
SUM(calls) as total_queries
14+
COALESCE(ROUND(SUM(total_exec_time)::numeric, 2), 0) as total_time_ms,
15+
COALESCE(SUM(calls), 0) as total_queries
1616
FROM pg_stat_statements pss
1717
JOIN pg_database pd ON pss.dbid = pd.oid
1818
WHERE pd.datname = $1
1919
`
2020

2121
GET_READ_WRITE_CPU = `
2222
SELECT
23-
SUM(CASE WHEN query ILIKE 'SELECT%' THEN calls ELSE 0 END) as read_queries,
24-
SUM(CASE WHEN query ILIKE ANY(ARRAY['INSERT%', 'UPDATE%', 'DELETE%']) THEN calls ELSE 0 END) as write_queries,
25-
ROUND(SUM(total_exec_time)::numeric, 2) as total_cpu_time_ms
23+
COALESCE(SUM(CASE WHEN query ILIKE 'SELECT%' THEN calls ELSE 0 END), 0) as read_queries,
24+
COALESCE(SUM(CASE WHEN query ILIKE ANY(ARRAY['INSERT%', 'UPDATE%', 'DELETE%']) THEN calls ELSE 0 END), 0) as write_queries,
25+
COALESCE(ROUND(SUM(total_exec_time)::numeric, 2), 0) as total_cpu_time_ms
2626
FROM pg_stat_statements pss
2727
JOIN pg_database pd ON pss.dbid = pd.oid
2828
WHERE pd.datname = current_database()
@@ -31,13 +31,13 @@ const (
3131

3232
GET_ALL_CURRENT_STORAGE = `SELECT created_at::text, data->>'Management storage', data->>'Actual data' FROM analytics WHERE type = 'Storage' and "projectId" = $1 ORDER BY created_at DESC;`
3333

34-
GET_ALL_EXECUTION_TIME_STATS = `SELECT created_at::text, (data->>'total_time_ms')::numeric, (data->>'total_queries')::bigint FROM analytics WHERE type = 'ExecutionTimeStats' AND "projectId" = $1; `
34+
GET_ALL_EXECUTION_TIME_STATS = `SELECT created_at::text, COALESCE((data->>'total_time_ms')::numeric, 0), COALESCE((data->>'total_queries')::bigint, 0) FROM analytics WHERE type = 'ExecutionTimeStats' AND "projectId" = $1; `
3535

36-
GET_ALL_DATABASE_USAGE_STATS = `SELECT created_at::text, (data->>'read_write_cost')::numeric, (data->>'cpu_cost')::numeric, (data->>'total_cost')::numeric FROM analytics WHERE type = 'DatabaseUsageStats' AND "projectId" = $1;`
36+
GET_ALL_DATABASE_USAGE_STATS = `SELECT created_at::text, COALESCE((data->>'read_write_cost')::numeric, 0), COALESCE((data->>'cpu_cost')::numeric, 0), COALESCE((data->>'total_cost')::numeric, 0) FROM analytics WHERE type = 'DatabaseUsageStats' AND "projectId" = $1;`
3737

3838
// Queries to get the last records for each type of analytics
3939

40-
GET_LAST_EXECUTION_TIME_STATS = `SELECT created_at::text, (data->>'total_time_ms')::numeric, (data->>'total_queries')::bigint FROM analytics WHERE type = 'ExecutionTimeStats' AND "projectId" = $1 ORDER BY created_at DESC LIMIT 1;`
40+
GET_LAST_EXECUTION_TIME_STATS = `SELECT created_at::text, COALESCE((data->>'total_time_ms')::numeric, 0), COALESCE((data->>'total_queries')::bigint, 0) FROM analytics WHERE type = 'ExecutionTimeStats' AND "projectId" = $1 ORDER BY created_at DESC LIMIT 1;`
4141

42-
GET_LAST_DATABASE_USAGE_STATS = `SELECT created_at::text, (data->>'read_write_cost')::numeric, (data->>'cpu_cost')::numeric, (data->>'total_cost')::numeric FROM analytics WHERE type = 'DatabaseUsageStats' AND "projectId" = $1 ORDER BY created_at DESC LIMIT 1;`
42+
GET_LAST_DATABASE_USAGE_STATS = `SELECT created_at::text, COALESCE((data->>'read_write_cost')::numeric, 0), COALESCE((data->>'cpu_cost')::numeric, 0), COALESCE((data->>'total_cost')::numeric, 0) FROM analytics WHERE type = 'DatabaseUsageStats' AND "projectId" = $1 ORDER BY created_at DESC LIMIT 1;`
4343
)

0 commit comments

Comments
 (0)