mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-08-08 12:08:14 -05:00
Merge pgcli code with version 1.10.3, which is used for auto complete feature.
This commit is contained in:
@@ -1,30 +1,16 @@
|
||||
{# ============= Fetch the list of functions based on given schema_names ============= #}
|
||||
{% if func_name %}
|
||||
SELECT n.nspname schema_name,
|
||||
p.proname func_name,
|
||||
pg_catalog.pg_get_function_arguments(p.oid) arg_list,
|
||||
pg_catalog.pg_get_function_result(p.oid) return_type,
|
||||
p.proargnames arg_names,
|
||||
COALESCE(proallargtypes::regtype[], proargtypes::regtype[])::text[] arg_types,
|
||||
p.proargmodes arg_modes,
|
||||
prorettype::regtype::text return_type,
|
||||
CASE WHEN p.prokind = 'a' THEN true ELSE false END is_aggregate,
|
||||
CASE WHEN p.prokind = 'w' THEN true ELSE false END is_window,
|
||||
p.proretset is_set_returning
|
||||
p.proretset is_set_returning,
|
||||
pg_get_expr(proargdefaults, 0) AS arg_defaults
|
||||
FROM pg_catalog.pg_proc p
|
||||
INNER JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname = '{{schema_name}}' AND p.proname = '{{func_name}}'
|
||||
AND p.proretset
|
||||
ORDER BY 1, 2
|
||||
{% else %}
|
||||
SELECT n.nspname schema_name,
|
||||
p.proname object_name,
|
||||
pg_catalog.pg_get_function_arguments(p.oid) arg_list,
|
||||
pg_catalog.pg_get_function_result(p.oid) return_type,
|
||||
CASE WHEN p.prokind = 'a' THEN true ELSE false END is_aggregate,
|
||||
CASE WHEN p.prokind = 'w' THEN true ELSE false END is_window,
|
||||
p.proretset is_set_returning
|
||||
FROM pg_catalog.pg_proc p
|
||||
INNER JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname IN ({{schema_names}})
|
||||
{% if is_set_returning %}
|
||||
AND p.proretset
|
||||
{% endif %}
|
||||
ORDER BY 1, 2
|
||||
{% endif %}
|
||||
WHERE p.prorettype::regtype != 'trigger'::regtype
|
||||
AND n.nspname IN ({{schema_names}})
|
||||
ORDER BY 1, 2
|
||||
|
||||
@@ -1,29 +1,43 @@
|
||||
{# SQL query for getting columns #}
|
||||
{% if object_name == 'table' %}
|
||||
SELECT
|
||||
att.attname column_name
|
||||
FROM pg_catalog.pg_attribute att
|
||||
INNER JOIN pg_catalog.pg_class cls
|
||||
ON att.attrelid = cls.oid
|
||||
INNER JOIN pg_catalog.pg_namespace nsp
|
||||
ON cls.relnamespace = nsp.oid
|
||||
WHERE cls.relkind = ANY(array['r'])
|
||||
SELECT nsp.nspname schema_name,
|
||||
cls.relname table_name,
|
||||
att.attname column_name,
|
||||
att.atttypid::regtype::text type_name,
|
||||
att.atthasdef AS has_default,
|
||||
def.adsrc as default
|
||||
FROM pg_catalog.pg_attribute att
|
||||
INNER JOIN pg_catalog.pg_class cls
|
||||
ON att.attrelid = cls.oid
|
||||
INNER JOIN pg_catalog.pg_namespace nsp
|
||||
ON cls.relnamespace = nsp.oid
|
||||
LEFT OUTER JOIN pg_attrdef def
|
||||
ON def.adrelid = att.attrelid
|
||||
AND def.adnum = att.attnum
|
||||
WHERE nsp.nspname IN ({{schema_names}})
|
||||
AND cls.relkind = ANY(array['r'])
|
||||
AND NOT att.attisdropped
|
||||
AND att.attnum > 0
|
||||
AND (nsp.nspname = '{{schema_name}}' AND cls.relname = '{{rel_name}}')
|
||||
ORDER BY 1
|
||||
ORDER BY 1, 2, att.attnum
|
||||
{% endif %}
|
||||
{% if object_name == 'view' %}
|
||||
SELECT
|
||||
att.attname column_name
|
||||
FROM pg_catalog.pg_attribute att
|
||||
INNER JOIN pg_catalog.pg_class cls
|
||||
ON att.attrelid = cls.oid
|
||||
INNER JOIN pg_catalog.pg_namespace nsp
|
||||
ON cls.relnamespace = nsp.oid
|
||||
WHERE cls.relkind = ANY(array['v', 'm'])
|
||||
SELECT nsp.nspname schema_name,
|
||||
cls.relname table_name,
|
||||
att.attname column_name,
|
||||
att.atttypid::regtype::text type_name,
|
||||
att.atthasdef AS has_default,
|
||||
def.adsrc as default
|
||||
FROM pg_catalog.pg_attribute att
|
||||
INNER JOIN pg_catalog.pg_class cls
|
||||
ON att.attrelid = cls.oid
|
||||
INNER JOIN pg_catalog.pg_namespace nsp
|
||||
ON cls.relnamespace = nsp.oid
|
||||
LEFT OUTER JOIN pg_attrdef def
|
||||
ON def.adrelid = att.attrelid
|
||||
AND def.adnum = att.attnum
|
||||
WHERE nsp.nspname IN ({{schema_names}})
|
||||
AND cls.relkind = ANY(array['v', 'm'])
|
||||
AND NOT att.attisdropped
|
||||
AND att.attnum > 0
|
||||
AND (nsp.nspname = '{{schema_name}}' AND cls.relname = '{{rel_name}}')
|
||||
ORDER BY 1
|
||||
{% endif %}
|
||||
ORDER BY 1, 2, att.attnum
|
||||
{% endif %}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
{# SQL query for getting foreign keys #}
|
||||
SELECT s_p.nspname AS parentschema,
|
||||
t_p.relname AS parenttable,
|
||||
unnest((
|
||||
select
|
||||
array_agg(attname ORDER BY i)
|
||||
from
|
||||
(select unnest(confkey) as attnum, generate_subscripts(confkey, 1) as i) x
|
||||
JOIN pg_catalog.pg_attribute c USING(attnum)
|
||||
WHERE c.attrelid = fk.confrelid
|
||||
)) AS parentcolumn,
|
||||
s_c.nspname AS childschema,
|
||||
t_c.relname AS childtable,
|
||||
unnest((
|
||||
select
|
||||
array_agg(attname ORDER BY i)
|
||||
from
|
||||
(select unnest(conkey) as attnum, generate_subscripts(conkey, 1) as i) x
|
||||
JOIN pg_catalog.pg_attribute c USING(attnum)
|
||||
WHERE c.attrelid = fk.conrelid
|
||||
)) AS childcolumn
|
||||
FROM pg_catalog.pg_constraint fk
|
||||
JOIN pg_catalog.pg_class t_p ON t_p.oid = fk.confrelid
|
||||
JOIN pg_catalog.pg_namespace s_p ON s_p.oid = t_p.relnamespace
|
||||
JOIN pg_catalog.pg_class t_c ON t_c.oid = fk.conrelid
|
||||
JOIN pg_catalog.pg_namespace s_c ON s_c.oid = t_c.relnamespace
|
||||
WHERE fk.contype = 'f' AND s_p.nspname IN ({{schema_names}})
|
||||
@@ -1,30 +1,16 @@
|
||||
{# ============= Fetch the list of functions based on given schema_names ============= #}
|
||||
{% if func_name %}
|
||||
SELECT n.nspname schema_name,
|
||||
p.proname func_name,
|
||||
pg_catalog.pg_get_function_arguments(p.oid) arg_list,
|
||||
pg_catalog.pg_get_function_result(p.oid) return_type,
|
||||
p.proargnames arg_names,
|
||||
COALESCE(proallargtypes::regtype[], proargtypes::regtype[])::text[] arg_types,
|
||||
p.proargmodes arg_modes,
|
||||
prorettype::regtype::text return_type,
|
||||
p.proisagg is_aggregate,
|
||||
p.proiswindow is_window,
|
||||
p.proretset is_set_returning
|
||||
p.proretset is_set_returning,
|
||||
pg_get_expr(proargdefaults, 0) AS arg_defaults
|
||||
FROM pg_catalog.pg_proc p
|
||||
INNER JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname = '{{schema_name}}' AND p.proname = '{{func_name}}'
|
||||
AND p.proretset
|
||||
ORDER BY 1, 2
|
||||
{% else %}
|
||||
SELECT n.nspname schema_name,
|
||||
p.proname object_name,
|
||||
pg_catalog.pg_get_function_arguments(p.oid) arg_list,
|
||||
pg_catalog.pg_get_function_result(p.oid) return_type,
|
||||
p.proisagg is_aggregate,
|
||||
p.proiswindow is_window,
|
||||
p.proretset is_set_returning
|
||||
FROM pg_catalog.pg_proc p
|
||||
INNER JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
|
||||
WHERE n.nspname IN ({{schema_names}})
|
||||
{% if is_set_returning %}
|
||||
AND p.proretset
|
||||
{% endif %}
|
||||
ORDER BY 1, 2
|
||||
{% endif %}
|
||||
WHERE p.prorettype::regtype != 'trigger'::regtype
|
||||
AND n.nspname IN ({{schema_names}})
|
||||
ORDER BY 1, 2
|
||||
|
||||
Reference in New Issue
Block a user