zu lange Sequences

Hallo.

Nach der Migration einer mySQL Datenbank habe ich folgendes Problem.

Bei zu langen Tabellennamen oder Spaltennamen wird beim Erstellen der Sequence der Sequencename auf 31 Zeichen gekürzt. Bis jetzt habe ich mir den Sequencenamen (innerhalb meines Programms) immer so zusammengebaut:

[schemaname][tabellenname][spaltenname]_seq


Wird der Sequencename gekürzt klappt das natürlich nicht mehr.
Nach ein wenig Sucherei bin eigentlich auf die Lösung meines Problems gestoßen. Die PostgreSQL Function pg_get_serial_sequence() gibt gibt den Namen einer Sequence zurück. Allerdings wurde bei der Migration der mySQL Datenbank mit DDLUtils von apache, bei den Primary Keys kein Datentyp serial vergeben, sondern der Datentyp, der dem von mySQL in PostgreSQL entspricht.

Die bei der Migration erstellte Sequence wird so angesprochen:

nextval([schemaname][tabellenname][spaltenname]_seq’’::regclass)


Vielleicht weiß jemand wie ich trotzdem irgendwie den Sequencenamen einer Spalte herausfinden oder berechnen kann.

lg
andi k.

Hi slartibartfass,

Versuch’s mal mit dieser Abfrage (Funktionsparameter sind entsprechend anzupassen und natürlich in einfache Anführungszeichen zu setzen):

SELECT * FROM pg_get_serial_sequence(table_name, column_name);

Ich würde mir im Sequence-Namen den Schema-Namen schenken, weil doppelt-gemoppelt und daher überflüssig, was du aber nach einer Testweisen Ausführung der obigen Abfrage sicherlich einsehen wirst :wink:

Info gibt’s in der Doku, Kapitel 9.22, Tabelle 9.47.

CU
Fröstel

Wieso wird der Name auf 31 Zeichen gekürzt? Seit Ewigkeiten sollten da schon 64 Zeichen hineinpassen grübel

Leider hat das Migrationstool von Apache die Sequencetabellennamen gekürzt.
‘Händisch’ konnte ich die Namen problemlos auf die gewünschte Länge bringen.

lg
andi k.

Zeit für einen Bugreport, würde ich sagen.