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

NullPointerException When Calling getGeneratedKeys()

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 3.3.1
    • 3.3.2
    • batch
    • None

    Description

      The bug involves a NullPointerException being thrown when calling the getGeneratedKeys() method on a Statement object after executing an executeBatch() operation in a JDBC application using the MariaDB connector.
      This behavior is inconsistent with the MySQL JDBC connector, where no such exception is thrown under similar circumstances, suggesting a potential bug in the MariaDB JDBC connector.
      In addition, if I change the first batch SQL to "INSERT INTO table5_0 VALUES(16, -601)", which does not violate the constraint, getGeneratedKeys() will not throw NullPointerException, too.

      @Test
      public void test() throws SQLException {
          Connection con = null;
          Statement stmt = null;
          ResultSet rs = null;
          con = DriverManager.getConnection("jdbc:mariadb://localhost:3366/test5?user=user&password=password");
       
          stmt = con.createStatement();
          stmt.executeUpdate("CREATE TABLE table5_0(id SMALLINT PRIMARY KEY,value BIGINT);");
       
          stmt = con.createStatement();
          stmt.addBatch("INSERT INTO table5_0 VALUES(1679640894, -601)");
          stmt.addBatch("UPDATE table5_0 SET value = 226 WHERE id <= 0");
          try {
              stmt.executeBatch();
          } catch (Exception e) {
              System.out.println(e);
          }
       
          try {
              rs = stmt.getGeneratedKeys(); // java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "this.results" is null
          } catch (Exception e) {
              System.out.println(e);
          }
      }
      

      Attachments

        Activity

          dwenking chaos created issue -
          dwenking chaos made changes -
          Field Original Value New Value
          Description The bug involves a NullPointerException being thrown when calling the getGeneratedKeys() method on a Statement object after executing an executeBatch() operation in a JDBC application using the MariaDB connector.
          This behavior is inconsistent with the MySQL JDBC connector, where no such exception is thrown under similar circumstances, suggesting a potential bug in the MariaDB JDBC connector.

          {code:java}
          @Test
          public void test() throws SQLException {
              Connection con = null;
              Statement stmt = null;
              ResultSet rs = null;
              con = DriverManager.getConnection("jdbc:mariadb://localhost:3366/test5?user=user&password=password");

              stmt = con.createStatement();
              stmt.executeUpdate("CREATE TABLE table5_0(id SMALLINT PRIMARY KEY,value BIGINT);");

              stmt = con.createStatement();
              stmt.addBatch("INSERT INTO table5_0 VALUES(1679640894, -601)");
              stmt.addBatch("UPDATE table5_0 SET value = 226 WHERE id <= 0");
              try {
                  stmt.executeBatch();
              } catch (Exception e) {
                  System.out.println(e);
              }

              try {
                  rs = stmt.getGeneratedKeys(); // java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "this.results" is null
              } catch (Exception e) {
                  System.out.println(e);
              }
          }
          {code}
          The bug involves a NullPointerException being thrown when calling the getGeneratedKeys() method on a Statement object after executing an executeBatch() operation in a JDBC application using the MariaDB connector.
          This behavior is inconsistent with the MySQL JDBC connector, where no such exception is thrown under similar circumstances, suggesting a potential bug in the MariaDB JDBC connector.
          In addition, if I change the first batch SQL to "INSERT INTO table5_0 VALUES(16, -601)", which does not violate the constraint, getGeneratedKeys() will not throw NullPointerException, too.

          {code:java}
          @Test
          public void test() throws SQLException {
              Connection con = null;
              Statement stmt = null;
              ResultSet rs = null;
              con = DriverManager.getConnection("jdbc:mariadb://localhost:3366/test5?user=user&password=password");

              stmt = con.createStatement();
              stmt.executeUpdate("CREATE TABLE table5_0(id SMALLINT PRIMARY KEY,value BIGINT);");

              stmt = con.createStatement();
              stmt.addBatch("INSERT INTO table5_0 VALUES(1679640894, -601)");
              stmt.addBatch("UPDATE table5_0 SET value = 226 WHERE id <= 0");
              try {
                  stmt.executeBatch();
              } catch (Exception e) {
                  System.out.println(e);
              }

              try {
                  rs = stmt.getGeneratedKeys(); // java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "this.results" is null
              } catch (Exception e) {
                  System.out.println(e);
              }
          }
          {code}
          diego dupin Diego Dupin made changes -
          Fix Version/s 3.3.2 [ 29602 ]
          diego dupin Diego Dupin made changes -
          Status Open [ 1 ] Confirmed [ 10101 ]
          diego dupin Diego Dupin made changes -
          Component/s batch [ 14105 ]
          Resolution Fixed [ 1 ]
          Status Confirmed [ 10101 ] Closed [ 6 ]

          People

            diego dupin Diego Dupin
            dwenking chaos
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.