Eindelijk antwoord gevonden op mijn eigen vraag na het graven van hsqldb-broncode op sourceforge.
Versie 2.3.3 van HSQLDB ondersteunt NOWAIT NIET.
Ik heb deze vraag gesteld in hun discussieforum en het probleem aan de orde gesteld, maar het is niet zoals GitHub waar je een probleem kunt maken, dus er wordt geen formeel probleem/verzoek geopend.
Ik kan opschieten met een slechte hack voor het wijzigen van HSQLDB
code mezelf org.hsqldb.ParserDQL
class om de NOWAIT in de select-for-update SQL gewoon te negeren.
Als iemand een beter antwoord heeft, zal ik hun antwoord accepteren.
UPDATE:(24-aug-2015)
Bevestiging ontvangen van het HSQLDB-forum dat NOWAIT wordt genegeerd. Ondertussen plaats ik het codefragment om NOWAIT te negeren dat ik heb ontvangen van het HSQLDB sourceforge-forum. Misschien wilt u wachten op de volgende versie van HSQLDB dan deze aan uw codebasis toe te voegen (als een hack).
if (Tokens.T_NOWAIT.equals(token.tokenString)) {
read();
}
BIJGEWERKT om de volledige context te tonen over waar het bovenstaande fragment in de ParserDQL.java moet worden toegevoegd
/**
* 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);
}
}
}