सोर्सफोर्ज पर hsqldb सोर्स कोड खोदने के बाद आखिरकार मुझे अपने ही सवाल का जवाब मिल गया।
HSQLDB का संस्करण 2.3.3 NOWAIT का समर्थन नहीं करता है।
मैंने यह प्रश्न उनके चर्चा मंच में पूछा है और इस मुद्दे को उठाया है, हालांकि यह गिटहब की तरह नहीं है जहां आप एक मुद्दा बना सकते हैं इसलिए कोई औपचारिक मुद्दा/अनुरोध नहीं खोला गया।
मुझे अब HSQLDB
को संशोधित करने के लिए एक खराब हैक का साथ मिल रहा है कोड स्वयं org.hsqldb.ParserDQL
केवल अद्यतन के लिए चयनित SQL में NOWAIT को अनदेखा करने के लिए वर्ग।
अगर किसी के पास बेहतर जवाब है तो मैं उनका जवाब स्वीकार करूंगा।
अद्यतन:(अगस्त-24-2015)
HSQLDB फोरम से पुष्टि प्राप्त हुई कि NOWAIT को नजरअंदाज कर दिया जाएगा। इस बीच मैं एचएसक्यूएलडीबी सोर्सफोर्ज फोरम से प्राप्त NOWAIT को अनदेखा करने के लिए कोड स्निपेट पोस्ट कर रहा हूं। आप इसे अपने कोड बेस (एक हैक के रूप में) में जोड़ने के बजाय HSQLDB के अगले संस्करण की प्रतीक्षा करना चाह सकते हैं।
if (Tokens.T_NOWAIT.equals(token.tokenString)) {
read();
}
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);
}
}
}