PostgreSQL stellt den Befehl \ dv zur Verfügung, um alle Ansichten aufzulisten. Gibt es eine ähnliche Möglichkeit, alle benutzerdefinierten Funktionen aufzulisten oder nur die Funktionen, die von einem bestimmten Benutzer definiert wurden? \ sf erfordert, dass Sie den Namen einer Funktion kennen und die Definition einer Funktion angeben. \ df listet alle Funktionen auf (und es gibt viele). Ich möchte einen Weg, um nur eine Liste der Funktionen zu zeigen, die ich definiert habe.Sie können alle benutzerdefinierten PostgreSQL-Funktionen auflisten?
1
A
Antwort
1
Der beste Weg, um eine solche Abfrage zu finden, ist psql
mit der --echo-hidden
Option zu verwenden. Führen Sie dann den Meta-Befehl psql
aus, und Sie werden die Abfrage sehen, die verwendet wird.
Für \df
dies:
SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types",
CASE
WHEN p.proisagg THEN 'agg'
WHEN p.proiswindow THEN 'window'
WHEN p.prorettype = 'pg_catalog.trigger'::pg_catalog.regtype THEN 'trigger'
ELSE 'normal'
END as "Type"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname <> 'pg_catalog'
AND n.nspname <> 'information_schema'
ORDER BY 1, 2, 4;
Sie das einstellen könnte zum Beispiel durch die sich wandelnde where-Klausel:
AND n.nspname = 'public'
die zu \df public.*
entspricht
Wenn Sie überprüfen the documentation of pg_proc
werden Sie feststellen, dass es eine proowner
Spalte, so dass Sie auch laufen konnte:
SELECT n.nspname as "Schema",
p.proname as "Name",
pg_catalog.pg_get_function_result(p.oid) as "Result data type",
pg_catalog.pg_get_function_arguments(p.oid) as "Argument data types"
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_roles u ON u.oid = p.proowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE pg_catalog.pg_function_is_visible(p.oid)
AND n.nspname = 'public'
AND u.rolname = current_user --<< this limits the functions to those that the current user owns.
0
Ich bin nicht sicher, ob dieser Befehl vollständig korrekt ist, aber es scheint mir alle Funktionen zu zeigen, die einer bestimmten Rolle gehören:
SELECT routine_name, grantee FROM information_schema.routine_privileges WHERE grantee = '<role>';
In jedem Fall gibt es mir die Ergebnisse, die ich erwarten würde zu sehen.
Verwandte Themen
- 1. Wie können Sie alle in IPFS geladenen Dateiobjekte auflisten?
- 2. Alle Fotoalben in iOS auflisten
- 3. Alle geöffneten Dateien auflisten
- 4. Alle Mocha-Tests auflisten, ohne sie auszuführen
- 5. Alle Sitzungsinformationen auflisten
- 6. Alle SVN-Repositorys auflisten
- 7. Wie können Sie die Übereinstimmungen von Vims Suche auflisten?
- 8. Auflisten aller in AppDomain gespeicherten benutzerdefinierten Daten
- 9. Wie können Sie Threads im selben Prozess auflisten?
- 10. Alle svn: externals rekursiv auflisten?
- 11. Alle Leistungsindikatoren für eine Kategorie auflisten
- 12. Erhalten Sie alle benutzerdefinierten Fenstereigenschaften?
- 13. NetworkInterface.getNetworkInterfaces() nicht alle Schnittstellen auflisten
- 14. Git: alle verfolgten Dateien auflisten
- 15. Alle Unterpakete eines Pakets auflisten
- 16. Alle Probleme im Repository auflisten
- 17. Alle Netzwerke in Android auflisten?
- 18. Alle Ordner im Verzeichnis auflisten
- 19. SVN: Alle eingecheckten Dateien auflisten
- 20. Alle Berechtigungen eines Benutzers auflisten
- 21. Alle Arrays in PHP auflisten
- 22. Sie können alle globalen (Fenster-) Variablen auflisten, die vom Benutzer hinzugefügt wurden?
- 23. Sie können alle Apps im Google Play Store im Format "Parsable" auflisten?
- 24. Auflisten von benutzerdefinierten Elementbindungen in Polymer
- 25. So können Sie einzelne Teile eines Datumseintrags auflisten
- 26. Wie können Sie remote exportierte NFSv4-Volumes auflisten?
- 27. Alle Prototypeigenschaften eines Javascript-Objekts auflisten
- 28. Alle Google Map Marker Bilder auflisten
- 29. Joomla 3.5 - Ändern Sie den Menüeintrag "Alle Kategorien auflisten"
- 30. Wie Sie alle JNDI-Einträge im Namensraum "java: global" auflisten