Skip to content

Commit f2cde7a

Browse files
committed
[test] handle 8.0 driver changes in JNDI tests
1 parent a8d7e98 commit f2cde7a

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

test/db/jndi_mysql_config.rb

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require 'db/jndi_base'
22

3-
JNDI_MYSQL_CONFIG = { :adapter => 'mysql', :jndi => 'jdbc/MyDB' }
3+
JNDI_MYSQL_CONFIG = { :adapter => 'mysql2', :jndi => 'jdbc/MyDB' }
44

55
unless ( ps = ENV['PREPARED_STATEMENTS'] || ENV['PS'] ).nil?
66
JNDI_MYSQL_CONFIG[:prepared_statements] = ps
@@ -11,7 +11,15 @@
1111

1212
require 'db/mysql_config'
1313

14-
data_source = com.mysql.jdbc.jdbc2.optional.MysqlDataSource.new
14+
old_driver = nil
15+
begin
16+
data_source = com.mysql.cj.jdbc.MysqlDataSource
17+
rescue NameError
18+
data_source = com.mysql.jdbc.jdbc2.optional.MysqlDataSource
19+
old_driver = true
20+
end
21+
22+
data_source = data_source.new
1523
data_source.database_name = MYSQL_CONFIG[:database]
1624
data_source.url = MYSQL_CONFIG[:url] if MYSQL_CONFIG[:url]
1725
data_source.server_name = MYSQL_CONFIG[:host] if MYSQL_CONFIG[:host]
@@ -20,10 +28,10 @@
2028
data_source.password = MYSQL_CONFIG[:password] if MYSQL_CONFIG[:password]
2129

2230
# must set these to match non-jndi setup
23-
data_source.cache_default_timezone = false
31+
data_source.cache_default_timezone = false if data_source.respond_to?(:cache_default_timezone)
2432
data_source.server_timezone = java.util.TimeZone.getDefault.getID
25-
data_source.use_legacy_datetime_code = false
26-
data_source.zero_date_time_behavior = 'convertToNull'
33+
data_source.use_legacy_datetime_code = false if data_source.respond_to?(:use_legacy_datetime_code)
34+
data_source.zero_date_time_behavior = old_driver ? 'convertToNull' : 'CONVERT_TO_NULL'
2735
data_source.jdbc_compliant_truncation = false
2836

2937
javax.naming.InitialContext.new.bind JNDI_MYSQL_CONFIG[:jndi], data_source

0 commit comments

Comments
 (0)