Skip to content

Commit

Permalink
Merge branch 'release/3.3.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
rusher committed Dec 14, 2023
2 parents 4acb834 + ff82af2 commit 887d9c9
Show file tree
Hide file tree
Showing 30 changed files with 885 additions and 185 deletions.
112 changes: 14 additions & 98 deletions .travis.yml
@@ -1,119 +1,38 @@
os: linux
dist: jammy
language: java
services:
- docker
- mysql
jdk: openjdk17
addons:
hosts:
- mariadb.example.com
- mariadb1.example.com
- mariadb2.example.com
- mariadb3.example.com
version: ~> 1.0

before_install:
- git clone https://github.com/mariadb-corporation/connector-test-machine.git
# Load cached docker images
- if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi

cache:
directories:
- $HOME/docker
- $HOME/.m2

install:
- |-
case $TRAVIS_OS_NAME in
windows)
choco install openjdk11 maven
export PATH=$(cmd.exe //c "refreshenv > nul & C:\Progra~1\Git\bin\bash -c 'echo \$PATH' ")
connector-test-machine/launch.bat -t "$srv" -v "$v" -d testj
;;
linux)
source connector-test-machine/launch.sh -t "$srv" -v "$v" -d testj -l "$local" -p "$packet"
;;
esac
env:
global: local=0 RUN_LONG_TEST=true PROFILE=default
global: local=0 RUN_LONG_TEST=true PROFILE=default DB=testj CLEAR_TEXT=0

stages:
- Minimal
- name: Enterprise
if: type = push AND fork = false
- Community
import: mariadb-corporation/connector-test-machine:common-build.yml@master

jobs:
allow_failures:
- env: srv=build
- env: srv=xpand TEST_DB_OTHER="&initSql=SET NAMES UTF8"
- env: srv=mariadb-es local=1
include:
- stage: Minimal
env: srv=mariadb v=10.6 packet=8
name: "CS 10.6"
- env: srv=mariadb-es
name: "ES latest"
if: type = push AND fork = false
- env: srv=mariadb v=10.6 packet=40 PROFILE=java8
- stage: Language
env: srv=mariadb v=10.6 packet=40 PROFILE=java8
jdk: openjdk8
name: "CS 10.6 - openjdk 8"

- stage: Enterprise
env: srv=mariadb-es v=10.4
dist: bionic
name: "ES 10.4"
- env: srv=mariadb-es v=10.5
dist: bionic
name: "ES 10.5"
- env: srv=mariadb-es v=10.6
name: "ES 10.6"
if: type = push AND fork = false
- env: srv=mariadb-es-test v=23.08
name: "ES 23.08"
if: type = push AND fork = false
- env: srv=maxscale
name: "Maxscale"
- env: srv=xpand TEST_DB_OTHER="&initSql=SET NAMES UTF8"
name: "Xpand"

- stage: Community
env: srv=mariadb v=10.6
os: windows
language: shell
name: "CS 10.6 - Windows"
- env: srv=mariadb v=10.4 local=1
dist: bionic
name: "CS 10.4"
- env: srv=mariadb v=10.5 local=1
dist: bionic
name: "CS 10.5"
- env: srv=mariadb v=10.9 local=1
name: "CS 10.9"
- env: srv=mariadb v=10.10 local=1
name: "CS 10.10"
- env: srv=mariadb v=10.11 local=1
name: "CS 10.11"
- env: srv=mariadb v=11.0 local=1
name: "CS 11.0"
- env: srv=mariadb v=11.1 local=1
name: "CS 11.1"
- env: srv=mariadb v=10.6 packet=40
- stage: Language
env: srv=mariadb v=10.6 packet=8
jdk: openjdk11
name: "CS 10.6 - openjdk 11"
- env: srv=mariadb v=10.6 packet=8
name: "CS 10.6 - packet 8M"
- env: srv=mariadb v=10.6 local=1 BENCH=1
name: "CS 10.6 - openjdk 11 - packet 8M"
- stage: Language
env: srv=mariadb v=10.6 packet=40
jdk: openjdk17
name: "CS 10.6 - openjdk 17 - packet 40M"
- stage: Benchmarks
env: srv=mariadb v=10.6 local=1 BENCH=1
name: "Benchmarks"
- env: srv=galera v=10.8
name: "Galera 10.8"
- env: srv=mysql v=5.7
name: "MySQL 5.7"
- env: srv=mysql v=8.0
name: "MySQL 8.0"
- env: srv=build
name: "CS build"

