domaframework/doma — pull request #48 by backpaper0 (2014-12-13 16:12:47+00:00)
Title: /*%expand と */ の間のスペースはaliasとみなさないようにしました

これまでは /%expand と */ の間にスペースがある場合にそのスペースを
aliasとみなしてExpandNodeを組み立てていましたが、それが原因で実行時に
AbstractSelectQuery#prepare()でNullPointerExceptionが発生していました。

例えば次のようなSQLが該当します。

SELECT /*%expand */*
FROM Hoge

このSQLを含むSQLファイルに対応したDaoのメソッドを実行すると
NullPointerExceptionが発生します。
次にスタックトレースを抜粋します。

java.lang.NullPointerException
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitExpandNode(NodePreparedSqlBuilder.java:582)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitExpandNode(NodePreparedSqlBuilder.java:82)
at org.seasar.doma.internal.jdbc.sql.node.ExpandNode.accept(ExpandNode.java:63)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitSelectClauseNode(NodePreparedSqlBuilder.java:438)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitSelectClauseNode(NodePreparedSqlBuilder.java:82)
at org.seasar.doma.internal.jdbc.sql.node.SelectClauseNode.accept(SelectClauseNode.java:40)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitSelectStatementNode(NodePreparedSqlBuilder.java:428)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitSelectStatementNode(NodePreparedSqlBuilder.java:82)
at org.seasar.doma.internal.jdbc.sql.node.SelectStatementNode.accept(SelectStatementNode.java:124)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitAnonymousNode(NodePreparedSqlBuilder.java:146)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.visitAnonymousNode(NodePreparedSqlBuilder.java:82)
at org.seasar.doma.internal.jdbc.sql.node.AnonymousNode.accept(AnonymousNode.java:35)
at org.seasar.doma.internal.jdbc.sql.NodePreparedSqlBuilder.build(NodePreparedSqlBuilder.java:137)
at org.seasar.doma.jdbc.query.SqlFileSelectQuery.lambda$prepareSql$13(SqlFileSelectQuery.java:51)
at org.seasar.doma.jdbc.query.SqlFileSelectQuery$$Lambda$6/1027007693.apply(Unknown Source)
at org.seasar.doma.jdbc.query.AbstractSelectQuery.buildSql(AbstractSelectQuery.java:113)
at org.seasar.doma.jdbc.query.SqlFileSelectQuery.prepareSql(SqlFileSelectQuery.java:47)
at org.seasar.doma.jdbc.query.AbstractSelectQuery.prepare(AbstractSelectQuery.java:90)
at org.seasar.doma.jdbc.query.SqlFileSelectQuery.prepare(SqlFileSelectQuery.java:39)

この問題を解決するため /*%expand と */ の間にスペースのみがある場合は
aliasとみなさないように修正しました。