Ich arbeite an PostgreSQL 8.2.15 (Greenplum Datenbank 4.2.0 Build 1) (HAWQ 1.2.1.0 Build 10335).Fehler: Beziehung existiert nicht, auf greenplum Datenbank
schrieb ich eine Funktion wie
create or replace function my_function (
...
select exists(select 1 from my_table1 where condition) into result;
ich es wie
getestetselect my_function(params);
Es kann völlig arbeiten! Hier
ist das Problem, wenn ich die Funktion wie
select my_function(params) from my_table2;
Postgres rufen Sie mich an, sagte, du bist falsch!
ERROR: relation "my_table1" does not exist (segXX sliceX xx.xx.xx:40003 pid=570406)
- Diese Tabellen und Funktion sind in demselben Schema.
- Ich kann auf sie zugreifen.
- Beide Namen sind Kleinbuchstaben.
Also, hilf mir bitte.
Was habe ich versucht,
- bewegen diese Tabellen von my_schema zu öffentlichen
- Move-Funktion für die öffentliche
- Schema Präfix wie my_schema.my_table1 hinzufügen.
von 2015.04.19 Herausgegeben
Postgre -> Postgres
Und ich versuchte es wie
select my_function(params) from pg_stat_activity;
Es ist OK.
Wenn bearbeiten, die wie funktionieren
create or replace function my_function (
...
select true into result;
Es befindet sich auf jeden Fall arbeiten kann.
Wenn Sie eine Antwort auf diese benötigen, können Sie es, indem Sie die komplette Funktionsdefinition, die Tabellendefinition, das Schema für jedes Objekt entlang helfen könnte und was Sie bekommen ' SHOW Suchpfad anzeigen. Außerdem: Haben Sie alle Tests in derselben Sitzung mit denselben Einstellungen ausgeführt? BTW, ["Postgre" ist kein akzeptierter Name für Postgres] (https://wiki.postgresql.org/wiki/Identity_Guidelines). –
@Cixy: Ich weiß nicht, ob das der Fall ist, aber erstellen Sie "my_table1" als temporäre Tabelle? AFAIK, Postgres 8.2 hat einen Fehler, der auftritt, wenn Sie versuchen, eine temporäre Tabelle auszuwählen, die von einer Funktion erstellt und von einer anderen ausgewählt wurde. Die Problemumgehung besteht darin, die temporäre Tabelle mit der Anweisung "execute" auszuwählen. Überprüfen Sie dies: http://StackOverflow.com/Questions/19353438/Postgres-doesnt-recognise-Temp-Table-in-Function – Christian
@Christian B. Almeida. Nein, keine temporäre Tabelle. Nur normal – Clxy