activerecord-jdbc-adapter 52.2-java → 52.3-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: edf65c8d44c40981f576b4b4e771621266594633377cdb3e4372c3f6d0f21d95
4
- data.tar.gz: 73cb6e5361a6f7bd99eb0dcb5fb0dbb1ab750e436a53143725354d34b178273f
3
+ metadata.gz: 7e777dea191806a6cde6a0503077077c57698b5d524e1acc31c98a6fe2dd8cfd
4
+ data.tar.gz: 2f681bfdab105c7e598533d465476e3b265b9ad845d5d3eab494b763af71711c
5
5
  SHA512:
6
- metadata.gz: 856163f3d41918753ec4426904c20619fc46c12bbc1303e1332173c399566c17d8f1e652dd3d5cb3a1e97347e2b6158bab6f97a09a322ffc45483e0dd8b307a6
7
- data.tar.gz: 443e9c168b7e9af22d5870ea63b5b084f1563ac58897d12a99893e9f8f855f4e51466376eb11ea74c920f46729c8ceb56dadfb2662aa9b7675c836a62df1cd41
6
+ metadata.gz: 7931428c670ff5ed6ff3db57dbc00eca7462602caef72b6ae92003b344e6df201ed8b82e4cc5e16e16304506ae1501beaf2c7bf0e4bf312ecab08218060ccd8d
7
+ data.tar.gz: f55aee0913cb8ffb5103a9123bff3188cbdef23744d05dde034948dadd2ffb82190c31653563c2ed00ed061849f65906f59a7f6a7da99ee3c69eaab0795e74f3
@@ -1,18 +1,27 @@
1
- language: ruby
2
1
  sudo: false
3
- branches:
4
- only:
5
- - master
6
- - /.*-stable$/
7
- - /^test-.*/
8
- - /maintenance|support/
9
- - /.*dev$/
10
- bundler_args: --without development
11
- script: bundle exec rake ${TEST_PREFIX}test_$DB
2
+ dist: xenial
3
+
4
+ services:
5
+ - mysql
6
+ addons:
7
+ postgresql: 9.4
8
+
12
9
  before_install:
13
10
  - unset _JAVA_OPTIONS
14
11
  - rvm @default,@global do gem uninstall bundler -a -x -I || true
15
12
  - gem install bundler -v "~>1.17.3"
13
+ install:
14
+ - bundle install --retry 3 --without development
15
+ # to fix this issue: https://travis-ci.community/t/mariadb-10-1-fails-to-install-on-xenial/3151/3
16
+ - mysql -u root -e 'CREATE USER IF NOT EXISTS travis@localhost; GRANT ALL ON *.* TO travis@localhost;' || true
17
+
18
+ language: ruby
19
+ rvm:
20
+ - jruby-9.1.16.0
21
+ jdk:
22
+ - openjdk8
23
+
24
+ script: bundle exec rake ${TEST_PREFIX}test_$DB
16
25
  before_script:
17
26
  - echo "JAVA_OPTS=$JAVA_OPTS"
18
27
  - export JRUBY_OPTS="-J-Xms64M -J-Xmx1024M"
@@ -38,12 +47,7 @@ before_script:
38
47
  psql -c "create database activerecord_unittest;" -U postgres && \
39
48
  psql -c "create database activerecord_unittest2;" -U postgres \
40
49
  || true
41
- rvm:
42
- - jruby-9.1.16.0
43
- jdk:
44
- - openjdk8
45
- addons:
46
- postgresql: "9.4"
50
+
47
51
  env:
48
52
  - DB=mysql2 PREPARED_STATEMENTS=false
49
53
  - DB=mysql2 PREPARED_STATEMENTS=true
@@ -86,10 +90,10 @@ matrix:
86
90
  env: DB=sqlite3
87
91
  # testing against MariaDB
88
92
  - addons:
