Das Attribut layoutKey der Typen TemplateLayouts und LayoutConfigurations hat kein explizites db_size und fällt damit auf den globalen String-Default von 150 Zeichen zurück (MOPrimitive.STRING).
Der Layout-Key ist der Pfad des Layouts innerhalb der Layout-Hierarchie und wächst daher mit der Verschachtelungstiefe. 150 Zeichen sind dafür zu knapp: bereits der längste Layout-Pfad in com.top_logic.demo hat 142 Zeichen
com.top_logic.demo/technical/components/dialogs/dialogForTestingDeclarationOfButtonsOnDialog/tabWithoutOwnMessageButton/innerLayout.layout.xml
In einer Applikation mit tieferer Layout-Struktur schlägt das Speichern eines Layouts entsprechend fehl:
Caused by: org.h2.jdbc.JdbcBatchUpdateException: Wert zu groß / lang für Feld "LAYOUT_KEY VARCHAR_IGNORECASE(150)": "'my-app/releases/releasedSnapshots/releases_JoiningSequences/z_Areas_0_/contex... (157)"
Value too long for column "LAYOUT_KEY VARCHAR_IGNORECASE(150)": "'my-app/releases/releasedSnapshots/releases_JoiningSequences/z_Areas_0_/contex... (157)"; SQL statement:
INSERT INTO "TEMPLATE_LAYOUTS" ("BRANCH","IDENTIFIER","REV_MAX","REV_MIN","REV_CREATE","PHYSICAL_RESOURCE","LAYOUT_KEY","TEMPLATE","ARGUMENTS","PERSON_ID") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-240]
at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1277)
at com.top_logic.basic.db.sql.AbstractStatementBatch.executeBatch(AbstractStatementBatch.java:46)
at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement$1.executeBatch(PrepStmtBasedCompiledStatement.java:129)
Die Spalte wird auf 300 Zeichen vergrößert. Betroffen sind beide Tabellen: TEMPLATE_LAYOUTS (TemplateLayoutMeta.xml) und LAYOUT_CONFIGURATIONS (LayoutMeta.xml) speichern dieselben Layout-Keys.
Die Obergrenze ergibt sich aus dem Unique-Index configKey über (layoutKey, person): MS SQL Server begrenzt Index-Keys auf 900 Byte, NVARCHAR(300) belegt davon 600 Byte. Deutlich mehr als 300 Zeichen ist damit nicht möglich, ohne den Index umzubauen.
Migration
Die Spalte LAYOUT_KEY wird in den Tabellen TEMPLATE_LAYOUTS und LAYOUT_CONFIGURATIONS von 150 auf 300 Zeichen vergrößert. Die Migration Ticket_29492_enlarge_layout_key des Moduls tl führt die Änderung automatisch durch; ein manueller Eingriff ist nicht erforderlich.