Konečně jsem našel odpověď na svou vlastní otázku po vykopání zdrojového kódu hsqldb na sourceforge.
Verze 2.3.3 HSQLDB NEPODPORUJE NOWAIT.
Tuto otázku jsem položil v jejich diskusním fóru a problém jsem nastolil, ale není to jako GitHub, kde můžete vytvořit problém, takže se neotevře žádný formální problém/žádost.
Vycházím se špatným hackem, když teď upravuji HSQLDB
kód sám org.hsqldb.ParserDQL
třídy ignorovat NOWAIT v SQL select-for-update.
Pokud má někdo lepší odpověď, přijmu jeho odpověď.
AKTUALIZACE:(24. srpna 2015)
Obdrželi jsme potvrzení z fóra HSQLDB, že NOWAIT bude ignorováno. Mezitím posílám úryvek kódu pro ignorování NOWAIT, který jsem obdržel z fóra HSQLDB sourceforge. Možná budete chtít počkat na další verzi HSQLDB, než ji přidat do základny kódu (jako hack).
if (Tokens.T_NOWAIT.equals(token.tokenString)) {
read();
}
AKTUALIZOVÁNO, aby se zobrazil úplný kontext, kam přidat výše uvedený úryvek v souboru 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);
}
}
}