Hi, OK I see, so you are running SQL statements while initializing the trigger. It sounds like we need to initialize the LOB storage before creating the triggers then... Patches are welcome!
Regards, Thomas On Wednesday, May 6, 2015, Vitali <vita...@gmail.com> wrote: > > > Hi, Thomas. > > I think it's not a LOB-storage related problem. The problem as I specified > in e-mail is that triggers during initialization are trying to read some > CLOB data but LobStorageBackend is not yet initialized with a > connection. Look to classes from stacktrace. It is because triggers are > initialized earlier than LOB storage is initialized in Database class. > > > > Vitali. > > On Wednesday, May 6, 2015 at 9:21:48 AM UTC+3, Thomas Mueller wrote: >> >> Hi, >> >> There were some changes in this area, and an important bugfix in version >> 1.4.187. If the LOB data was already removed before that, then I'm afraid >> the data can not be restored easily. See also the change log for details. >> >> Regards, >> Thomas >> >> >> On Sunday, May 3, 2015, Vitali <vit...@gmail.com> wrote: >> >>> Hi. >>> >>> >>> H2 containts triggers that at initialization time are trying to read >>> from some table from LOB column. >>> >>> Because it occurs in org.h2.engine.Database.open(Database.java:735): >>> >>> org.h2.jdbc.JdbcSQLException: General error: >>> "java.lang.NullPointerException"; SQL statement: >>> select * from SMGIS.SYM_ON_U_FOR_TRG_TSS_HNK_FLD_CONFIG [50000-187] >>> at >>> org.h2.message.DbException.getJdbcSQLException(DbException.java:345) >>> at org.h2.message.DbException.get(DbException.java:168) >>> at org.h2.message.DbException.convert(DbException.java:295) >>> at org.h2.command.Command.executeQuery(Command.java:209) >>> at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:79) >>> at >>> org.jumpmind.symmetric.db.AbstractEmbeddedTrigger.getTemplates(AbstractEmbeddedTrigger.java:265) >>> at >>> org.jumpmind.symmetric.db.AbstractEmbeddedTrigger.init(AbstractEmbeddedTrigger.java:78) >>> at org.jumpmind.symmetric.db.h2.H2Trigger.init(H2Trigger.java:51) >>> at org.h2.schema.TriggerObject.load(TriggerObject.java:81) >>> at >>> org.h2.schema.TriggerObject.setTriggerAction(TriggerObject.java:136) >>> at >>> org.h2.schema.TriggerObject.setTriggerClassName(TriggerObject.java:118) >>> at org.h2.command.ddl.CreateTrigger.update(CreateTrigger.java:115) >>> at org.h2.engine.MetaRecord.execute(MetaRecord.java:58) >>> at org.h2.engine.Database.open(Database.java:735) >>> at org.h2.engine.Database.openDatabase(Database.java:266) >>> at org.h2.engine.Database.<init>(Database.java:260) >>> at org.h2.engine.Engine.openSession(Engine.java:60) >>> at org.h2.engine.Engine.openSession(Engine.java:167) >>> at org.h2.engine.Engine.createSessionAndValidate(Engine.java:145) >>> at org.h2.engine.Engine.createSession(Engine.java:128) >>> at org.h2.engine.Engine.createSession(Engine.java:26) >>> at >>> org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:347) >>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:108) >>> at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:92) >>> at org.h2.Driver.connect(Driver.java:72) >>> at java.sql.DriverManager.getConnection(DriverManager.java:571) >>> at java.sql.DriverManager.getConnection(DriverManager.java:215) >>> >>> We get NPE as: >>> >>> Caused by: java.lang.NullPointerException >>> at org.h2.store.LobStorageBackend.copyLob(LobStorageBackend.java:453) >>> at org.h2.value.ValueLobDb.copyToResult(ValueLobDb.java:495) >>> at org.h2.value.ValueLobDb.copyToResult(ValueLobDb.java:38) >>> at org.h2.result.LocalResult.cloneLobs(LocalResult.java:265) >>> at org.h2.result.LocalResult.addRow(LocalResult.java:281) >>> at org.h2.command.dml.Select.queryFlat(Select.java:585) >>> at org.h2.command.dml.Select.queryWithoutCache(Select.java:685) >>> at org.h2.command.dml.Query.query(Query.java:322) >>> at org.h2.command.dml.Query.query(Query.java:290) >>> at org.h2.command.dml.Query.query(Query.java:36) >>> at org.h2.command.CommandContainer.query(CommandContainer.java:90) >>> at org.h2.command.Command.executeQuery(Command.java:197) >>> >>> because getLobStorage().init(); line is a bit later in >>> Database class. >>> >>> >>> Seems there was no problem in 1.4.181 that we have been using. Were >>> there any changes in initialization logic of Database? Is loading from >>> third-party tables in trigger a legal approach now? >>> >>> Vitali. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "H2 Database" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to h2-database+unsubscr...@googlegroups.com. >>> To post to this group, send email to h2-database@googlegroups.com. >>> Visit this group at http://groups.google.com/group/h2-database. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "H2 Database" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to h2-database+unsubscr...@googlegroups.com > <javascript:_e(%7B%7D,'cvml','h2-database%2bunsubscr...@googlegroups.com');> > . > To post to this group, send email to h2-database@googlegroups.com > <javascript:_e(%7B%7D,'cvml','h2-database@googlegroups.com');>. > Visit this group at http://groups.google.com/group/h2-database. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to h2-database+unsubscr...@googlegroups.com. To post to this group, send email to h2-database@googlegroups.com. Visit this group at http://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/d/optout.