Ich arbeite daran PostgreSQL 8.2.15 (Greenplum-Datenbank 4.2.0 Build 1) (HAWQ 1.2.1.0 Build 10335).
Ich habe eine Funktion wie
geschrieben %Vor%Ich habe es getestet wie
%Vor%Es kann total funktionieren!
Hier ist das Problem, wenn ich die Funktion wie
rufe %Vor%Postgres sagte mir, du liegst falsch!
FEHLER: Relation "my_table1" existiert nicht (segXX sliceX xx.xx.xx: 40003 pid = 570406)
Also, hilf mir bitte.
Was ich versucht habe
Herausgegeben von 2015/04/19
Postgre - & gt; Postgres
Und ich habe es versucht wie
%Vor%Es ist OK.
Wenn diese Funktion wie
bearbeitet wird %Vor%Es kann auf jeden Fall funktionieren.
In Postgresql werden die Funktionen normalerweise im aktuellen Suchpfad der Sitzung ausgeführt. Das Problem besteht also möglicherweise darin, dass das Schema my_schema
nicht im aktuellen Suchpfad enthalten ist, wenn Sie die Funktion ausführen.
Sie können das Problem lösen, indem Sie die Deklaration Ihrer Funktion wie folgt ändern:
%Vor%(Ich bin nicht sicher, ob das in der Version 8 funktioniert)
Wenn die Klausel set search_path from current
in 8.2 nicht funktioniert, hier ein Beispiel, wie man den Suchpfad innerhalb der Funktion temporär einstellt.
Schließlich habe ich einen Weg gefunden, der nicht perfektioniert ist, aber funktionieren kann.
Da kann ich von Segment aus auf die Tabelle zugreifen. Wenn Sie diese Funktion also aus dem Segment als Unterabfrage verschieben, wird dieses Problem gelöst.
SQL-Skript gefällt unten:
%Vor%Trotzdem sind alle Vorschläge willkommen.
Tags und Links postgresql greenplum hawq