sql >> Databáze >  >> RDS >> Oracle

hsqldb Vyberte režim Oracle pro aktualizaci NOWAIT

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);
            }
        }
    }



  1. Jak uložit více než 255 znaků v databázi MySQL?

  2. Oracle SQL - dynamický případový příkaz

  3. Je možné použít parametry URL s mySQL/JSP?

  4. Jak použít řetězec PHP v dotazu LIKE mySQL?