fix Bug #119271: Connector/J fails to accept legacy value zeroDateTimeBehavior=convertToNull on multi-host URLs (failover), but works on #119
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.
When using a multi-host JDBC URL (failover) with the legacy property value zeroDateTimeBehavior=convertToNull, the driver throws an exception stating the only acceptable values are CONVERT_TO_NULL, EXCEPTION, or ROUND. The same property/value works with a single-host URL.
Root cause:
Legacy value translation is applied only per-host in fixHostInfo() via replaceLegacyPropertyValues(hostProps).
In the failover path, FailoverConnectionProxy initializes properties from ConnectionUrl.getConnectionArgumentsAsProperties(), which returns the global properties map (this.properties) that has not been passed through replaceLegacyPropertyValues.
As a result, convertToNull is not normalized to CONVERT_TO_NULL and enum parsing fails in EnumPropertyDefinition.
Impact:
Backward-compatible URLs that rely on convertToNull fail in multi-host scenarios, but succeed in single-host scenarios, creating inconsistent behavior.
Exception (abridged):
com.mysql.cj.exceptions.CJException: The connection property 'zeroDateTimeBehavior' acceptable values are: 'CONVERT_TO_NULL', 'EXCEPTION' or 'ROUND'. The value 'convertToNull' is not acceptable.