From cdf02c0ebb1684a9bf1aad98d7a3fdee0f789e32 Mon Sep 17 00:00:00 2001 From: Kyle Aure Date: Fri, 25 Oct 2024 16:04:00 -0500 Subject: [PATCH] fix: MS SQLServer container does not allow for custom queryString --- .../containers/MSSQLServerContainer.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java b/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java index 6e902656bb2..3471e552a40 100644 --- a/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java +++ b/modules/mssqlserver/src/main/java/org/testcontainers/containers/MSSQLServerContainer.java @@ -103,7 +103,20 @@ protected String constructUrlForConnection(String queryString) { if (urlParameters.keySet().stream().map(String::toLowerCase).noneMatch("encrypt"::equals)) { urlParameters.put("encrypt", "false"); } - return super.constructUrlForConnection(queryString); + + // The JDBC driver of MS SQL Server does not use the traditional '?' + // as the starting character nor the '&' as the delimiter of additional parameters. + String baseUrl = getJdbcUrl(); + + if ("".equals(queryString)) { + return baseUrl; + } + + if (!queryString.startsWith(";")) { + throw new IllegalArgumentException("The ';' character must be included"); + } + + return baseUrl + queryString; } @Override