Uploaded image for project: 'MariaDB Connector/J'
  1. MariaDB Connector/J
  2. CONJ-299

PreparedStatement.setObject(Type.BIT, "1") should register as true.

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.4.5
    • Fix Version/s: 1.5.2
    • Component/s: Other
    • Labels:
      None
    • Environment:
      Java8

      Description

      I called PreparedStatement.setObject(Type.BIT, "1"). I expected this value registered true.
      But it was actually false .

      I find the code at github. I found the next code in AbstractMariaDbPrepareStatement.java:781

      public void setObject(final int parameterIndex, final Object obj, final int targetSqlType) throws SQLException {
      ...
              } else if (obj instanceof String) {
      ...
                          case Types.BIT:
                              setBoolean(parameterIndex, Boolean.valueOf(str));
                              break;
      

      Types.BIT must be handled as a numeric type than a boolean type but the compatibility is important. So I think the next code is more appropriate.

                          case Types.BOOLEAN:
                          case Types.BIT:
                                  setBoolean(parameterIndex, Boolean.valueOf("true".equals(str) || !"0".equals(str)));
                              break;
      

      And I tested on MySQL Connector/J. It handled Types.BIT as a numeric type.

        Attachments

          Activity

            People

            Assignee:
            diego dupin Diego Dupin
            Reporter:
            hidekatsu-izuno Hidekatsu Izuno
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Git Integration