Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

chọn chế độ hsqldb Oracle để cập nhật NOWAIT

Cuối cùng đã tìm thấy câu trả lời cho câu hỏi của riêng tôi sau khi đào mã nguồn hsqldb trên sourceforge.

Phiên bản 2.3.3 của HSQLDB KHÔNG hỗ trợ NOWAIT.

Tôi đã đặt câu hỏi này trong Diễn đàn thảo luận của họ và nêu vấn đề tuy nhiên, vấn đề không giống như GitHub, nơi bạn có thể tạo vấn đề nên không có Vấn đề / Yêu cầu chính thức nào được mở.

Tôi đang gặp phải một vụ tấn công tồi tệ vì hiện đang sửa đổi HSQLDB tự viết mã org.hsqldb.ParserDQL để bỏ qua NOWAIT trong SQL chọn để cập nhật.

Nếu ai có câu trả lời hay hơn, tôi sẽ chấp nhận câu trả lời của họ.

CẬP NHẬT:(24-8-2015)

Đã nhận được xác nhận từ diễn đàn HSQLDB rằng NOWAIT sẽ bị bỏ qua. Trong khi đó, tôi đang đăng đoạn mã để bỏ qua NOWAIT mà tôi đã nhận được từ diễn đàn mã nguồn HSQLDB. Bạn có thể muốn đợi phiên bản tiếp theo của HSQLDB hơn là thêm phiên bản này vào cơ sở mã của bạn (như một cuộc tấn công).

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

CẬP NHẬT để hiển thị toàn bộ ngữ cảnh về nơi thêm đoạn mã trên vào 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. CHÈN với ORDER trên Oracle

  2. Lớp nhóm kết nối Oracle

  3. Hiệu suất &điều chỉnh Oracle Quiz

  4. ORA-28001:Mật khẩu đã hết hạn

  5. Sự cố chuyển đổi Oracle SQL DATE bằng iBATIS qua Java JDBC