sql >> Databasteknik >  >> RDS >> Oracle

hsqldb Oracle-läge välj för uppdatering NOWAIT

Hittade äntligen svar på min egen fråga efter att ha grävt hsqldb-källkoden på sourceforge.

Version 2.3.3 av HSQLDB stöder INTE NOWAIT.

Jag har ställt den här frågan i deras diskussionsforum och tagit upp frågan men det är inte som GitHub där du kan skapa ett ärende så inget formellt ärende/förfrågan öppnades.

Jag kommer överens med ett dåligt hack för att nu ändra HSQLDB koda mig själv org.hsqldb.ParserDQL klass för att bara ignorera NOWAIT i SQL-filen för att uppdatera.

Om någon har ett bättre svar accepterar jag deras svar.

UPPDATERING:(24 augusti 2015)

Fick bekräftelse från HSQLDB forum att NOWAIT kommer att ignoreras. Under tiden lägger jag upp kodavsnittet för att ignorera NOWAIT som jag fick från HSQLDB sourceforge-forumet. Du kanske vill vänta på nästa version av HSQLDB än att lägga till denna i din kodbas (som ett hack).

 if (Tokens.T_NOWAIT.equals(token.tokenString)) {
        read();
 }

UPPDATERAD för att visa hela sammanhanget om var du ska lägga till ovanstående kodavsnitt i 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. SQL Server:Lägg lagrad procedurresultatuppsättning i en tabellvariabel utan att ange dess schema

  2. Enkelt sätt att beräkna median med MySQL

  3. SQL Server Integration Services 2008-2005 kompatibilitet

  4. generera enum-klass från tabell med JOOQ