TRACE_LEVEL_SYSTEM_OUTが面白い
トレースのレベルをかえるだけの設定ですが、思いのほか面白いです。
set TRACE_LEVEL_SYSTEM_OUT 3
こんな味も素っ気もない、エラーメッセージの裏で、
sql> select * from hoge; Error: org.h2.jdbc.JdbcSQLException: テーブル "HOGE" が見つかりません Table "HOGE" not found; SQL statement: select * from hoge [42102-132]
こんなスタックトレースが。
sql> select * from hoge; 04-08 02:23:46 jdbc[2]: /**/stat0.execute("select * from hoge"); 04-08 02:23:46 jdbc[2]: SQLException org.h2.jdbc.JdbcSQLException: テーブル "HOGE" が見つかりません Table "HOGE" not found; SQL statement: select * from hoge [42102-132] at org.h2.message.DbException.getJdbcSQLException(DbException.java:316) at org.h2.message.DbException.get(DbException.java:167) at org.h2.message.DbException.get(DbException.java:144) at org.h2.command.Parser.readTableOrView(Parser.java:4347) at org.h2.command.Parser.readTableFilter(Parser.java:1001) at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:1529) at org.h2.command.Parser.parseSelectSimple(Parser.java:1626) at org.h2.command.Parser.parseSelectSub(Parser.java:1523) at org.h2.command.Parser.parseSelectUnion(Parser.java:1368) at org.h2.command.Parser.parseSelect(Parser.java:1356) at org.h2.command.Parser.parsePrepared(Parser.java:395) at org.h2.command.Parser.parse(Parser.java:278) at org.h2.command.Parser.parse(Parser.java:250) at org.h2.command.Parser.prepareCommand(Parser.java:222) at org.h2.engine.Session.prepareLocal(Session.java:420) at org.h2.engine.Session.prepareCommand(Session.java:381) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1070) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:163) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:151) at org.h2.tools.Shell.execute(Shell.java:454) at org.h2.tools.Shell.promptLoop(Shell.java:292) at org.h2.tools.Shell.runTool(Shell.java:136) at org.h2.tools.Shell.main(Shell.java:74) Error: org.h2.jdbc.JdbcSQLException: テーブル "HOGE" が見つかりません Table "HOGE" not found; SQL statement: select * from hoge [42102-132]
Pure Javaって感じがしますね。ソース、読んでみようかな、とか思いますよねえ。