89
- mariadb: '10.0'
93
+ mariadb: 10.2
90
94
  env: DB=mariadb PREPARED_STATEMENTS=false
91
95
  - addons:
92
- mariadb: '10.1'
96
+ mariadb: 10.3
93
97
  env: DB=mariadb PREPARED_STATEMENTS=true
94
98
  # Rails test-suite :
95
99
  - env: DB=mysql2 TEST_PREFIX="rails:" AR_VERSION="v5.2.3" # PS off by default
data/Rakefile CHANGED
@@ -257,7 +257,7 @@ if defined? JRUBY_VERSION
257
257
  begin
258
258
  require 'arjdbc/version'
259
259
  rescue LoadError
260
- path = File.expand_path('../lib', File.dirname(__FILE__))
260
+ path = File.expand_path('lib', File.dirname(__FILE__))
261
261
  unless $LOAD_PATH.include?(path)
262
262
  $LOAD_PATH << path; retry
263
263
  end
@@ -328,6 +328,17 @@ module ArJdbc
328
328
  select_one(sql).nil?
329
329
  end
330
330
 
331
+ # @override
332
+ def primary_keys(table)
333
+ # If no schema in table name is given but present in URL parameter. Use the URL parameter one
334
+ # This avoids issues if the table is present in multiple schemas
335
+ if table.split(".").size == 1 && schema
336
+ table = "#{schema}.#{table}"
337
+ end
338
+
339
+ super
340
+ end
341
+
331
342
  def next_sequence_value(sequence_name)
332
343
  select_value("SELECT NEXT VALUE FOR #{sequence_name} FROM sysibm.sysdummy1")
333
344
  end
@@ -358,6 +358,10 @@ module ActiveRecord
358
358
  # @return [Integer, NilClass]
359
359
  def last_inserted_id(result)
360
360
  if result.is_a?(Hash) || result.is_a?(ActiveRecord::Result)
361
+ # If table does not have primary key defined
362
+ return nil if result.first.blank?
363
+
364
+
361
365
  result.first.first[1] # .first = { "id"=>1 } .first = [ "id", 1 ]
362
366
  else
363
367
  result
@@ -10,11 +10,9 @@ ArJdbc::ConnectionMethods.module_eval do
10
10
 
11
11
  return jndi_connection(config) if jndi_config?(config)
12
12
 
13
- driver = config[:driver] ||=
14
- defined?(::Jdbc::MySQL.driver_name) ? ::Jdbc::MySQL.driver_name : 'com.mysql.jdbc.Driver'
15
-
16
- mysql_driver = driver.start_with?('com.mysql.')
17
- mariadb_driver = ! mysql_driver && driver.start_with?('org.mariadb.')
13
+ driver = config[:driver]
14
+ mysql_driver = driver.nil? || driver.to_s.start_with?('com.mysql.')
15
+ mariadb_driver = ! mysql_driver && driver.to_s.start_with?('org.mariadb.')
18
16
 
19
17
  begin
20
18
  require 'jdbc/mysql'
@@ -22,6 +20,11 @@ ArJdbc::ConnectionMethods.module_eval do
22
20
  rescue LoadError # assuming driver.jar is on the class-path
23
21
  end if mysql_driver
24
22
 
23
+ if driver.nil?
24
+ config[:driver] ||=
25
+ defined?(::Jdbc::MySQL.driver_name) ? ::Jdbc::MySQL.driver_name : 'com.mysql.jdbc.Driver'
26
+ end
27
+
25
28
  config[:username] = 'root' unless config.key?(:username)
26
29
  # jdbc:mysql://[host][,failoverhost...][:port]/[database]
27
30
  # - if the host name is not specified, it defaults to 127.0.0.1
@@ -36,7 +39,8 @@ ArJdbc::ConnectionMethods.module_eval do
36
39
 
37
40
  properties = ( config[:properties] ||= {} )
38
41
  if mysql_driver
