Skip to content

Commit

Permalink
[DOP-23983] Update JDBC drivers to latest versions
Browse files Browse the repository at this point in the history
  • Loading branch information
dolfinus committed Feb 19, 2025
1 parent 734db54 commit 8b9b727
Show file tree
Hide file tree
Showing 12 changed files with 69 additions and 63 deletions.
6 changes: 6 additions & 0 deletions docs/changelog/next_release/345.dependency.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Update DB connectors/drivers to latest versions:
* Clickhouse ``0.6.5`` → ``0.7.2``
* MongoDB ``10.4.0`` → ``10.4.1``
* MySQL ``9.0.0`` → ``9.2.0``
* Oracle ``23.5.0.24.07`` → ``23.7.0.25.01``
* Postgres ``42.7.4`` → ``42.7.5``
4 changes: 2 additions & 2 deletions docs/connection/db_connection/mongodb/types.rst
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ References

Here you can find source code with type conversions:

* `MongoDB -> Spark <https://github.com/mongodb/mongo-spark/blob/r10.4.0/src/main/java/com/mongodb/spark/sql/connector/schema/InferSchema.java#L214-L260>`_
* `Spark -> MongoDB <https://github.com/mongodb/mongo-spark/blob/r10.4.0/src/main/java/com/mongodb/spark/sql/connector/schema/RowToBsonDocumentConverter.java#L157-L260>`_
* `MongoDB -> Spark <https://github.com/mongodb/mongo-spark/blob/r10.4.1/src/main/java/com/mongodb/spark/sql/connector/schema/InferSchema.java#L214-L260>`_
* `Spark -> MongoDB <https://github.com/mongodb/mongo-spark/blob/r10.4.1/src/main/java/com/mongodb/spark/sql/connector/schema/RowToBsonDocumentConverter.java#L157-L260>`_

Supported types
---------------
Expand Down
14 changes: 7 additions & 7 deletions onetl/connection/db_connection/clickhouse/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class Config:
class Clickhouse(JDBCConnection):
"""Clickhouse JDBC connection. |support_hooks|
Based on Maven package `com.clickhouse:clickhouse-jdbc:0.6.5 <https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc/0.6.5>`_
Based on Maven package `com.clickhouse:clickhouse-jdbc:0.7.2 <https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc/0.7.2>`_
(`official Clickhouse JDBC driver <https://github.com/ClickHouse/clickhouse-jdbc>`_).
.. seealso::
Expand Down Expand Up @@ -140,12 +140,12 @@ def get_packages(
Parameters
----------
package_version : str, optional
ClickHouse JDBC version client packages. Defaults to ``0.6.5``.
ClickHouse JDBC version client packages. Defaults to ``0.7.2``.
.. versionadded:: 0.11.0
apache_http_client_version : str, optional
Apache HTTP Client version package. Defaults to ``5.3.1``.
Apache HTTP Client version package. Defaults to ``5.4.2``.
.. versionadded:: 0.11.0
Expand All @@ -156,11 +156,11 @@ def get_packages(
from onetl.connection import Clickhouse
Clickhouse.get_packages(package_version="0.6.0", apache_http_client_version="5.3.1")
Clickhouse.get_packages(package_version="0.6.0", apache_http_client_version="5.4.2")
"""
default_jdbc_version = "0.6.5"
default_http_version = "5.3.1"
default_jdbc_version = "0.7.2"
default_http_version = "5.4.2"

