NAME
Quiq::PostgreSql::Catalog - PostgreSQL Catalog-Operationen
BASE CLASS
METHODS
Klassenmethoden
correctFunctionDef() - Korrigiere Quelltext einer Funktionsdefinition
Synopsis
$newSql = $class->correctFunctionDef($sql);
Arguments
Returns
Umgeschriebenes CREATE FUNCTION Statement (String)
Description
PostgreSQL stellt die Funktion pg_get_functiondef(oid) zur Verfügung, die den Quelltext einer Datenbankfunktion liefert. Leider ist der Quelltext manchmal fehlerbehaftet, zumindest in der Version 8.3. Diese Methode korrigiert diese Fehler.
SQL-Statements
functionSelect() - Statement: Selektiere Funktionen
Synopsis
$stmt = $class->functionSelect;
Returns
SQL-Statement (String)
Description
Liefere ein SELECT-Statement, das Informationen über Funktionen abfragt. Folgende Information wird geliefert:
- fun_oid
-
PostgreSQL-Objekt-Id der Funktion.
- fun_owner
-
Name des Owners der Funktion.
- fun_schema
-
Name des Schemas, in dem sich die Funktion befindet.
- fun_name
-
Name der Funktion.
- fun_arguments
-
Argumentliste der Funktion als kommaseparierte Liste der Typ-Namen.
- fun_signature
-
Name plus Argumentliste der Funktion in der Form:
FUNCTION(TYPE,...)
- fun_source
-
Der vollständige Quelltext der Funktion. ACHTUNG: Der Quelltext kann (zumindest bei PostgreSQL 8.3) Fehler enthalten, siehe Methode correctFunctionDef(), die ggf. auf die Werte der Kolumne angewendet werden sollte.
Wird das Statement in eine WITH- oder FROM-Klausel Klausel eingebettet, können auch die Suchkriterien über obige Kolumnennamen formuliert werden:
$tab = $db->selectWith(
Quiq::PostgreSql::Catalog->functionSelect,
-select => 'fun_source',
-where, fun_name = 'rv_copy_to',
fun_arguments = 'text, text, text',
);
Details
Das gelieferte SELECT-Statement:
SELECT
fun.oid AS fun_oid
, usr.usename AS fun_owner
, nsp.nspname AS fun_schema
, fun.proname AS fun_name
, pg_get_function_identity_arguments(fun.oid) AS fun_arguments
, fun.proname || '(' ||
COALESCE(pg_get_function_identity_arguments(fun.oid), '')
|| ')' AS fun_signature
, pg_get_functiondef(fun.oid) AS fun_source
FROM
pg_proc AS fun
JOIN pg_namespace AS nsp
ON fun.pronamespace = nsp.oid
JOIN pg_user usr
ON fun.proowner = usr.usesysid
VERSION
1.177
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2020 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.