39
- properties['zeroDateTimeBehavior'] ||= 'convertToNull'
42
+ properties['zeroDateTimeBehavior'] ||=
43
+ config[:driver].to_s.start_with?('com.mysql.cj.') ? 'CONVERT_TO_NULL' : 'convertToNull'
40
44
  properties['jdbcCompliantTruncation'] ||= false
41
45
  # NOTE: this is "better" than passing what users are used to set on MRI
42
46
  # e.g. 'utf8mb4' will fail cause the driver will check for a Java charset
@@ -108,7 +112,8 @@ ArJdbc::ConnectionMethods.module_eval do
108
112
  rescue LoadError # assuming driver.jar is on the class-path
109
113
  end
110
114
 
111
- config[:driver] ||= 'org.mariadb.jdbc.Driver'
115
+ config[:driver] ||=
116
+ defined?(::Jdbc::MariaDB.driver_name) ? ::Jdbc::MariaDB.driver_name : 'org.mariadb.jdbc.Driver'
112
117
 
113
118
  mysql_connection(config)
114
119
  end
@@ -16,7 +16,8 @@ ArJdbc::ConnectionMethods.module_eval do
16
16
  ::Jdbc::Postgres.load_driver(:require) if defined?(::Jdbc::Postgres.load_driver)
17
17
  rescue LoadError # assuming driver.jar is on the class-path
18
18
  end
19
- driver = config[:driver] ||= 'org.postgresql.Driver'
19
+ driver = (config[:driver] ||=
20
+ defined?(::Jdbc::Postgres.driver_name) ? ::Jdbc::Postgres.driver_name : 'org.postgresql.Driver')
20
21
 
21
22
  host = config[:host] ||= ( config[:hostaddr] || ENV['PGHOST'] || 'localhost' )
22
23
  port = config[:port] ||= ( ENV['PGPORT'] || 5432 )
@@ -1,3 +1,3 @@
1
1
  module ArJdbc
2
- VERSION = '52.2'
2
+ VERSION = '52.3'
3
3
  end
@@ -218,9 +218,11 @@ public abstract class DateTimeUtils {
218
218
  final int hours = time.getHours();
219
219
  final int minutes = time.getMinutes();
220
220
  final int seconds = time.getSeconds();
221
- final int nanos = time.getNanos(); // max 999-999-999
221
+ int nanos = time.getNanos(); // max 999-999-999
222
+ final int millis = nanos / 1000000;
223
+ nanos = nanos % 1000000;
222
224
 
223
- DateTime dateTime = new DateTime(2000, 1, 1, hours, minutes, seconds, defaultZone);
225
+ DateTime dateTime = new DateTime(2000, 1, 1, hours, minutes, seconds, millis, defaultZone);
224
226
  return RubyTime.newTime(context.runtime, dateTime, nanos);
225
227
  }
226
228
 
@@ -233,9 +235,11 @@ public abstract class DateTimeUtils {
233
235
  final int hours = timestamp.getHours();
234
236
  final int minutes = timestamp.getMinutes();
235
237
  final int seconds = timestamp.getSeconds();
236
- final int nanos = timestamp.getNanos(); // max 999-999-999
238
+ int nanos = timestamp.getNanos(); // max 999-999-999
239
+ final int millis = nanos / 1000000;
240
+ nanos = nanos % 1000000;
237
241
 
238
- DateTime dateTime = new DateTime(year, month, day, hours, minutes, seconds, 0, defaultZone);
242
+ DateTime dateTime = new DateTime(year, month, day, hours, minutes, seconds, millis, defaultZone);
239
243
  return RubyTime.newTime(context.runtime, dateTime, nanos);
240
244
  }
241
245
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-jdbc-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: '52.2'
4
+ version: '52.3'
5
5
  platform: java
6
6
  authors:
7
7
  - Nick Sieger, Ola Bini, Karol Bucek and JRuby contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-10 00:00:00.000000000 Z
11
+ date: 2019-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement