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

mismatch between error XCL30 and 22003.S.4 and parameters in usage

    XMLWordPrintableJSON

Details

    • Normal
    • Newcomer

    Description

      I found a script, trunk/tools/testing/i18nTestGenerator/generateClientMessageTest.sh, intended to create a test to verify correctness of client error messages(trunk/java/testing/org/apache/derbyTesting/functionTests/tests/i18n/TestClientMessages.java ).
      The script is broken (see DERBY-1567) but after fixing up the resulting test and running it, it did show two messages which look a little odd in their usage (plus some messages for which the usage looked fine):

      XCL30 - LANG_STREAMING_COLUMN_I_O_EXCEPTION:
      messages.xml:
      <msg>
      <name>XCL30.S</name>
      <text>An IOException was thrown when reading a '

      {0}' from an InputStream.</text>
      <arg>value</arg>
      </msg>
      apparently correct number of parameters, but odd...doesn't look like ioe fits the usage in the message text.
      EmbedBlob:
      } catch (IOException ioe) { throw StandardException.newException( SQLState.LANG_STREAMING_COLUMN_I_O_EXCEPTION, ioe); }
      has a second parameter:
      client.am.Lob:
      throw new SqlException(null,
      new ClientMessageId(
      SQLState.LANG_STREAMING_COLUMN_I_O_EXCEPTION),
      typeDesc,
      ioe
      );
      looks like second parameter fits the {0}

      :
      SQLBinary:
      throw StandardException.
      newException(SQLState.LANG_STREAMING_COLUMN_I_O_EXCEPTION,
      ioe, getTypeName());
      SQLChar:
      throw StandardException.
      newException(SQLState.LANG_STREAMING_COLUMN_I_O_EXCEPTION,
      ioe, getTypeName());

      throw StandardException.newException(
      SQLState.LANG_STREAMING_COLUMN_I_O_EXCEPTION,
      ioe,
      "java.sql.String");
      --------------------------------------------------------------
      22003.S.4 - CLIENT_LENGTH_OUTSIDE_RANGE_FOR_DATATYPE
      <msg>
      <name>22003.S.4</name>
      <text>The length (

      {0}

      ) exceeds the maximum length for the data type (

      {1}

      ).</text>
      <arg>number</arg>
      <arg>datatypeName</arg>
      </msg>

      correct number of parameters, but new Integer(Integer.MAX_VALUE) returns a number, not a datatype name:
      client.am.PreparedStatement:
      throw new SqlException(
      agent_.logWriter_,
      new ClientMessageId(
      SQLState.CLIENT_LENGTH_OUTSIDE_RANGE_FOR_DATATYPE),
      new Long(length),
      new Integer(Integer.MAX_VALUE)
      ).getSQLException();
      client.am.ResultSet:
      throw new SqlException(agent_.logWriter_,
      new ClientMessageId(SQLState.CLIENT_LENGTH_OUTSIDE_RANGE_FOR_DATATYPE),
      new Long(length), new Integer(Integer.MAX_VALUE)).getSQLException();
      throw new SqlException(agent_.logWriter_,
      new ClientMessageId(SQLState.CLIENT_LENGTH_OUTSIDE_RANGE_FOR_DATATYPE),
      new Long(length), new Integer(Integer.MAX_VALUE)).getSQLException();
      throw new SqlException(agent_.logWriter_,
      new ClientMessageId(SQLState.CLIENT_LENGTH_OUTSIDE_RANGE_FOR_DATATYPE),
      new Long(length), new Integer(Integer.MAX_VALUE)).getSQLException();

      -------------------------------------------

      Attachments

        1. exception-args.diff
          0.6 kB
          Knut Anders Hatlen

        Issue Links

          Activity

            People

              mamtas Mamta A. Satoor
              myrna Myrna van Lunteren
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: