Use go embed to load queries from static files (#607)
This commit is contained in:
@@ -1,162 +1,44 @@
|
||||
package statements
|
||||
|
||||
const (
|
||||
Databases = `
|
||||
SELECT
|
||||
datname
|
||||
FROM
|
||||
pg_database
|
||||
WHERE
|
||||
NOT datistemplate
|
||||
ORDER BY
|
||||
datname ASC`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Schemas = `
|
||||
SELECT
|
||||
schema_name
|
||||
FROM
|
||||
information_schema.schemata
|
||||
ORDER BY
|
||||
schema_name ASC`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Info = `
|
||||
SELECT
|
||||
session_user,
|
||||
current_user,
|
||||
current_database(),
|
||||
current_schemas(false),
|
||||
inet_client_addr(),
|
||||
inet_client_port(),
|
||||
inet_server_addr(),
|
||||
inet_server_port(),
|
||||
version()`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
EstimatedTableRowCount = `
|
||||
SELECT
|
||||
reltuples
|
||||
FROM
|
||||
pg_class
|
||||
WHERE
|
||||
oid = ('"' || $1::text || '"."' || $2::text || '"')::regclass
|
||||
`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TableIndexes = `
|
||||
SELECT
|
||||
indexname AS index_name,
|
||||
pg_size_pretty(pg_table_size(indexname::regclass)) AS index_size,
|
||||
indexdef AS index_definition
|
||||
FROM
|
||||
pg_indexes
|
||||
WHERE
|
||||
schemaname = $1 AND
|
||||
tablename = $2`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TableConstraints = `
|
||||
SELECT
|
||||
conname as name,
|
||||
pg_get_constraintdef(c.oid, true) as definition
|
||||
FROM
|
||||
pg_constraint c
|
||||
JOIN
|
||||
pg_namespace n ON n.oid = c.connamespace
|
||||
JOIN
|
||||
pg_class cl ON cl.oid = c.conrelid
|
||||
WHERE
|
||||
n.nspname = $1 AND
|
||||
relname = $2
|
||||
ORDER BY
|
||||
contype desc`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TableInfo = `
|
||||
SELECT
|
||||
pg_size_pretty(pg_table_size($1)) AS data_size,
|
||||
pg_size_pretty(pg_indexes_size($1)) AS index_size,
|
||||
pg_size_pretty(pg_total_relation_size($1)) AS total_size,
|
||||
(SELECT reltuples FROM pg_class WHERE oid = $1::regclass) AS rows_count`
|
||||
|
||||
TableInfoCockroach = `
|
||||
SELECT
|
||||
'n/a' AS data_size,
|
||||
'n/a' AS index_size,
|
||||
'n/a' AS total_size,
|
||||
'n/a' AS rows_count`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
TableSchema = `
|
||||
SELECT
|
||||
column_name,
|
||||
data_type,
|
||||
is_nullable,
|
||||
character_maximum_length,
|
||||
character_set_catalog,
|
||||
column_default,
|
||||
pg_catalog.col_description(('"' || $1::text || '"."' || $2::text || '"')::regclass::oid, ordinal_position) as comment
|
||||
FROM
|
||||
information_schema.columns
|
||||
WHERE
|
||||
table_schema = $1 AND
|
||||
table_name = $2`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
MaterializedView = `
|
||||
SELECT
|
||||
attname as column_name,
|
||||
atttypid::regtype AS data_type,
|
||||
(case when attnotnull IS TRUE then 'NO' else 'YES' end) as is_nullable,
|
||||
null as character_maximum_length,
|
||||
null as character_set_catalog,
|
||||
null as column_default
|
||||
FROM
|
||||
pg_attribute
|
||||
WHERE
|
||||
attrelid = $1::regclass AND
|
||||
attnum > 0 AND
|
||||
NOT attisdropped`
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Objects = `
|
||||
SELECT
|
||||
n.nspname as "schema",
|
||||
c.relname as "name",
|
||||
CASE c.relkind
|
||||
WHEN 'r' THEN 'table'
|
||||
WHEN 'v' THEN 'view'
|
||||
WHEN 'm' THEN 'materialized_view'
|
||||
WHEN 'i' THEN 'index'
|
||||
WHEN 'S' THEN 'sequence'
|
||||
WHEN 's' THEN 'special'
|
||||
WHEN 'f' THEN 'foreign_table'
|
||||
END as "type",
|
||||
pg_catalog.pg_get_userbyid(c.relowner) as "owner",
|
||||
pg_catalog.obj_description(c.oid) as "comment"
|
||||
FROM
|
||||
pg_catalog.pg_class c
|
||||
LEFT JOIN
|
||||
pg_catalog.pg_namespace n ON n.oid = c.relnamespace
|
||||
WHERE
|
||||
c.relkind IN ('r','v','m','S','s','') AND
|
||||
n.nspname !~ '^pg_toast' AND
|
||||
n.nspname NOT IN ('information_schema', 'pg_catalog') AND
|
||||
has_schema_privilege(n.nspname, 'USAGE')
|
||||
ORDER BY 1, 2`
|
||||
import (
|
||||
_ "embed"
|
||||
)
|
||||
|
||||
var (
|
||||
//go:embed sql/databases.sql
|
||||
Databases string
|
||||
|
||||
//go:embed sql/schemas.sql
|
||||
Schemas string
|
||||
|
||||
//go:embed sql/info.sql
|
||||
Info string
|
||||
|
||||
//go:embed sql/estimated_row_count.sql
|
||||
EstimatedTableRowCount string
|
||||
|
||||
//go:embed sql/table_indexes.sql
|
||||
TableIndexes string
|
||||
|
||||
//go:embed sql/table_constraints.sql
|
||||
TableConstraints string
|
||||
|
||||
//go:embed sql/table_info.sql
|
||||
TableInfo string
|
||||
|
||||
//go:embed sql/table_info_cockroach.sql
|
||||
TableInfoCockroach string
|
||||
|
||||
//go:embed sql/table_schema.sql
|
||||
TableSchema string
|
||||
|
||||
//go:embed sql/materialized_view.sql
|
||||
MaterializedView string
|
||||
|
||||
//go:embed sql/objects.sql
|
||||
Objects string
|
||||
|
||||
// Activity queries for specific PG versions
|
||||
Activity = map[string]string{
|
||||
"default": "SELECT * FROM pg_stat_activity WHERE datname = current_database()",
|
||||
"9.1": "SELECT datname, current_query, waiting, query_start, procpid as pid, datid, application_name, client_addr FROM pg_stat_activity WHERE datname = current_database()",
|
||||
|
||||
8
pkg/statements/sql/databases.sql
Normal file
8
pkg/statements/sql/databases.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
SELECT
|
||||
datname
|
||||
FROM
|
||||
pg_database
|
||||
WHERE
|
||||
NOT datistemplate
|
||||
ORDER BY
|
||||
datname ASC
|
||||
6
pkg/statements/sql/estimated_row_count.sql
Normal file
6
pkg/statements/sql/estimated_row_count.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
SELECT
|
||||
reltuples
|
||||
FROM
|
||||
pg_class
|
||||
WHERE
|
||||
oid = ('"' || $1::text || '"."' || $2::text || '"')::regclass
|
||||
10
pkg/statements/sql/info.sql
Normal file
10
pkg/statements/sql/info.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
SELECT
|
||||
session_user,
|
||||
current_user,
|
||||
current_database(),
|
||||
current_schemas(false),
|
||||
inet_client_addr(),
|
||||
inet_client_port(),
|
||||
inet_server_addr(),
|
||||
inet_server_port(),
|
||||
version()
|
||||
13
pkg/statements/sql/materialized_view.sql
Normal file
13
pkg/statements/sql/materialized_view.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
SELECT
|
||||
attname AS column_name,
|
||||
atttypid::regtype AS data_type,
|
||||
(CASE WHEN attnotnull IS TRUE THEN 'NO' ELSE 'YES' END) AS is_nullable,
|
||||
NULL AS character_maximum_length,
|
||||
NULL AS character_set_catalog,
|
||||
NULL AS column_default
|
||||
FROM
|
||||
pg_attribute
|
||||
WHERE
|
||||
attrelid = $1::regclass
|
||||
AND attnum > 0
|
||||
AND NOT attisdropped
|
||||
25
pkg/statements/sql/objects.sql
Normal file
25
pkg/statements/sql/objects.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
SELECT
|
||||
n.nspname AS schema,
|
||||
c.relname AS name,
|
||||
CASE c.relkind
|
||||
WHEN 'r' THEN 'table'
|
||||
WHEN 'v' THEN 'view'
|
||||
WHEN 'm' THEN 'materialized_view'
|
||||
WHEN 'i' THEN 'index'
|
||||
WHEN 'S' THEN 'sequence'
|
||||
WHEN 's' THEN 'special'
|
||||
WHEN 'f' THEN 'foreign_table'
|
||||
END AS type,
|
||||
pg_catalog.pg_get_userbyid(c.relowner) AS owner,
|
||||
pg_catalog.obj_description(c.oid) AS comment
|
||||
FROM
|
||||
pg_catalog.pg_class c
|
||||
LEFT JOIN
|
||||
pg_catalog.pg_namespace n ON n.oid = c.relnamespace
|
||||
WHERE
|
||||
c.relkind IN ('r','v','m','S','s','')
|
||||
AND n.nspname !~ '^pg_toast'
|
||||
AND n.nspname NOT IN ('information_schema', 'pg_catalog')
|
||||
AND has_schema_privilege(n.nspname, 'USAGE')
|
||||
ORDER BY
|
||||
1, 2
|
||||
6
pkg/statements/sql/schemas.sql
Normal file
6
pkg/statements/sql/schemas.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
SELECT
|
||||
schema_name
|
||||
FROM
|
||||
information_schema.schemata
|
||||
ORDER BY
|
||||
schema_name ASC
|
||||
14
pkg/statements/sql/table_constraints.sql
Normal file
14
pkg/statements/sql/table_constraints.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
SELECT
|
||||
conname AS name,
|
||||
pg_get_constraintdef(c.oid, true) AS definition
|
||||
FROM
|
||||
pg_constraint c
|
||||
JOIN
|
||||
pg_namespace n ON n.oid = c.connamespace
|
||||
JOIN
|
||||
pg_class cl ON cl.oid = c.conrelid
|
||||
WHERE
|
||||
n.nspname = $1
|
||||
AND relname = $2
|
||||
ORDER BY
|
||||
contype DESC
|
||||
9
pkg/statements/sql/table_indexes.sql
Normal file
9
pkg/statements/sql/table_indexes.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
SELECT
|
||||
indexname AS index_name,
|
||||
pg_size_pretty(pg_table_size((schemaname || '.' || indexname)::regclass)) AS index_size,
|
||||
indexdef AS index_definition
|
||||
FROM
|
||||
pg_indexes
|
||||
WHERE
|
||||
schemaname = $1
|
||||
AND tablename = $2
|
||||
5
pkg/statements/sql/table_info.sql
Normal file
5
pkg/statements/sql/table_info.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
SELECT
|
||||
pg_size_pretty(pg_table_size($1)) AS data_size,
|
||||
pg_size_pretty(pg_indexes_size($1)) AS index_size,
|
||||
pg_size_pretty(pg_total_relation_size($1)) AS total_size,
|
||||
(SELECT reltuples FROM pg_class WHERE oid = $1::regclass) AS rows_count
|
||||
5
pkg/statements/sql/table_info_cockroach.sql
Normal file
5
pkg/statements/sql/table_info_cockroach.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
SELECT
|
||||
'n/a' AS data_size,
|
||||
'n/a' AS index_size,
|
||||
'n/a' AS total_size,
|
||||
'n/a' AS rows_count
|
||||
13
pkg/statements/sql/table_schema.sql
Normal file
13
pkg/statements/sql/table_schema.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
SELECT
|
||||
column_name,
|
||||
data_type,
|
||||
is_nullable,
|
||||
character_maximum_length,
|
||||
character_set_catalog,
|
||||
column_default,
|
||||
pg_catalog.col_description(('"' || $1::text || '"."' || $2::text || '"')::regclass::oid, ordinal_position) as comment
|
||||
FROM
|
||||
information_schema.columns
|
||||
WHERE
|
||||
table_schema = $1
|
||||
AND table_name = $2
|
||||
Reference in New Issue
Block a user