Array aclitem[] als String

Hallo Leute,

Ich bräuchte die Benutzer Rechte auf eine View.
Dazu habe ich mir folgendes Select Statement geschrieben:

SELECT relacl
FROM pg_class a
    ,pg_namespace b
WHERE a.relkind = 'v'
  AND a.relname = 'v_testview'
  AND a.relnamespace = b.oid
  AND b.nspname = 'test_schema';

Das relacl ist aus pg_class und ist vom Type aclitem[]. Also ein Array, wenn ich das richtig verstehe.

Wenn ich diese Abfrage im pgAdmin laufen lassen, bekomme ich ein Ergebnis in Form von:
“{nutzer=arwdxt/nutzer,internet=r/nutzer,nutzer2=r/nutzer}”

Wenn ich aber nun die selbe Abfrage in meiner Anwendung (Java) laufen lasse, bekomme ich:
ERROR: could not identify an ordering operator for type aclitem[]

Kann man das aclitem[] Array in einen String carsten, damit ich das selbe Ergebnis bekomme wie vom pgAdmin?
Gibt es noch eine Möglichkeit an die Rechte heranzukommen, außer mit der select Abfrage die ich geschrieben habe?

Eine Einschränkung habe ich noch. Ich darf keine Funktionen verwenden, da diese Abfrage auf eine Kundendatenbank losgelassen wird und dort die Funktion nicht vorhanden ist.

Gruß shinchan :astonished:

Du willst aus einem array ein string machen. Array zu string, array_to_string(). Einfach, oder?
Parameter siehe Doku.

Eine Einschränkung habe ich noch. Ich darf keine Funktionen verwenden, da diese Abfrage auf eine Kundendatenbank losgelassen wird und dort die Funktion nicht vorhanden ist.

Gruß shinchan > :astonished: >

Das ist eine Funktion, die PG von Haus aus hat. Ich beweifle, daß die Funktion bei Deiner Kundendatenbank nicht vorhanden ist.

Andreas

Hallo Andreas,

danke erstmal für die schnelle Antwort.
Die PG Funktionen darf ich natürlich benutzen, da hat man mich wohl etwas falsch verstanden :slight_smile:

Ok. Habe das jetzt getestet

Abfrage:

SELECT array_to_string(ARRAY[relacl], ',')
FROM pg_class a
    ,pg_namespace b
where a.relkind = 'v'
  and a.relname = 'v_testview'
  and a.relnamespace = b.oid
  and b.nspname = 'test_schema'

Das Ergebnis im pgAdmin:
nutzer=arwdxt/nutzer,internet=r/nutzer,nutze r2=r/nutzer

Das sieht schon mal besser aus :slight_smile: … die geschweiften Klammern sind weg.

Selbe Abfrage in meinem Programm:
java.sql.SQLException: ERROR: could not identify an ordering operator for type aclitem[]

grml :frowning:

Noch Ideen?

Gruß
shinchan

Omg, ich habe meinen Fehler gefunden.

Mit array_to_string funktioniert es wunderbar.

Ich hatte noch einen anderen Fehler im Programm, der diese Fehlermeldung brachte.

Sry für den Stress, danke :slight_smile:

Gruß shinchan