Select version() ersetzen

Hallo Forum,

wir haben eine Software die Probleme mit zweistelligen Postgres Versionsnummern hat.
Gibt es eine Möglichkeit den Rückgabewert von “select version()” zu ändern
Ich hatte probiert eine Funktion mit dem Namen anzulegen, das klappt auch ohne
Fehlermeldung aber die Ausgabe ändert sich nicht.

Als Notlösung habe ich jetzt binär in der Software das version() durch versino()
ersetzt und versino als Funktion angelegt.
Alternativ könnte man die Postgres patchen und selbst compilieren.
Das ist aber beides unschön.

Danke für jede Idee.

Eigentlich würde ich dazu raten, den Bug in der Software zu fixen.

Wenn Du eine neue Funktion mit demselben Namen anlegst, wird dennoch zuerst in den internen Schemen gesucht. Wenn Du in der Software den Funktionsnamen ändern kannst, kannst Du sicherlich auch das Schema angeben, wo diese Funktion definiert ist.

edb=*# create or replace function version() returns text as $$begin return 'Hellor world'; end;$$ language plpgsql;
CREATE FUNCTION
edb=*# select version();
                                                                               version                                                                               
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 13.3 (EnterpriseDB Advanced Server 13.3.7 (Ubuntu 13.3.7-1+ubuntu4)) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit
(1 row)

edb=*# select public.version();
   version    
--------------
 Hellor world
(1 row)

edb=*# 

public.version() ist länger als version(), das kann ich nicht direkt in einem binary patchen.

wie alt ist denn die Software, PG10 ist schon vor 4 Jahren erschienen … da sollte ja mal ein Bugfix kommen …

Nein, die wird nicht mehr gepflegt. Das macht aber nichts, dann sie wird nur intern verwendet (keine Verbindung zum Internet).