H2Databaseを追っかけていたりしたブログ

H2 database のリリースノートを読んだりとか。

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って感じがしますね。ソース、読んでみようかな、とか思いますよねえ。