Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-5773

SQLException.getErrorCode() returns -1 on client

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 10.8.2.2
    • None
    • None
    • Embedded/Client difference

    Description

      On the embedded driver, SQLException.getErrorCode() returns a value representing the severity of the error. On the client driver, it returns -1 for almost all exceptions. (It has some logic to make session-severity errors return 40000, but the other errors return -1. And SQLWarnings will preserve their error code, which is 10000.)

      The error code gets lost when DRDAConnThread calls getSqlCode(getExceptionSeverity(e)), as getSqlCode() always returns -1 for exceptions:

      private int getSqlCode(int severity)

      { if (severity == CodePoint.SVRCOD_WARNING) // warning return 100; //CLI likes it else if (severity == CodePoint.SVRCOD_INFO) return 0; else return -1; }

      It's not just its returning -1 for exceptions that's problematic in the above method. Returning 100 for warnings causes them to be ignored by the client, since that error code is interpreted as end-of-data. After the changes for DERBY-129 DRDAConnThread.getSqlCode() won't be called for warnings, though, so it should be safe to remove the SVRCOD_WARNING case from the method. (The real end-of-data warnings use a different code path, from DRDAConnThread.doneData().)

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              knutanders Knut Anders Hatlen
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: