Bugfix
Detail
#26970
Wrong DB configuration at replay after changing FastList table
With #25881 the format of the FAST_LIST table has been changed. The MODULE_TYPE column has been dropped.
However, in the migration, the schema configuration stored in the database was not adjusted. Since there is no automatic schema migration, the stored schema configuration is also not updated.
If a replay migration is now performed, the schema configuration from the database is used to dump the data. However, the existence of the MODULE_TYPE column is inferred from the stored configuration, so that the following error message occurs when the dump is created:
com.top_logic.basic.module.RestartException: Unable to restart 'com.top_logic.basic.XMLProperties$Module[impl:'com.top_logic.basic.XMLProperties']' at ... at com.top_logic.knowledge.service.migration.MigrationService.migrate(MigrationService.java:391) at com.top_logic.knowledge.service.migration.MigrationService.startUp(MigrationService.java:355) at com.top_logic.basic.module.ManagedClass.doStart(ManagedClass.java:121) at com.top_logic.basic.module.BasicRuntimeModule.startUpImplementation(BasicRuntimeModule.java:195) ... 89 more Caused by: com.top_logic.knowledge.service.KnowledgeBaseRuntimeException: java.sql.SQLException: Field "MODULE_TYPE" not found Column "MODULE_TYPE" not found; SQL statement: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC [42122-210]: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC at com.top_logic.knowledge.service.db2.ItemEventReader.readEvent(ItemEventReader.java:509) at com.top_logic.knowledge.service.db2.OrderedItemEventReader.nextChunk(OrderedItemEventReader.java:120) at com.top_logic.knowledge.service.db2.OrderedItemEventReader.init(OrderedItemEventReader.java:96) at com.top_logic.knowledge.service.db2.OrderedItemEventReader.<init>(OrderedItemEventReader.java:84) at com.top_logic.knowledge.service.db2.DBKnowledgeBase.internalGetReader(DBKnowledgeBase.java:4506) at com.top_logic.knowledge.service.db2.DBKnowledgeBase.getChangeSetReader(DBKnowledgeBase.java:4476) at com.top_logic.knowledge.service.db2.DBKnowledgeBase.getChangeSetReader(DBKnowledgeBase.java:4448) at com.top_logic.knowledge.service.db2.migration.KnowledgeBaseDumper.dumpChangeSets(KnowledgeBaseDumper.java:201) at com.top_logic.knowledge.service.db2.migration.KnowledgeBaseDumper.dump(KnowledgeBaseDumper.java:180) at com.top_logic.knowledge.service.db2.migration.KnowledgeBaseDumper.dump(KnowledgeBaseDumper.java:166) at com.top_logic.knowledge.service.migration.MigrationService.dumpKB(MigrationService.java:617) at com.top_logic.knowledge.service.migration.MigrationService.replayHistory(MigrationService.java:568) ... 94 more Caused by: java.sql.SQLException: Field "MODULE_TYPE" not found Column "MODULE_TYPE" not found; SQL statement: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC [42122-210]: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC at com.top_logic.basic.sql.SQLH.enhanceMessage(SQLH.java:592) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.enhanceMessage(PrepStmtBasedCompiledStatement.java:142) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.executeQuery(PrepStmtBasedCompiledStatement.java:55) at com.top_logic.knowledge.service.db2.MultipleItemQuery.query(MultipleItemQuery.java:112) at com.top_logic.knowledge.service.db2.ItemEventReader.findNextRowType(ItemEventReader.java:340) at com.top_logic.knowledge.service.db2.ItemEventReader.findNextRowAttributes(ItemEventReader.java:293) at com.top_logic.knowledge.service.db2.ItemEventReader.findNextEvent(ItemEventReader.java:560) at com.top_logic.knowledge.service.db2.ItemEventReader.readEvent(ItemEventReader.java:479) ... 105 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Field "MODULE_TYPE" not found Column "MODULE_TYPE" not found; SQL statement: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC [42122-210] at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) at org.h2.message.DbException.get(DbException.java:227) at org.h2.message.DbException.get(DbException.java:203) at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:248) at org.h2.expression.ExpressionColumn.optimizeOther(ExpressionColumn.java:230) at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:213) at org.h2.expression.Alias.optimize(Alias.java:52) at org.h2.command.query.Select.prepare(Select.java:1177) at org.h2.command.Parser.prepareCommand(Parser.java:557) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:615) at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:553) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:639) at com.top_logic.basic.sql.ConnectionProxy.prepareStatement(ConnectionProxy.java:202) at com.top_logic.basic.sql.ConnectionProxy.prepareStatement(ConnectionProxy.java:202) at com.top_logic.basic.db.sql.ConfiguredCompiledStatement.prepareStatement(ConfiguredCompiledStatement.java:62) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.tryExecuteQuery(PrepStmtBasedCompiledStatement.java:62) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.executeQuery(PrepStmtBasedCompiledStatement.java:53) ... 110 more
== Test No test