Oracle
 sql >> база данни >  >> RDS >> Oracle

hsqldb Режим Oracle изберете за актуализация СЕГА

Най-накрая намерих отговор на собствения си въпрос, след като разрових изходния код на hsqldb в sourceforge.

Версия 2.3.3 на HSQLDB НЕ поддържа NOWAIT.

Зададох този въпрос в техния дискусионен форум и повдигнах проблема, но не е като GitHub, където можете да създадете проблем, така че да не се отваря официален проблем/заявка.

Разбирам се с лош хак за сега модифицирането на HSQLDB кодирам сам org.hsqldb.ParserDQL клас, за да игнорирате NOWAIT в SQL за избор за актуализиране.

Ако някой има по-добър отговор, ще приема неговия отговор.

АКТУАЛИЗАЦИЯ:(24 август 2015 г.)

Получи потвърждение от форума на HSQLDB, че NOWAIT ще бъде игнорирано. Междувременно публикувам кодовия фрагмент за игнориране на NOWAIT, който получих от форума на HSQLDB sourceforge. Може да искате да изчакате следващата версия на 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);
            }
        }
    }



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MAX() в ORACLE SQL

  2. Oracle:Как да броим нулеви и ненулеви редове

  3. Oracle Query за събиране на QTY по години - само за последните 3 години

  4. Как да заобиколите ORA-02014:не може да се избере ЗА АКТУАЛИЗАЦИЯ от изглед с DISTINCT, GROUP BY и т.н.

  5. SQL грешка - липсва ключова дума