Hallo Miteinander,
ich arbeite mich gerade in die Erstellung eigener Funktionen in pgSQL ein, jetzt stehe ich vor einem Problem bei dem ich nicht weiß ob es sich um einen Bug oder ein Feature handelt:
Erstelle ich beispielsweise folgende Funktion:
CREATE OR REPLACE FUNCTION public.ocm_test() RETURNS integer AS '
BEGIN
CREATE TEMP TABLE t_points (id integer);
RETURN 1;
END;
' LANGUAGE "plpgsql" COST 100
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
und rufe sie anschließend via Komandozeile mit
select * from ocm_test();
auf, ist das Ergebnis erwartungsgemäß
ocm_test
1
selbes Ergebis erhalte ich, wenn ich die Funktion in phpPgAdmin aufrufe. Allerdings nur dann, wenn ich das Häckchen bei “Ergebnisse seitenweise anzeigen” nicht gesetzt habe.
Setze ich das Häcken, dann gibt es seltsamerweise diese Fehlermeldung:
SQL-Fehler:
ERROR: cannot execute CREATE TABLE in a read-only transaction
CONTEXT: SQL statement “CREATE TEMP TABLE t_points (id integer)”
PL/pgSQL function ocm_test() line 3 at SQL statementIn der Anweisung:
SELECT COUNT(*) AS total FROM (select * from ocm_test()) AS sub
Ist das Verhalten so normal?
Ubuntu 14.04
PostgreSQL 9.3.5
postgis-2.1
phpPgAdmin 5.1 (PHP 5.5.9-1ubuntu4.5)