jdbc_version = Version(package_version or default_jdbc_version).min_digits(3)
http_version = Version(apache_http_client_version or default_http_version).min_digits(3)
Expand All @@ -178,7 +178,7 @@ def get_packages(
@classproperty
def package(self) -> str:
"""Get a single string of package names to be downloaded by Spark for establishing a Clickhouse connection."""
return "com.clickhouse:clickhouse-jdbc:0.6.5,com.clickhouse:clickhouse-http-client:0.6.5,org.apache.httpcomponents.client5:httpclient5:5.3.1"
return "com.clickhouse:clickhouse-jdbc:0.7.2,com.clickhouse:clickhouse-http-client:0.7.2,org.apache.httpcomponents.client5:httpclient5:5.4.2"

@property
def jdbc_url(self) -> str:
Expand Down
14 changes: 7 additions & 7 deletions onetl/connection/db_connection/mongodb/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class Config:
class MongoDB(DBConnection):
"""MongoDB connection. |support_hooks|
Based on package `org.mongodb.spark:mongo-spark-connector:10.4.0 <https://mvnrepository.com/artifact/org.mongodb.spark/mongo-spark-connector_2.12/10.4.0>`_
Based on package `org.mongodb.spark:mongo-spark-connector:10.4.1 <https://mvnrepository.com/artifact/org.mongodb.spark/mongo-spark-connector_2.12/10.4.1>`_
(`MongoDB connector for Spark <https://www.mongodb.com/docs/spark-connector/current/>`_)
.. seealso::
Expand Down Expand Up @@ -153,7 +153,7 @@ def get_packages(
Spark version in format ``major.minor``. Used only if ``scala_version=None``.
package_version : str, optional
Specifies the version of the MongoDB Spark connector to use. Defaults to ``10.4.0``.
Specifies the version of the MongoDB Spark connector to use. Defaults to ``10.4.1``.
.. versionadded:: 0.11.0
Expand All @@ -166,10 +166,10 @@ def get_packages(
MongoDB.get_packages(scala_version="2.12")
# specify custom connector version
MongoDB.get_packages(scala_version="2.12", package_version="10.4.0")
MongoDB.get_packages(scala_version="2.12", package_version="10.4.1")
"""

default_package_version = "10.4.0"
default_package_version = "10.4.1"

if scala_version:
scala_ver = Version(scala_version).min_digits(2)
Expand All @@ -196,7 +196,7 @@ def package_spark_3_2(cls) -> str:
"use `MongoDB.get_packages(spark_version='3.2')` instead"
)
warnings.warn(msg, UserWarning, stacklevel=3)
return "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"
return "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"

@classproperty
def package_spark_3_3(cls) -> str:
Expand All @@ -206,7 +206,7 @@ def package_spark_3_3(cls) -> str:
"use `MongoDB.get_packages(spark_version='3.3')` instead"
)
warnings.warn(msg, UserWarning, stacklevel=3)
return "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"
return "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"

@classproperty
def package_spark_3_4(cls) -> str:
Expand All @@ -216,7 +216,7 @@ def package_spark_3_4(cls) -> str:
"use `MongoDB.get_packages(spark_version='3.4')` instead"
)
warnings.warn(msg, UserWarning, stacklevel=3)
return "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"
return "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"

