Menu

#1510 Exception after altering a varchar to clob

version 2.4.x
open-postponed
None
5
2021-01-02
2018-04-10
Steve Green
No

e.g.

alter table MATCH_QUEUE_RULE alter column DIVISIONS_JSON CLOB;

The alter table command seems to execute properly, however on the next launch of the application, I see this stack trace. Any suggestestions would be greatly appreciated.

org.hsqldb.HsqlException: The table data is read only
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.persist.LobManager.setChars(Unknown Source)
at org.hsqldb.Session.performLOBOperation(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
at org.hsqldb.types.ClobDataID.setString(Unknown Source)
at org.hsqldb.types.CharacterType.castOrConvertToType(Unknown Source)
at org.hsqldb.types.CharacterType.convertToType(Unknown Source)
at org.hsqldb.TableWorks.checkConvertColDataType(Unknown Source)
at org.hsqldb.TableWorks.retypeColumn(Unknown Source)
at org.hsqldb.StatementSchema.getResult(Unknown Source)
at org.hsqldb.StatementSchema.execute(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source)
at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source)
at org.hsqldb.persist.Log.processLog(Unknown Source)
at org.hsqldb.persist.Log.open(Unknown Source)
at org.hsqldb.persist.Logger.open(Unknown Source)
at org.hsqldb.Database.reopen(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.server.Server.openDatabases(Unknown Source)
at org.hsqldb.server.Server.run(Unknown Source)
at org.hsqldb.server.Server.access$000(Unknown Source)
at org.hsqldb.server.Server$ServerThread.run(Unknown Source)

Discussion

  • Fred Toussi

    Fred Toussi - 2018-04-10

    A CHECKPOINT or SHUTDOWN after converting would have avoided this.

    It seems you should be able to edit the .log file and delete the "alter table ... " statement. Once restarted, execute the statement followed by CHECKPOINT.

     
  • Steve Green

    Steve Green - 2018-04-11

    Thanks Fred.

    What is the recommended use case for executing "shutdown"? I had been using server.shutdown(), but it seems that that is not enough?

    Thanks again!

     
  • Fred Toussi

    Fred Toussi - 2018-04-11

    Execute the SQL statement "SHUTDOWN"

     
  • Fred Toussi

    Fred Toussi - 2019-06-04
    • Group: current-release --> version 2.4.x
     
  • Fred Toussi

    Fred Toussi - 2021-01-02
    • status: open --> open-postponed
    • assigned_to: Fred Toussi
     

Log in to post a comment.