Encontrei a resposta para minha própria pergunta finalmente depois de cavar o código-fonte do hsqldb no sourceforge.
A versão 2.3.3 do HSQLDB NÃO suporta NOWAIT.
Eu fiz essa pergunta em seu fórum de discussão e levantei o problema, mas não é como o GitHub, onde você pode criar um problema para que nenhum problema/solicitação formal seja aberto.
Estou me dando bem com um hack ruim por agora modificar o
HSQLDB
codifique eu mesmo org.hsqldb.ParserDQL
class para simplesmente ignorar o NOWAIT no SQL de seleção para atualização. Se alguém tiver uma resposta melhor, aceitarei a resposta.
ATUALIZAÇÃO:(24 de agosto de 2015)
Recebida a confirmação do fórum HSQLDB de que NOWAIT será ignorado. Enquanto isso estou postando o trecho de código para ignorar NOWAIT que recebi do fórum do HSQLDB sourceforge. Você pode querer esperar pela próxima versão do HSQLDB do que adicionar isso à sua base de código (como um hack).
if (Tokens.T_NOWAIT.equals(token.tokenString)) {
read();
}
ATUALIZADO para mostrar o contexto completo de onde adicionar o snippet acima no ParserDQL.java
/**
* Retrieves a SELECT or other query expression Statement from this parse context.
*/
StatementQuery compileCursorSpecification(RangeGroup[] rangeGroups,
int props, boolean isRoutine) {
OrderedHashSet colNames = null;
QueryExpression queryExpression = XreadQueryExpression();
if (token.tokenType == Tokens.FOR) {
read();
if (token.tokenType == Tokens.READ
|| token.tokenType == Tokens.FETCH) {
read();
readThis(Tokens.ONLY);
props = ResultProperties.addUpdatable(props, false);
} else {
readThis(Tokens.UPDATE);
props = ResultProperties.addUpdatable(props, true);
if (token.tokenType == Tokens.OF) {
readThis(Tokens.OF);
colNames = new OrderedHashSet();
readColumnNameList(colNames, null, false);
}
if (Tokens.T_NOWAIT.equalsIgnoreCase(token.tokenString)) {
readIfThis(Tokens.X_IDENTIFIER);
}
}
}