@slot
def pipeline(
Expand Down
10 changes: 5 additions & 5 deletions onetl/connection/db_connection/mysql/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ class Config:
class MySQL(JDBCConnection):
"""MySQL JDBC connection. |support_hooks|
Based on Maven package `com.mysql:mysql-connector-j:9.0.0 <https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/9.0.0>`_
(`official MySQL JDBC driver <https://dev.mysql.com/downloads/connector/j/8.4.html>`_).
Based on Maven package `com.mysql:mysql-connector-j:9.2.0 <https://mvnrepository.com/artifact/com.mysql/mysql-connector-j/9.2.0>`_
(`official MySQL JDBC driver <https://dev.mysql.com/doc/connector-j/en/>`_).
.. seealso::
Expand Down Expand Up @@ -138,7 +138,7 @@ def get_packages(cls, package_version: str | None = None) -> list[str]:
Parameters
----------
package_version : str, optional
Specifies the version of the MySQL JDBC driver to use. Defaults to ``9.0.0``.
Specifies the version of the MySQL JDBC driver to use. Defaults to ``9.2.0``.
.. versionadded:: 0.11.0
Expand All @@ -153,7 +153,7 @@ def get_packages(cls, package_version: str | None = None) -> list[str]:
# specify a custom package version
MySQL.get_packages(package_version="8.2.0")
"""
default_version = "9.0.0"
default_version = "9.2.0"
version = Version(package_version or default_version).min_digits(3)

return [f"com.mysql:mysql-connector-j:{version}"]
Expand All @@ -163,7 +163,7 @@ def package(cls) -> str:
"""Get package name to be downloaded by Spark."""
msg = "`MySQL.package` will be removed in 1.0.0, use `MySQL.get_packages()` instead"
warnings.warn(msg, UserWarning, stacklevel=3)
return "com.mysql:mysql-connector-j:9.0.0"
return "com.mysql:mysql-connector-j:9.2.0"

@property
def jdbc_url(self) -> str:
Expand Down
10 changes: 5 additions & 5 deletions onetl/connection/db_connection/oracle/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ class Config:
class Oracle(JDBCConnection):
"""Oracle JDBC connection. |support_hooks|
Based on Maven package `com.oracle.database.jdbc:ojdbc8:23.5.0.24.07 <https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8/23.5.0.24.07>`_
Based on Maven package `com.oracle.database.jdbc:ojdbc8:23.7.0.25.01 <https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8/23.7.0.25.01>`_
(`official Oracle JDBC driver <https://www.oracle.com/cis/database/technologies/appdev/jdbc-downloads.html>`_).
.. seealso::
Expand Down Expand Up @@ -210,7 +210,7 @@ def get_packages(
java_version : str, optional
Java major version, defaults to "8". Must be "8" or "11".
package_version : str, optional
Specifies the version of the Oracle JDBC driver to use. Defaults to "23.5.0.24.07".
Specifies the version of the Oracle JDBC driver to use. Defaults to "23.7.0.25.01".
Examples
--------
Expand All @@ -222,11 +222,11 @@ def get_packages(
Oracle.get_packages()
# specify Java and package versions
Oracle.get_packages(java_version="8", package_version="23.5.0.24.07")
Oracle.get_packages(java_version="8", package_version="23.7.0.25.01")
"""

default_java_version = "8"
default_package_version = "23.5.0.24.07"
default_package_version = "23.7.0.25.01"

java_ver = Version(java_version or default_java_version)
if java_ver.major < 8:
Expand All @@ -242,7 +242,7 @@ def package(cls) -> str:
"""Get package name to be downloaded by Spark."""
msg = "`Oracle.package` will be removed in 1.0.0, use `Oracle.get_packages()` instead"
warnings.warn(msg, UserWarning, stacklevel=3)
return "com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"
return "com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"

@property
def jdbc_url(self) -> str:
Expand Down
8 changes: 4 additions & 4 deletions onetl/connection/db_connection/postgres/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class Config:
class Postgres(JDBCConnection):
"""PostgreSQL JDBC connection. |support_hooks|
Based on Maven package `org.postgresql:postgresql:42.7.4 <https://mvnrepository.com/artifact/org.postgresql/postgresql/42.7.4>`_
Based on Maven package `org.postgresql:postgresql:42.7.5 <https://mvnrepository.com/artifact/org.postgresql/postgresql/42.7.5>`_
(`official Postgres JDBC driver <https://jdbc.postgresql.org/>`_).
.. seealso::
Expand Down Expand Up @@ -156,7 +156,7 @@ def get_packages(cls, package_version: str | None = None) -> list[str]:
Parameters
----------
package_version : str, optional
Specifies the version of the PostgreSQL JDBC driver to use. Defaults to ``42.7.4``.
Specifies the version of the PostgreSQL JDBC driver to use. Defaults to ``42.7.5``.
Examples
--------
Expand All @@ -171,7 +171,7 @@ def get_packages(cls, package_version: str | None = None) -> list[str]:
Postgres.get_packages(package_version="42.6.0")
"""
default_version = "42.7.4"
default_version = "42.7.5"
version = Version(package_version or default_version).min_digits(3)

return [f"org.postgresql:postgresql:{version}"]
Expand All @@ -181,7 +181,7 @@ def package(cls) -> str:
"""Get package name to be downloaded by Spark."""
msg = "`Postgres.package` will be removed in 1.0.0, use `Postgres.get_packages()` instead"
warnings.warn(msg, UserWarning, stacklevel=3)
return "org.postgresql:postgresql:42.7.4"
return "org.postgresql:postgresql:42.7.5"

@property
def jdbc_url(self) -> str:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ def test_clickhouse_driver():

def test_clickhouse_package():
expected_packages = (
"com.clickhouse:clickhouse-jdbc:0.6.5,com.clickhouse:clickhouse-http-client:0.6.5,"
"org.apache.httpcomponents.client5:httpclient5:5.3.1"
"com.clickhouse:clickhouse-jdbc:0.7.2,com.clickhouse:clickhouse-http-client:0.7.2,"
"org.apache.httpcomponents.client5:httpclient5:5.4.2"
)
assert Clickhouse.package == expected_packages

Expand All @@ -25,18 +25,18 @@ def test_clickhouse_package():
None,
None,
[
"com.clickhouse:clickhouse-jdbc:0.6.5",
"com.clickhouse:clickhouse-http-client:0.6.5",
"org.apache.httpcomponents.client5:httpclient5:5.3.1",
"com.clickhouse:clickhouse-jdbc:0.7.2",
"com.clickhouse:clickhouse-http-client:0.7.2",
"org.apache.httpcomponents.client5:httpclient5:5.4.2",
],
),
(
"0.6.0-patch3",
"5.3.1",
"5.4.2",
[
"com.clickhouse:clickhouse-jdbc:0.6.0-patch3",
"com.clickhouse:clickhouse-http-client:0.6.0-patch3",
"org.apache.httpcomponents.client5:httpclient5:5.3.1",
"org.apache.httpcomponents.client5:httpclient5:5.4.2",
],
),
(
Expand Down Expand Up @@ -74,9 +74,9 @@ def test_clickhouse_get_packages(package_version, apache_http_client_version, ex
@pytest.mark.parametrize(
"package_version, apache_http_client_version",
[
("0.7", "5.3.1"),
("0.7", "5.4.2"),
("1", "5.4.0"),
("a.b.c", "5.3.1"),
("a.b.c", "5.4.2"),
],
)
def test_clickhouse_get_packages_invalid_version(package_version, apache_http_client_version):
Expand Down
18 changes: 9 additions & 9 deletions tests/tests_unit/tests_db_connection_unit/test_mongodb_unit.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
def test_mongodb_package():
warning_msg = re.escape("will be removed in 1.0.0, use `MongoDB.get_packages(spark_version=")
with pytest.warns(UserWarning, match=warning_msg):
assert MongoDB.package_spark_3_2 == "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"
assert MongoDB.package_spark_3_3 == "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"
assert MongoDB.package_spark_3_4 == "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"
assert MongoDB.package_spark_3_2 == "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"
assert MongoDB.package_spark_3_3 == "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"
assert MongoDB.package_spark_3_4 == "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"


def test_mongodb_get_packages_no_input():
Expand Down Expand Up @@ -50,16 +50,16 @@ def test_mongodb_get_packages_scala_version_not_supported(scala_version):
@pytest.mark.parametrize(
"spark_version, scala_version, package_version, package",
[
(None, "2.12", "10.4.0", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"),
(None, "2.13", "10.4.0", "org.mongodb.spark:mongo-spark-connector_2.13:10.4.0"),
("3.2", None, "10.4.0", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"),
("3.3", None, "10.4.0", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"),
("3.4", None, "10.4.0", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"),
(None, "2.12", "10.4.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"),
(None, "2.13", "10.4.1", "org.mongodb.spark:mongo-spark-connector_2.13:10.4.1"),
("3.2", None, "10.4.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"),
("3.3", None, "10.4.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"),
("3.4", None, "10.4.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"),
("3.2", "2.12", "10.1.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.1.1"),
("3.4", "2.13", "10.1.1", "org.mongodb.spark:mongo-spark-connector_2.13:10.1.1"),
("3.2", "2.12", "10.2.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.2.1"),
("3.2", "2.12", "10.2.0", "org.mongodb.spark:mongo-spark-connector_2.12:10.2.0"),
("3.2.4", "2.12.1", "10.4.0", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.0"),
("3.2.4", "2.12.1", "10.4.1", "org.mongodb.spark:mongo-spark-connector_2.12:10.4.1"),
],
)
def test_mongodb_get_packages(spark_version, scala_version, package_version, package):
Expand Down
6 changes: 3 additions & 3 deletions tests/tests_unit/tests_db_connection_unit/test_mysql_unit.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ def test_mysql_class_attributes():
def test_mysql_package():
warning_msg = re.escape("will be removed in 1.0.0, use `MySQL.get_packages()` instead")
with pytest.warns(UserWarning, match=warning_msg):
assert MySQL.package == "com.mysql:mysql-connector-j:9.0.0"
assert MySQL.package == "com.mysql:mysql-connector-j:9.2.0"


@pytest.mark.parametrize(
"package_version, expected_packages",
[
(None, ["com.mysql:mysql-connector-j:9.0.0"]),
("9.0.0", ["com.mysql:mysql-connector-j:9.0.0"]),
(None, ["com.mysql:mysql-connector-j:9.2.0"]),
("9.2.0", ["com.mysql:mysql-connector-j:9.2.0"]),
("8.1.0", ["com.mysql:mysql-connector-j:8.1.0"]),
("8.0.33", ["com.mysql:mysql-connector-j:8.0.33"]),
],
Expand Down
16 changes: 8 additions & 8 deletions tests/tests_unit/tests_db_connection_unit/test_oracle_unit.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ def test_oracle_class_attributes():
def test_oracle_package():
warning_msg = re.escape("will be removed in 1.0.0, use `Oracle.get_packages()` instead")
with pytest.warns(UserWarning, match=warning_msg):
assert Oracle.package == "com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"
assert Oracle.package == "com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"


def test_oracle_get_packages_no_input():
assert Oracle.get_packages() == ["com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"]
assert Oracle.get_packages() == ["com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"]


@pytest.mark.parametrize("java_version", ["7", "6"])
Expand All @@ -31,16 +31,16 @@ def test_oracle_get_packages_java_version_not_supported(java_version):
@pytest.mark.parametrize(
"java_version, package_version, expected_packages",
[
(None, None, ["com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"]),
("8", None, ["com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"]),
("8", "23.5.0.24.07", ["com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"]),
(None, None, ["com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"]),
("8", None, ["com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"]),
("8", "23.7.0.25.01", ["com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"]),
("8", "21.13.0.0", ["com.oracle.database.jdbc:ojdbc8:21.13.0.0"]),
("9", None, ["com.oracle.database.jdbc:ojdbc8:23.5.0.24.07"]),
("9", None, ["com.oracle.database.jdbc:ojdbc8:23.7.0.25.01"]),
("9", "21.13.0.0", ["com.oracle.database.jdbc:ojdbc8:21.13.0.0"]),
("11", None, ["com.oracle.database.jdbc:ojdbc11:23.5.0.24.07"]),
("11", None, ["com.oracle.database.jdbc:ojdbc11:23.7.0.25.01"]),
("11", "21.13.0.0", ["com.oracle.database.jdbc:ojdbc11:21.13.0.0"]),
("17", "21.13.0.0", ["com.oracle.database.jdbc:ojdbc11:21.13.0.0"]),
("20", "23.5.0.24.07", ["com.oracle.database.jdbc:ojdbc11:23.5.0.24.07"]),
("20", "23.7.0.25.01", ["com.oracle.database.jdbc:ojdbc11:23.7.0.25.01"]),
],
)
def test_oracle_get_packages(java_version, package_version, expected_packages):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ def test_postgres_class_attributes():
def test_postgres_package():
warning_msg = re.escape("will be removed in 1.0.0, use `Postgres.get_packages()` instead")
with pytest.warns(UserWarning, match=warning_msg):
assert Postgres.package == "org.postgresql:postgresql:42.7.4"
assert Postgres.package == "org.postgresql:postgresql:42.7.5"


@pytest.mark.parametrize(
"package_version, expected_packages",
[
(None, ["org.postgresql:postgresql:42.7.4"]),
("42.7.4", ["org.postgresql:postgresql:42.7.4"]),
("42.7.4-patch", ["org.postgresql:postgresql:42.7.4-patch"]),
(None, ["org.postgresql:postgresql:42.7.5"]),
("42.7.5", ["org.postgresql:postgresql:42.7.5"]),
("42.7.5-patch", ["org.postgresql:postgresql:42.7.5-patch"]),
("42.6.0", ["org.postgresql:postgresql:42.6.0"]),
],
)
Expand Down

0 comments on commit 8b9b727

Please sign in to comment.