Skip to content

Commit ef7d562

Browse files
committed
show function definnition
1 parent 0df1b0a commit ef7d562

File tree

2 files changed

+11
-20
lines changed

2 files changed

+11
-20
lines changed

dbcommands.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -628,13 +628,13 @@ ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text
628628
-- name: show_function_definition
629629
-- docs: ("\\sf", "\\sf[+] FUNCNAME", "Show a function's definition.")
630630
SELECT
631-
pg_catalog.pg_get_functiondef(
632-
SELECT
633-
coalesce(
634-
get_coordinates::pg_catalog.regprocedure::pg_catalog.oid,
635-
get_coordinates::pg_catalog.regproc::pg_catalog.oid)
636-
) AS source
637-
631+
pg_catalog.pg_get_functiondef(
632+
CASE
633+
WHEN :pattern LIKE :bracket_wildcard
634+
THEN :pattern::pg_catalog.regprocedure::pg_catalog.oid
635+
ELSE :pattern::pg_catalog.regproc::pg_catalog.oid
636+
END
637+
) AS source
638638

639639
-- name: list_foreign_tables
640640
-- docs: ("\\dE", "\\dE[+] [pattern]", "List foreign tables.", aliases=())

pgspecial/dbcommands.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,19 +1607,10 @@ def rowcount(self):
16071607

16081608
@special_command("\\sf", "\\sf[+] FUNCNAME", "Show a function's definition.")
16091609
def show_function_definition(cur, pattern, verbose):
1610-
params = {"pattern": pattern}
1611-
if "(" in pattern:
1612-
sql = "SELECT %(pattern)s::pg_catalog.regprocedure::pg_catalog.oid"
1613-
else:
1614-
sql = "SELECT %(pattern)s::pg_catalog.regproc::pg_catalog.oid"
1615-
log.debug("%s, %s", sql, params)
1616-
cur.execute(sql, params)
1617-
(foid,) = cur.fetchone()
1618-
1619-
params = {"foid": foid}
1620-
sql = "SELECT pg_catalog.pg_get_functiondef(%(foid)s) as source"
1621-
log.debug("%s, %s", sql, params)
1622-
cur.execute(sql, params)
1610+
cur.execute(
1611+
queries.show_function_definition.sql,
1612+
{"pattern": pattern, "bracket_wildcard": "%(%"},
1613+
)
16231614
if cur.description:
16241615
headers = [x.name for x in cur.description]
16251616
if verbose:

0 commit comments

Comments
 (0)