fix: MS SQLServer container does not allow for custom queryString #9463
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Current behavior
If a user attempts to create a connection using the MS SQLServer container with an additional queryString, like:
Then the JDBCContainer will throw an error because of the following logic:
testcontainers-java/modules/jdbc/src/main/java/org/testcontainers/containers/JdbcDatabaseContainer.java
Lines 315 to 317 in 7351b66
If the queryString is changed to `?databaseName=TEST" then a malformed JDBC URL is constructed:
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.