[
https://issues.apache.org/jira/browse/DERBY-3157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12538545
]
Dag H. Wanvik commented on DERBY-3157:
--------------------------------------
This happens when the lexer pops out of one of the states LOOKFOR_DE*
MORE productions (because there is longer a chance of finding
--derby-properties) *and* there are no more characters forthcoming.
This is an error,
cf. https://javacc.dev.java.net/doc/tokenmanager.html:
"Whenever the end of file <EOF> is detected, it causes the creation
of an <EOF> token (regardless of the current state of the lexical
analyzer). However, if an <EOF> is detected in the middle of a
match for a regular expression, or immediately after a MORE regular
expression has been matched, an error is reported.
The last condition applies, so the SKIP production:
<IT_IS_NOT_DERBYPROPERTIES_COMMENT> SKIP :
{
<SINGLE_LINE_SQLCOMMENT: (~["\n","\r"])* ("\n"|"\r"|"\r\n")?> : DEFAULT
}
which is supposed to catch this doesn't apply unless there is at least
one more character. So, for example all of these will fail:
-- x
-- dx
-- derby-prox
-- derby-propx
whereas these will all work:
-- xx
-- dxx
-- derby-proxx
-- derby-propxx
The first 'x' is chewed when in a MORE state, so next is EOF.
> Lexical error (EOF) when comment consists of a single character
> ---------------------------------------------------------------
>
> Key: DERBY-3157
> URL: https://issues.apache.org/jira/browse/DERBY-3157
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.3.1.4, 10.4.0.0
> Reporter: Knut Anders Hatlen
> Priority: Minor
>
> The following statement fails with an SQLException. Adding whitespace or
> other characters at the end of the comment makes it pass. Adding more
> whitespace at the beginning of the comment doesn't help.
> PreparedStatement ps = c.prepareStatement("VALUES 1 -- x");
> Exception in thread "main" java.sql.SQLSyntaxErrorException: Lexical error at
> line 1, column 14. Encountered: <EOF> after : "".
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown
> Source)
> at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
> Source)
> at comment.main(comment.java:5)
> Caused by: java.sql.SQLException: Lexical error at line 1, column 14.
> Encountered: <EOF> after : "".
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
> Source)
> ... 14 more
> Caused by: ERROR 42X02: Lexical error at line 1, column 14. Encountered:
> <EOF> after : "".
> at org.apache.derby.iapi.error.StandardException.newException(Unknown
> Source)
> at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(Unknown
> Source)
> at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> at
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
> Source)
> ... 8 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.