mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-10-10 09:09:04 +00:00
This commit extends LazyConnectionInvocationHandler to cache early calls to: - setClientInfo(String, String) - setNetworkTimeout(Executor, int) These methods now defer physical connection acquisition until Statement creation, consistent with existing lazy behavior for autoCommit, readOnly, transactionIsolation, catalog, and schema. We also accept and lazily cache calls to setNetworkTimeout() even when the provided Executor is null. Since some JDBC driver implementations completely ignore the Executor parameter (or fall back to a default executor), we cannot meaningfully validate or handle a null Executor before the physical connection is obtained. getClientInfo() and getClientInfo(String) remain non-lazy (triggering immediate connection fetch), because they are read operations whose values cannot be reliably cached due to driver defaults, pooled connection remnants, or external session modifications. setClientInfo(Properties) also remains non-lazy. The reason is that JDBC driver implementations are inconsistent. Some treat it as overwrite, others as append/merge. To guarantee behavior identical to non-lazy execution across all drivers, we choose not to cache or replay it, avoiding any risk of semantic mismatch. See gh-37258 Closes gh-37261 Signed-off-by: Chengang Guan <guanchengang@qq.com>