"session-variablen" setzen

Hallo,

ist es möglich, so eine Art Session-Variablen zu setzen die nur fuer die connection gelten?
Ich möchte diese Session-Variablen gern in Server-Funktionen nutzen können.
Ich verwende Version 9.

Falls das nicht geht - eine alternative Lösung wäre die Verwendung einer Temp-Table.

Gruß.

Du kannst eigene “config variablen” setzen:
PostgreSQL: Documentation: Manuals: PostgreSQL 9: Customized Options

Wenn die Variablen mal definiert sind, kannst Du sie auch pro session verändern.
Allerdings hast Du immer nur einen festen Satz von Variablen mit der Methode, weiß nicht ob das für Dich ausreichend ist.

Danke,

hmm lt. doku muss ich dafuer eine “Klasse” in der postgresql.conf definieren. Das machts etwas unkomfortabel - ich dachte an irgendetwas, das so funktioniert wie eine “Umgebungsvariable” die ich nach dem Erzeugen der Session einfach setze/exportiere und dann nutzen kann. Und wenn sie nicht existiert bzw. definiert wurde, dann darf bei der Verwendung in eine Fkt. ruhig eine Exception auftreten.

Schade - dabei ist ja bald Weihnachten :slight_smile:

Gruß

Nachtrag:
Worum es geht: Ich will in einem Containermanaged Persistence-Context (Hibernate) gern ohne großes Trara dem Server Infromationen ueber den aktuellen Client/User der Transaktion verfügbar machen. Und ich will vermeiden, dafuer die SessionFactory umzustricken - weil das Conn.-Pooling dann sehr wahrscheinlich nicht mehr richtig funktionieren kann - also der DB-User bleibt immer der Gleiche. Daher dachte ich - wenn eine Transaktion gestartet wird, dann sage ich der connection / tx “wer ich bin” … und die funktionen auf dem Server wissen bescheid.

Genau das macht doch so ein custom config Eintrag.
Nur, dass Du die Variable eben nicht “on-the-fly” definieren kannst.


Und ich will vermeiden, dafuer die SessionFactory umzustricken - weil das Conn.-Pooling dann sehr wahrscheinlich nicht mehr richtig funktionieren kann - also der DB-User bleibt immer der Gleiche. Daher dachte ich - wenn eine Transaktion gestartet wird, dann sage ich der connection / tx “wer ich bin” … und die funktionen auf dem Server wissen bescheid.

Das Problem kenne ich.
Aber den Eintrag in der postgresql.conf musst Du doch nur einmal machen, ist halt Teil der Installation. Danach musst Du Dich nicht mehr drum kümmern…

Hallo,

ich sag ja nicht, dass die Lösung schlecht ist - wie du es sagst, muss man das halt einmal machen - und das ist in dem Projekt gerade nicht kritisch. Ich hab nur wiederholt, was ich verstanden habe in der Doku. Konnt ja sein, dass du sagst "nö das geht einfach so :wink: "

Danke Dir,

Bis dann

mal an application_name gedacht ?
PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: Database Connection Control Functions
PostgreSQL: Documentation: Manuals: PostgreSQL 9.0: Error Reporting and Logging

Kannst du nach session-beginn mit

Set application_name ='kartoffel'

setzen und mit

show application_name

wieder auslesen.
Ist zwar nicht schön…

grüsse hkocam

Mit “application_name” möchtest du nicht rumspielen!

Das beeinflusst die Logmeldungen, einige Internas ect.

Diese Einstellung also nicht als temporären Zwischenspeicher verwenden. Wie kommt man denn auf so eine Idee?

Huch?
Was für Internas?
Es steht doch jeder Anwendung frei, in die Variable reinzuschreiben was sie will…

(was nicht heissen soll, dass ich die Idee gut finde, dass für andere Zwecke zu missbrauchen)

fyi,

ich löse es mittels der “Customized Options” - man muss ja quasi nur den “namespace” festlegen, und darf dann Wilde Sau spielen (muss man aber nicht).

Gruß

Na zum Beispiel taucht das auch unter diesem Namen in der Liste der aktiven Anfragen auf.
Ich weiß nicht, was davon noch alles betroffen ist.

Hi,

Naja symbiont ist doch eher ein Freund “kreativer” Herangehensweisen.
Ihr habt ja Recht, für den Anwendungsfall ist es ein übler Hack :slight_smile:

Wenn ich die Diskussion auf der Hacker-ML von damals Recht im Sinne habe, ging es um Log-Filterung bzw. Applikationsmonitoring und ConnectionPooler.
Aber gefährlich ist es nicht, man sollte halt keine Passwörter reinsetzen.
Oder Shell-Befehle ?

Freundliche Grüße
hkocam

Da habe ich mich sooo lange versteckt :wink:

nicht lange genug…

Andreas

Ich wußte, dass Du mich vermissen wirst :wink:

Gruß