Skip to content

Conversation

@KyleAure
Copy link
Contributor

@KyleAure KyleAure commented Oct 25, 2024

Current behavior

If a user attempts to create a connection using the MS SQLServer container with an additional queryString, like:

try (Connection con = myContainer.createConnection(";databaseName=TEST");
    Statement stmt = con.createStatement()) {
      //// execute some query
}

Then the JDBCContainer will throw an error because of the following logic:

if (!queryString.startsWith("?")) {
throw new IllegalArgumentException("The '?' character must be included");
}

If the queryString is changed to `?databaseName=TEST" then a malformed JDBC URL is constructed:

[10/25/2024 15:50:39:255 CDT] [main] DEBUG tc.mcr.microsoft.com/mssql/server:2019-CU18-ubuntu-20.04 - Trying to create JDBC connection using com.microsoft.sqlserver.jdbc.SQLServerDriver to jdbc:sqlserver://myhost:38291;encrypt=false?databaseName=TEST with properties: {password=A_Str0ng_Required_Password, user=sa}

Expected behavior

The MS SQLServer container should override the default behavior of the constructUrlForConnection method to allow for the non-standard JDBC URL syntax for MS SQLServer which is to use a starting character ';' and delimiter ';'.

Prior Work

Fixes #5728 - where issue was originally reported
Fixes #5736 - where issue was originally fixed, but this approach is less heavy handed. Takes existing methods and overwrites behavior for the SQLServer module.

@KyleAure KyleAure requested a review from a team October 25, 2024 21:16
@KyleAure
Copy link
Contributor Author

@eddumelendez - would it be possible to get this fix added to the next release?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Enhancement]: Honoring MSSQL aditional properties on connection url

1 participant