NAME

Quiq::PostgreSql::Catalog - PostgreSQL Catalog-Operationen

BASE CLASS

Quiq::Object

METHODS

Klassenmethoden

correctFunctionDef() - Korrigiere Quelltext einer Funktionsdefinition

Synopsis

$newSql = $class->correctFunctionDef($sql);

Arguments

$sql

CREATE FUNCTION Statement, das von pg_get_functiondef(oid) geliefert wurde.

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.