Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: JDBC host-less URI (///) are not parsed correctly #8319

Open
carlo-colombo opened this issue Feb 15, 2024 · 0 comments
Open

[Bug]: JDBC host-less URI (///) are not parsed correctly #8319

carlo-colombo opened this issue Feb 15, 2024 · 0 comments
Labels

Comments

@carlo-colombo
Copy link

Module

Core

Testcontainers version

1.19.5

Using the latest Testcontainers version?

Yes

Host OS

OsX

Host Arch

ARM

Docker version

Client: Docker Engine - Community
 Version:           25.0.1
 API version:       1.43 (downgraded from 1.44)
 Go version:        go1.21.6
 Git commit:        29cf629222
 Built:             Tue Jan 23 15:11:10 2024
 OS/Arch:           darwin/arm64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:07:58 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.25
  GitCommit:        d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc:
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

What happened?

When using a host-less jdbc string as jdbc:tc:mysql:8.0.36:///my_database?useConfigs=maxPerformance&characterEncoding=utf8&useSSL=false as suggested in the examples [1], the database name is not correctly extracted and it defaults to test. Adding any random host:port allows the database name to be extracted correctly (e.g. jdbc:tc:mysql:8.0.36://foobar:42424242/my_database )

The regex that extracts the database name does not support host-less jdbc urls "([^:]+)(:([0-9]+))?/([^\\\\?]+) as it tries to extract it from the dbHostString field that in case of a host-less jdbc string is /database_name.

[1] https://java.testcontainers.org/modules/databases/jdbc/#:~:text=We%20will%20use%20///%20(host%2Dless%20URIs)%20from%20now%20on%20to%20emphasis%20the%20unimportance%20of%20the%20host%3Aport%20pair.%0AFrom%20Testcontainers%27%20perspective%2C%20jdbc%3Amysql%3A8.0.36%3A//localhost%3A3306/databasename%20and%20jdbc%3Amysql%3A8.0.36%3A///databasename%20is%20the%20same%20URI.

Relevant log output

No response

Additional Information

https://regex101.com/r/na4SoN/1 (check test cases)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant