The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.