src/main/java/org/mariadb/jdbc/internal/com/read/resultset/rowprotocol/TextRowProtocol.java [646:683]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      int nanoBegin = -1;
      int[] timestampsPart = new int[] {0, 0, 0, 0, 0, 0, 0};
      int partIdx = 0;
      for (int begin = pos; begin < pos + length; begin++) {
        byte b = buf[begin];
        if (b == '-' || b == ' ' || b == ':') {
          partIdx++;
          continue;
        }
        if (b == '.') {
          partIdx++;
          nanoBegin = begin;
          continue;
        }
        if (b < '0' || b > '9') {
          throw new SQLException(
              "cannot parse data in timestamp string '"
                  + new String(buf, pos, length, StandardCharsets.UTF_8)
                  + "'");
        }

        timestampsPart[partIdx] = timestampsPart[partIdx] * 10 + b - 48;
      }
      if (timestampsPart[0] == 0
          && timestampsPart[1] == 0
          && timestampsPart[2] == 0
          && timestampsPart[3] == 0
          && timestampsPart[4] == 0
          && timestampsPart[5] == 0
          && timestampsPart[6] == 0) {
        lastValueNull |= BIT_LAST_ZERO_DATE;
        return null;
      }

      // fix non leading tray for nanoseconds
      if (nanoBegin > 0) {
        for (int begin = 0; begin < 6 - (pos + length - nanoBegin - 1); begin++) {
          timestampsPart[6] = timestampsPart[6] * 10;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



src/main/java/org/mariadb/jdbc/internal/com/read/resultset/rowprotocol/TextRowProtocol.java [785:822]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        int nanoBegin = -1;
        int[] timestampsPart = new int[] {0, 0, 0, 0, 0, 0, 0};
        int partIdx = 0;
        for (int begin = pos; begin < pos + length; begin++) {
          byte b = buf[begin];
          if (b == '-' || b == ' ' || b == ':') {
            partIdx++;
            continue;
          }
          if (b == '.') {
            partIdx++;
            nanoBegin = begin;
            continue;
          }
          if (b < '0' || b > '9') {
            throw new SQLException(
                "cannot parse data in timestamp string '"
                    + new String(buf, pos, length, StandardCharsets.UTF_8)
                    + "'");
          }

          timestampsPart[partIdx] = timestampsPart[partIdx] * 10 + b - 48;
        }
        if (timestampsPart[0] == 0
            && timestampsPart[1] == 0
            && timestampsPart[2] == 0
            && timestampsPart[3] == 0
            && timestampsPart[4] == 0
            && timestampsPart[5] == 0
            && timestampsPart[6] == 0) {
          lastValueNull |= BIT_LAST_ZERO_DATE;
          return null;
        }

        // fix non leading tray for nanoseconds
        if (nanoBegin > 0) {
          for (int begin = 0; begin < 6 - (pos + length - nanoBegin - 1); begin++) {
            timestampsPart[6] = timestampsPart[6] * 10;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