script:
- echo $PROFILE
Expand All @@ -130,6 +49,3 @@ script:

after_script:
- bash <(curl -s https://codecov.io/bash)

after_failure:
- if [ "$srv" == "maxscale" ] ; then docker-compose -f ${COMPOSE_FILE} exec -u root maxscale tail -500 /var/log/maxscale/maxscale.log; fi
31 changes: 27 additions & 4 deletions CHANGELOG.md
@@ -1,5 +1,25 @@
# Change Log

## [3.3.1](https://github.com/mariadb-corporation/mariadb-connector-j/tree/3.3.2) (Dec 2023)

[Full Changelog](https://github.com/mariadb-corporation/mariadb-connector-j/compare/3.3.1...3.3.2)

##### Bugs Fixed

* CONJ-1117 new option `returnMultiValuesGeneratedIds` for connector 2.x compatibility, so getGeneratedKeys() return all
ids of multi-value inserts
* CONJ-1140 regression caussing ClassCastException on DatabaseMetaData when use with option defaultFetchSize set
* CONJ-1129 Metadata.getPrimaryKeys table comparison using like in place of strict equality
* CONJ-1130 ensuring batch parameter are cleared after SQL Failure
* CONJ-1131 NullPointerException when Calling getGeneratedKeys() after an SQL Failure
* CONJ-1132 Ensuring reseting result for getUpdateCount() after an SQL Failure
* CONJ-1135 ensuring BULK command not used when using INSERT ON DUPLICATE KEY UPDATE in order to always have unique
affected rows by default
* CONJ-1136 wrong decoding for Resultset.getByte() results for binary varchar fields
* CONJ-1137 ensuring never having NPE in OkPacket when setting auto commit
* CONJ-1138 Inconsistency in Behavior of PreparedStatement After closeOnCompletion() Between MariaDB and MySQL
Connectors

## [3.3.1](https://github.com/mariadb-corporation/mariadb-connector-j/tree/3.3.1) (Nov 2023)

[Full Changelog](https://github.com/mariadb-corporation/mariadb-connector-j/compare/3.3.0...3.3.1)
Expand Down Expand Up @@ -357,10 +377,13 @@ example:
```sql
START TRANSACTION;
select next_val(hibernate_sequence);
INSERT INTO myCar(id, name) VALUE (?, ?) //with parameters: 1, 'car1'
INSERT INTO myCarDetail(id, carId, name) VALUE (?, ?, ?) //with parameters: 2, 1, 'detail1'
INSERT INTO myCarDetail(id, carId, name) VALUE (?, ?, ?) //with parameters: 3, 2, 'detail2'
COMMIT;
INSERT INTO myCar(id, name) VALUE (?, ?) //
with parameters: 1, 'car1'
INSERT INTO myCarDetail(id, carId, name) VALUE (?, ?, ?) //
with parameters: 2, 1, 'detail1'
INSERT INTO myCarDetail(id, carId, name) VALUE (?, ?, ?) //
with parameters: 3, 2, 'detail2'
COMMIT;
```

### Allow setup of TCP_KEEPIDLE, TCP_KEEPCOUNT, TCP_KEEPINTERVAL
Expand Down
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -7,7 +7,7 @@
# MariaDB java connector

MariaDB java connector is a JDBC 4.2 compatible driver, used to connect applications developed in Java to MariaDB and
MySQL databases. MariaDB Connector/J is LGPL licensed.
MySQL databases. MariaDB Connector/J is distributed under the LGPL license version 2.1 or later (LGPL-2.1-or-later)

Tracker link <a href="https://jira.mariadb.org/projects/CONJ/issues/">https://jira.mariadb.org/projects/CONJ/issues/</a>

Expand All @@ -29,7 +29,7 @@ or maven :
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.3.1</version>
<version>3.3.2</version>
</dependency>
```

Expand Down
6 changes: 3 additions & 3 deletions pom.xml
Expand Up @@ -7,7 +7,7 @@
<artifactId>mariadb-java-client</artifactId>
<packaging>jar</packaging>
<name>mariadb-java-client</name>
<version>3.3.1</version>
<version>3.3.2</version>
<description>JDBC driver for MariaDB and MySQL</description>
<url>https://mariadb.com/kb/en/mariadb/about-mariadb-connector-j/</url>

Expand All @@ -20,8 +20,8 @@
<osgi.version>6.0.0</osgi.version>
<osgi.compendium.version>5.0.0</osgi.compendium.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<logback.version>1.4.11</logback.version>
<logback-java8.version>1.3.11</logback-java8.version>
<logback.version>1.4.14</logback.version>
<logback-java8.version>1.3.12</logback-java8.version>
<jacoco.version>0.8.11</jacoco.version>
<waffle-jna.version>3.3.0</waffle-jna.version>
<mysql-connector-java.version>8.2.0</mysql-connector-java.version>
Expand Down
23 changes: 18 additions & 5 deletions src/main/java/org/mariadb/jdbc/BasePreparedStatement.java
Expand Up @@ -12,20 +12,19 @@
import java.sql.ParameterMetaData;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
import java.util.regex.Pattern;
import org.mariadb.jdbc.client.ColumnDecoder;
import org.mariadb.jdbc.client.util.Parameters;
import org.mariadb.jdbc.codec.*;
import org.mariadb.jdbc.export.ExceptionFactory;
import org.mariadb.jdbc.export.Prepare;
import org.mariadb.jdbc.plugin.Codec;
import org.mariadb.jdbc.plugin.codec.*;
import org.mariadb.jdbc.util.ClientParser;
import org.mariadb.jdbc.util.ParameterList;
import org.mariadb.jdbc.util.constants.ServerStatus;

/** Common methods for prepare statement, for client and server prepare statement. */
public abstract class BasePreparedStatement extends Statement implements PreparedStatement {
private static final Pattern INSERT_STATEMENT_PATTERN =
Pattern.compile("^(\\s*/\\*([^*]|\\*[^/])*\\*/)*\\s*(INSERT)", Pattern.CASE_INSENSITIVE);

/** prepare statement sql command */
protected final String sql;
Expand Down Expand Up @@ -96,8 +95,22 @@ public String toString() {
}

protected void checkIfInsertCommand() {
if (isCommandInsert == null)
isCommandInsert = sql != null && INSERT_STATEMENT_PATTERN.matcher(sql).find();
if (isCommandInsert == null) {
if (sql == null) {
isCommandInsert = false;
} else {
ClientParser parser =
ClientParser.parameterParts(
sql, (con.getContext().getServerStatus() & ServerStatus.NO_BACKSLASH_ESCAPES) > 0);
isInsertDuplicate = parser.isInsertDuplicate();
isCommandInsert = parser.isInsert() && !isInsertDuplicate;
}
}
}

@Override
public String getLastSql() {
return sql;
}

/**
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/org/mariadb/jdbc/ClientPreparedStatement.java
Expand Up @@ -64,6 +64,8 @@ public ClientPreparedStatement(
boolean noBackslashEscapes =
(con.getContext().getServerStatus() & ServerStatus.NO_BACKSLASH_ESCAPES) > 0;
parser = ClientParser.parameterParts(sql, noBackslashEscapes);
isInsertDuplicate = parser.isInsertDuplicate();
isCommandInsert = parser.isInsert() && !isInsertDuplicate;
parameters = new ParameterList(parser.getParamCount());
}

Expand Down Expand Up @@ -97,6 +99,10 @@ private void executeInternal() throws SQLException {
resultSetType,
closeOnCompletion,
false);
} catch (SQLException e) {
results = null;
currResult = null;
throw e;
} finally {
localInfileInputStream = null;
lock.unlock();
Expand Down Expand Up @@ -498,6 +504,11 @@ public int[] executeBatch() throws SQLException {
}
currResult = results.remove(0);
return updates;

} catch (SQLException e) {
results = null;
currResult = null;
throw e;
} finally {
batchParameters.clear();
lock.unlock();
Expand Down Expand Up @@ -533,6 +544,10 @@ public long[] executeLargeBatch() throws SQLException {
currResult = results.remove(0);
return updates;

} catch (SQLException e) {
results = null;
currResult = null;
throw e;
} finally {
batchParameters.clear();
lock.unlock();
Expand Down

0 comments on commit 887d9c9

Please sign in to comment.