activerecord-jdbc-alt-adapter 70.2.0-java → 71.0.0.alpha1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +135 -21
  3. data/.github/workflows/ruby.yml +10 -10
  4. data/.gitignore +1 -0
  5. data/.solargraph.yml +15 -0
  6. data/Gemfile +17 -4
  7. data/README.md +7 -3
  8. data/RUNNING_TESTS.md +36 -0
  9. data/activerecord-jdbc-adapter.gemspec +2 -2
  10. data/activerecord-jdbc-alt-adapter.gemspec +1 -1
  11. data/lib/arjdbc/abstract/connection_management.rb +23 -10
  12. data/lib/arjdbc/abstract/core.rb +5 -6
  13. data/lib/arjdbc/abstract/database_statements.rb +35 -25
  14. data/lib/arjdbc/abstract/statement_cache.rb +1 -6
  15. data/lib/arjdbc/abstract/transaction_support.rb +37 -9
  16. data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
  17. data/lib/arjdbc/jdbc/column.rb +0 -34
  18. data/lib/arjdbc/jdbc/connection_methods.rb +1 -1
  19. data/lib/arjdbc/mssql/adapter.rb +93 -80
  20. data/lib/arjdbc/mssql/column.rb +1 -0
  21. data/lib/arjdbc/mssql/connection_methods.rb +7 -55
  22. data/lib/arjdbc/mssql/database_statements.rb +182 -71
  23. data/lib/arjdbc/mssql/explain_support.rb +8 -5
  24. data/lib/arjdbc/mssql/schema_creation.rb +1 -1
  25. data/lib/arjdbc/mssql/schema_definitions.rb +10 -0
  26. data/lib/arjdbc/mssql/schema_statements.rb +19 -11
  27. data/lib/arjdbc/mssql/server_version.rb +56 -0
  28. data/lib/arjdbc/mssql/utils.rb +23 -9
  29. data/lib/arjdbc/mysql/adapter.rb +64 -22
  30. data/lib/arjdbc/sqlite3/adapter.rb +218 -135
  31. data/lib/arjdbc/sqlite3/column.rb +103 -0
  32. data/lib/arjdbc/sqlite3/connection_methods.rb +7 -2
  33. data/lib/arjdbc/tasks/mssql_database_tasks.rb +9 -5
  34. data/lib/arjdbc/version.rb +1 -1
  35. data/rakelib/02-test.rake +1 -1
  36. data/rakelib/rails.rake +2 -0
  37. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +4 -2
  38. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +2 -1
  39. metadata +9 -12
  40. data/lib/arel/visitors/sql_server/ng42.rb +0 -294
  41. data/lib/arel/visitors/sql_server.rb +0 -124
  42. data/lib/arjdbc/mssql/limit_helpers.rb +0 -231
  43. data/lib/arjdbc/mssql/lock_methods.rb +0 -77
  44. data/lib/arjdbc/mssql/old_adapter.rb +0 -804
  45. data/lib/arjdbc/mssql/old_column.rb +0 -200
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d657378f80f357a04e2fdad85beaced7e0e8588bf516a4cfea0d2960dee6f517
4
- data.tar.gz: 713a05c4a59bdc8c6a767f5c7043f7f6b51130d231364e3ee11b0df537cdf6a1
3
+ metadata.gz: 3a773766cbb0e3ea279a04ab67b60c578382c604214c0a3dd5e54b7f419f4b96
4
+ data.tar.gz: d0f347ef628b4b791d81ad46a34d20f8ea3acb75cee3a473b2dbd8784769e897
5
5
  SHA512:
6
- metadata.gz: cb38c344bcf3b01e991a5b026c01d250ea9fd82441373ee3095b9bc2f63e139370f9be4adad65863988119eabbcea80b0a1083909d4eaec61af17d42a42e9ee2
7
- data.tar.gz: 6b9e80af6e0bd15a0aa1eab237e1d0f8a5bc5752f1d22fb6ab2100c755d34f1c25f1853105a82eb58bb7ad7f08652213e9f8b147a2728062103d98007aa3510c
6
+ metadata.gz: 7c08cd49b3245c655a4c51d5c0d327cf7f058a7c2c98cedf7a59f00f60d14e7d79b1d9c2eef614712cee71b684f717fd6edd7c122fd0349d775a7e4fb2a48150
7
+ data.tar.gz: b1a059930367508754dc54ff2b8b76434991ac2897ea4ff4917a7ef540d25c28272c4c5cbe13f5b5215eded00940c9beece3f2415860a69b4621a7c62664fa02
@@ -27,7 +27,7 @@ jobs:
27
27
  strategy:
28
28
  fail-fast: false
29
29
  matrix:
30
- ruby-version: ['jruby-9.4.2.0']
30
+ ruby-version: ['jruby-9.4.8.0']
31
31
  db: ['mssql']
32
32
  test_targets: ['test_mssql']
33
33
 
@@ -68,18 +68,47 @@ jobs:
68
68
  run: |
69
69
  bundle exec rake ${{ matrix.test_targets }}
70
70
 
71
- test-rails-pgsql:
71
+ test-arjdbc-sqlite:
72
72
 
73
- name: Rails Tests (Postgres)
73
+ name: ARJDBC Tests (SQLite)
74
74
  runs-on: ubuntu-latest
75
75
  strategy:
76
76
  fail-fast: false
77
77
  matrix:
78
- ruby-version: [ 'jruby-9.4.2.0' ]
79
- db: [ 'postgresql' ]
80
- test_targets: [ "rails:test_postgresql" ]
81
- ar_version: ["7-0-stable"]
82
- prepared_statements: [ 'false', 'true' ]
78
+ ruby-version: ['jruby-9.4.8.0']
79
+ db: ['sqlite3']
80
+ test_targets: ['test_sqlite3']
81
+
82
+ env:
83
+ DB: ${{ matrix.db }}
84
+ JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M --dev"
85
+
86
+ steps:
87
+ - uses: actions/checkout@v4
88
+ - name: Set up Ruby
89
+ uses: ruby/setup-ruby@v1
90
+ with:
91
+ ruby-version: ${{ matrix.ruby-version }}
92
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
93
+ - name: Build
94
+ run: |
95
+ rake jar
96
+ - name: Run tests
97
+ run: |
98
+ bundle exec rake ${{ matrix.test_targets }}
99
+
100
+ test-arjdbc-pgsql:
101
+
102
+ name: ARJDBC Tests (Postgres)
103
+ runs-on: ubuntu-latest
104
+ strategy:
105
+ fail-fast: false
106
+ matrix:
107
+ ruby-version: ['jruby-9.4.8.0']
108
+ db: ['postgresql']
109
+ test_targets: ["db:postgresql test_postgresql"]
110
+ prepared_statements: ['false', 'true']
111
+ insert_returning: ['false', 'true']
83
112
 
84
113
  services:
85
114
  postgres:
@@ -93,16 +122,64 @@ jobs:
93
122
 
94
123
  env:
95
124
  DB: ${{ matrix.db }}
96
- AR_VERSION: ${{ matrix.ar_version }}
97
125
  JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
98
126
  PREPARED_STATEMENTS: ${{ matrix.prepared_statements }}
99
- JDBC_SQLITE_VERSION: "3.32.3.3"
127
+ INSERT_RETURNING: ${{ matrix.insert_returning }}
100
128
  PGHOST: localhost
101
129
  PGPORT: 5432
102
130
  PGUSER: postgres
103
131
 
104
132
  steps:
105
133
  - uses: actions/checkout@v3
134
+ - name: Set up Ruby
135
+ uses: ruby/setup-ruby@v1
136
+ with:
137
+ ruby-version: ${{ matrix.ruby-version }}
138
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
139
+ - name: Build
140
+ run: |
141
+ rake jar
142
+ - name: Run tests
143
+ run: |
144
+ bundle exec rake ${{ matrix.test_targets }}
145
+
146
+ test-rails-mssql:
147
+
148
+ name: Rails Tests (mssql)
149
+ runs-on: ubuntu-latest
150
+ strategy:
151
+ fail-fast: false
152
+ matrix:
153
+ ruby-version: [ 'jruby-9.4.8.0' ]
154
+ db: [ 'mssql' ]
155
+ test_targets: [ "rails:test_mssql" ]
156
+ ar_version: ["7-1-stable-dev"]
157
+
158
+ services:
159
+ mssql:
160
+ image: mcr.microsoft.com/mssql/server:2019-latest
161
+ env:
162
+ ACCEPT_EULA: Y
163
+ MSSQL_SA_PASSWORD: Password12!
164
+ ports:
165
+ - 1433:1433
166
+ options: >-
167
+ --health-cmd="/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P \"Password12!\" -l 30 -Q \"SELECT 1\""
168
+ --health-start-period 10s
169
+ --health-interval 10s
170
+ --health-timeout 5s
171
+ --health-retries 10
172
+
173
+ env:
174
+ DB: ${{ matrix.db }}
175
+ AR_VERSION: ${{ matrix.ar_version }}
176
+ JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
177
+ JDBC_SQLITE_VERSION: "3.32.3.3"
178
+ SQLUSER: SA
179
+ SQLPASS: Password12!
180
+
181
+ steps:
182
+ - uses: actions/checkout@v4
106
183
  - name: Set up Ruby
107
184
  uses: ruby/setup-ruby@v1
108
185
  with:
@@ -110,8 +187,8 @@ jobs:
110
187
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
111
188
  - name: Setup database
112
189
  run: |
113
- psql -c "create database activerecord_unittest;" -U postgres
114
- psql -c "create database activerecord_unittest2;" -U postgres
190
+ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Password12!" -Q "CREATE DATABASE jdbc_arunit;"
191
+ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Password12!" -Q "CREATE DATABASE jdbc_arunit2;"
115
192
  - name: Build
116
193
  run: |
117
194
  rake jar # compiles ext generates: lib/arjdbc/jdbc/adapter_java.jar
@@ -119,18 +196,50 @@ jobs:
119
196
  run: |
120
197
  bundle exec rake ${{ matrix.test_targets }}
121
198
 
122
- test-arjdbc-pgsql:
199
+ test-rails-sqlite:
123
200
 
124
- name: ARJDBC Tests (Postgres)
201
+ name: Rails Tests (SQLite)
125
202
  runs-on: ubuntu-latest
126
203
  strategy:
127
204
  fail-fast: false
128
205
  matrix:
129
- ruby-version: ['jruby-9.4.2.0']
130
- db: ['postgresql']
131
- test_targets: ["db:postgresql test_postgresql"]
132
- prepared_statements: ['false', 'true']
133
- insert_returning: ['false', 'true']
206
+ ruby-version: ['jruby-9.4.8.0']
207
+ db: ['sqlite3']
208
+ test_targets: ["rails:test_sqlite3"]
209
+ ar_version: ["7-1-stable"]
210
+
211
+ env:
212
+ DB: ${{ matrix.db }}
213
+ AR_VERSION: ${{ matrix.ar_version }}
214
+ JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
215
+
216
+ steps:
217
+ - uses: actions/checkout@v4
218
+ - name: Set up Ruby
219
+ uses: ruby/setup-ruby@v1
220
+ with:
221
+ ruby-version: ${{ matrix.ruby-version }}
222
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
223
+ - name: Build
224
+ run: |
225
+ echo "JAVA_OPTS=$JAVA_OPTS"
226
+ rake jar # compiles ext generates: lib/arjdbc/jdbc/adapter_java.jar
227
+ - name: Run tests
228
+ run: |
229
+ bundle exec rake ${{ matrix.test_targets }}
230
+
231
+ test-rails-pgsql:
232
+
233
+ name: Rails Tests (Postgres)
234
+ runs-on: ubuntu-latest
235
+ strategy:
236
+ fail-fast: false
237
+ matrix:
238
+ ruby-version: [ 'jruby-9.4.8.0' ]
239
+ db: [ 'postgresql' ]
240
+ test_targets: [ "rails:test_postgresql" ]
241
+ ar_version: ["7-1-stable"]
242
+ prepared_statements: [ 'false', 'true' ]
134
243
 
135
244
  services:
136
245
  postgres:
@@ -144,9 +253,10 @@ jobs:
144
253
 
145
254
  env:
146
255
  DB: ${{ matrix.db }}
256
+ AR_VERSION: ${{ matrix.ar_version }}
147
257
  JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
148
258
  PREPARED_STATEMENTS: ${{ matrix.prepared_statements }}
149
- INSERT_RETURNING: ${{ matrix.insert_returning }}
259
+ JDBC_SQLITE_VERSION: "3.32.3.3"
150
260
  PGHOST: localhost
151
261
  PGPORT: 5432
152
262
  PGUSER: postgres
@@ -158,9 +268,13 @@ jobs:
158
268
  with:
159
269
  ruby-version: ${{ matrix.ruby-version }}
160
270
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
271
+ - name: Setup database
272
+ run: |
273
+ psql -c "create database activerecord_unittest;" -U postgres
274
+ psql -c "create database activerecord_unittest2;" -U postgres
161
275
  - name: Build
162
276
  run: |
163
- rake jar
277
+ rake jar # compiles ext generates: lib/arjdbc/jdbc/adapter_java.jar
164
278
  - name: Run tests
165
279
  run: |
166
280
  bundle exec rake ${{ matrix.test_targets }}
@@ -27,7 +27,7 @@ jobs:
27
27
  ruby-version: ['jruby-head']
28
28
  db: ['mysql2']
29
29
  test_targets: ["rails:test_mysql2"]
30
- ar_version: ["7-0-stable"]
30
+ ar_version: ["7-1-stable"]
31
31
  prepared_statements: ['false', 'true']
32
32
  driver: ['MySQL']
33
33
 
@@ -45,7 +45,7 @@ jobs:
45
45
  JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
46
46
 
47
47
  steps:
48
- - uses: actions/checkout@v3
48
+ - uses: actions/checkout@v4
49
49
  - name: Set up Ruby
50
50
  uses: ruby/setup-ruby@v1
51
51
  with:
@@ -79,7 +79,7 @@ jobs:
79
79
  ruby-version: [ 'jruby-head' ]
80
80
  db: [ 'postgresql' ]
81
81
  test_targets: [ "rails:test_postgresql" ]
82
- ar_version: ["7-0-stable"]
82
+ ar_version: ["7-1-stable"]
83
83
  prepared_statements: [ 'false', 'true' ]
84
84
 
85
85
  services:
@@ -102,7 +102,7 @@ jobs:
102
102
  PGUSER: postgres
103
103
 
104
104
  steps:
105
- - uses: actions/checkout@v3
105
+ - uses: actions/checkout@v4
106
106
  - name: Set up Ruby
107
107
  uses: ruby/setup-ruby@v1
108
108
  with:
@@ -129,7 +129,7 @@ jobs:
129
129
  ruby-version: ['jruby-head']
130
130
  db: ['sqlite3']
131
131
  test_targets: ["rails:test_sqlite3"]
132
- ar_version: ["7-0-stable"]
132
+ ar_version: ["7-1-stable", "main"]
133
133
 
134
134
  env:
135
135
  DB: ${{ matrix.db }}
@@ -137,7 +137,7 @@ jobs:
137
137
  JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
138
138
 
139
139
  steps:
140
- - uses: actions/checkout@v3
140
+ - uses: actions/checkout@v4
141
141
  - name: Set up Ruby
142
142
  uses: ruby/setup-ruby@v1
143
143
  with:
@@ -179,7 +179,7 @@ jobs:
179
179
  PREPARED_STATEMENTS: ${{ matrix.prepared_statements }}
180
180
 
181
181
  steps:
182
- - uses: actions/checkout@v3
182
+ - uses: actions/checkout@v4
183
183
  - name: Set up Ruby
184
184
  uses: ruby/setup-ruby@v1
185
185
  with:
@@ -230,7 +230,7 @@ jobs:
230
230
  PGUSER: postgres
231
231
 
232
232
  steps:
233
- - uses: actions/checkout@v3
233
+ - uses: actions/checkout@v4
234
234
  - name: Set up Ruby
235
235
  uses: ruby/setup-ruby@v1
236
236
  with:
@@ -256,10 +256,10 @@ jobs:
256
256
 
257
257
  env:
258
258
  DB: ${{ matrix.db }}
259
- JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M"
259
+ JRUBY_OPTS: "-J-Xms64M -J-Xmx1024M --dev"
260
260
 
261
261
  steps:
262
- - uses: actions/checkout@v3
262
+ - uses: actions/checkout@v4
263
263
  - name: Set up Ruby
264
264
  uses: ruby/setup-ruby@v1
265
265
  with:
data/.gitignore CHANGED
@@ -15,6 +15,7 @@ coverage
15
15
  build.xml
16
16
  nbproject
17
17
  .classpath
18
+ .ruby-version
18
19
  .project
19
20
  *.sqlite
20
21
  *.sqlite3
data/.solargraph.yml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ include:
3
+ - "**/*.rb"
4
+ exclude:
5
+ - spec/**/*
6
+ - test/**/*
7
+ - vendor/**/*
8
+ - ".bundle/**/*"
9
+ require: []
10
+ domains: []
11
+ reporters:
12
+ - rubocop
13
+ - require_not_found
14
+ require_paths: []
15
+ max_files: 5000
data/Gemfile CHANGED
@@ -34,17 +34,24 @@ elsif ENV['AR_VERSION'] # Use specific version of AR and not .gemspec version
34
34
  opts = {branch: version}
35
35
  end
36
36
 
37
- git 'https://github.com/rails/rails.git', **opts do
37
+ git 'https://github.com/JesseChavez/rails.git', **opts do
38
38
  gem 'activerecord', require: false
39
39
  gem 'activemodel', require: false
40
40
  gem 'activesupport', require: false
41
41
  gem 'actionpack', require: false
42
42
  gem 'actionview', require: false
43
43
  end
44
+
44
45
  end
45
46
  end
46
47
  else
47
- gemspec name: 'activerecord-jdbc-alt-adapter' # Use versiom from .gemspec
48
+ if defined? JRUBY_VERSION
49
+ gemspec name: 'activerecord-jdbc-alt-adapter' # Use versiom from .gemspec
50
+ else # read add_dependency 'activerecord', '~> 7.0' and use the same requirement on MRI
51
+ ar_req = File.read('activerecord-jdbc-adapter.gemspec').match(/add_dependency.*?activerecord.*['"](.*?)['"]/)[1]
52
+ raise "add_dependency 'activerecord', ... line not detected in gemspec" unless ar_req
53
+ gem 'activerecord', ar_req
54
+ end
48
55
  end
49
56
 
50
57
  gem 'rake', require: nil
@@ -72,6 +79,10 @@ group :rails do
72
79
  gem 'builder', require: nil
73
80
 
74
81
  gem 'erubis', require: nil # "~> 2.7.0"
82
+
83
+ # Due to rails/activesupport/lib/active_support/message_pack.rb
84
+ gem 'msgpack', '>= 1.7.0', require: false
85
+
75
86
  # NOTE: due rails/activerecord/test/cases/connection_management_test.rb
76
87
  gem 'rack', require: nil
77
88
 
@@ -79,7 +90,7 @@ group :rails do
79
90
  end
80
91
 
81
92
  group :development do
82
- gem 'ruby-debug', require: nil # if ENV['DEBUG']
93
+ #gem 'ruby-debug', require: nil # if ENV['DEBUG']
83
94
  group :doc do
84
95
  gem 'yard', require: nil
85
96
  gem 'kramdown', require: nil
@@ -94,10 +105,12 @@ group :test do
94
105
 
95
106
  gem 'mysql2', '>= 0.4.4', require: nil, platform: :mri
96
107
  gem 'pg', '>= 0.18.0', require: nil, platform: :mri
97
- gem 'sqlite3', '~> 1.3.6', require: nil, platform: :mri
108
+ gem 'sqlite3', '~> 1.4', require: nil, platform: :mri
98
109
 
99
110
  # group :mssql do
100
111
  # gem 'tiny_tds', require: nil, platform: :mri
101
112
  # gem 'activerecord-sqlserver-adapter', require: nil, platform: :mri
102
113
  # end
103
114
  end
115
+
116
+ gem 'pry-nav'
data/README.md CHANGED
@@ -143,10 +143,14 @@ Versions are targeted at certain versions of Rails and live on their own branche
143
143
  | 51.x | 5.1.x | 51-stable | 9.1.x | 7 |
144
144
  | 52.x | 5.2.x | 52-stable | 9.1.x | 7 |
145
145
  | 60.x | 6.0.x | 60-stable | 9.2.7 | 8 |
146
- | 61.x | 6.1.x | master | 9.2.7 | 8 |
146
+ | 61.x | 6.1.x | 61-stable | 9.2.7 | 8 |
147
+ | 70.x | 7.0.x | 70-stable | 9.3.0 | 8 |
148
+ | 71.x | 7.1.x | master | 9.4.3 | 8 |
147
149
 
148
- Note that JRuby 9.1.x is end-of-life. We recommend Java 8 at a minimum for all
149
- versions.
150
+ Note: 71.x is still under development and not supported yet.
151
+
152
+ Note that JRuby 9.1.x and JRuby 9.2.x are at end-of-life. We recommend Java 8
153
+ at a minimum for all versions.
150
154
 
151
155
  ## Using ActiveRecord JDBC
152
156
 
data/RUNNING_TESTS.md CHANGED
@@ -16,6 +16,8 @@ Rake tasks are loaded from **rakelib/02-test-rake**, most adapters have a
16
16
  corresponding test_[adapter] task e.g. `rake test_sqlite3` that run against DB.
17
17
  To check all available (test related) tasks simply `rake -T | grep test`.
18
18
 
19
+ ### Database Setup
20
+
19
21
  If the adapter supports creating a database it will try to do so automatically
20
22
  (most embed databases such as SQLite3) for some adapters (MySQL, PostgreSQL) we
21
23
  do this auto-magically (see the `rake db:create` tasks), but otherwise you'll
@@ -48,6 +50,40 @@ but one can easily run tests with prepared statements disabled using env vars :
48
50
 
49
51
  rake test_derby PREPARED_STATEMENTS=false
50
52
 
53
+ #### MySQL with Docker
54
+
55
+ The standard Docker MySQL image can be used for testing and development. Depending on your environment these commands
56
+ may need to be run as root.
57
+
58
+ Pull the image:
59
+
60
+ ```
61
+ sudo docker pull mysql
62
+ ```
63
+
64
+ Start up the database with a root password (we show a simple one here but pick one no one else knows):
65
+
66
+ ```
67
+ docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=testtest9 -d mysql
68
+ ```
69
+
70
+ The `mysql` client can be run through Docker as well:
71
+
72
+ ```sh
73
+ docker run -it --link mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
74
+ ```
75
+
76
+ Set up the database for the unit tests (you may need to replace 'localhost' with your container's IP):
77
+
78
+ ```sql
79
+ CREATE USER 'rails'@'localhost' IDENTIFIED BY 'testtest9';
80
+ CREATE DATABASE activerecord_unittest;
81
+ GRANT ALL PRIVILEGES ON activerecord_unittest.* TO 'rails'@'localhost';
82
+ CREATE DATABASE activerecord_unittest2;
83
+ GRANT ALL PRIVILEGES ON activerecord_unittest2.* TO 'rails'@'localhost';
84
+ ```
85
+
86
+ Then edit test/rails/config.yml for the appropriate configuration credentials.
51
87
 
52
88
  ### ActiveRecord (Rails) Tests
53
89
 
@@ -14,7 +14,7 @@ Gem::Specification.new do |gem|
14
14
  "AR-JDBC is a database adapter for Rails' ActiveRecord component " <<
15
15
  "designed to be used with JRuby built upon Java's JDBC API for " <<
16
16
  "database access. Provides (ActiveRecord) built-in adapters: MySQL, " <<
17
- "PostgreSQL, SQLite3, and SQLServer."
17
+ "PostgreSQL, and SQLite3."
18
18
 
19
19
  gem.require_paths = ["lib"]
20
20
 
@@ -41,7 +41,7 @@ Gem::Specification.new do |gem|
41
41
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
42
42
  gem.test_files = gem.files.grep(%r{^test/})
43
43
 
44
- gem.add_dependency 'activerecord', '~> 7.0'
44
+ gem.add_dependency 'activerecord', '~> 7.1.0'
45
45
 
46
46
  #gem.add_development_dependency 'test-unit', '2.5.4'
47
47
  #gem.add_development_dependency 'test-unit-context', '>= 0.3.0'
@@ -43,7 +43,7 @@ Gem::Specification.new do |gem|
43
43
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
44
44
  gem.test_files = gem.files.grep(%r{^test/})
45
45
 
46
- gem.add_dependency 'activerecord', '~> 7.0.0'
46
+ gem.add_dependency 'activerecord', '~> 7.1.3'
47
47
 
48
48
  #gem.add_development_dependency 'test-unit', '2.5.4'
49
49
  #gem.add_development_dependency 'test-unit-context', '>= 0.3.0'
@@ -6,29 +6,28 @@ module ArJdbc
6
6
 
7
7
  # @override
8
8
  def active?
9
- return unless @connection
10
- @connection.active?
9
+ @raw_connection&.active?
11
10
  end
12
11
 
13
12
  def really_valid?
14
- return unless @connection
15
- @connection.really_valid?
13
+ @raw_connection&.really_valid?
16
14
  end
17
15
 
18
16
  # @override
19
- def reconnect!
20
- super # clear_cache! && reset_transaction
21
- @connection.reconnect! # handles adapter.configure_connection
22
- end
17
+ # Removed to fix sqlite adapter, may be needed for others
18
+ # def reconnect!
19
+ # super # clear_cache! && reset_transaction
20
+ # @connection.reconnect! # handles adapter.configure_connection
21
+ # end
23
22
 
24
23
  # @override
25
24
  def disconnect!
26
25
  super # clear_cache! && reset_transaction
27
- return unless @connection
28
- @connection.disconnect!
26
+ @raw_connection&.disconnect!
29
27
  end
30
28
 
31
29
  # @override
30
+ # Removed to fix sqlite adapter, may be needed for others
32
31
  # def verify!(*ignored)
33
32
  # if @connection && @connection.jndi?
34
33
  # # checkout call-back does #reconnect!
@@ -37,6 +36,20 @@ module ArJdbc
37
36
  # end
38
37
  # end
39
38
 
39
+ # DIFFERENCE: we delve into jdbc shared code and this does self.class.new_client.
40
+ def connect
41
+ @raw_connection = jdbc_connection_class(@config[:adapter_spec]).new(@config, self)
42
+ @raw_connection.configure_connection
43
+ end
44
+
45
+ def reconnect
46
+ if active?
47
+ @raw_connection.rollback rescue nil
48
+ else
49
+ connect
50
+ end
51
+ end
52
+
40
53
  end
41
54
  end
42
55
  end
@@ -9,7 +9,7 @@ module ArJdbc
9
9
 
10
10
  attr_reader :config
11
11
 
12
- def initialize(connection, logger = nil, config = {})
12
+ def initialize(config)
13
13
  @config = config
14
14
 
15
15
  if self.class.equal? ActiveRecord::ConnectionAdapters::JdbcAdapter
@@ -18,11 +18,7 @@ module ArJdbc
18
18
  extend spec if spec
19
19
  end
20
20
 
21
- connection ||= jdbc_connection_class(config[:adapter_spec]).new(config, self)
22
-
23
- super(connection, logger, config) # AbstractAdapter
24
-
25
- connection.configure_connection # will call us (maybe)
21
+ super(config) # AbstractAdapter
26
22
  end
27
23
 
28
24
  # Retrieve the raw `java.sql.Connection` object.
@@ -56,6 +52,9 @@ module ArJdbc
56
52
  # swallow an ArJdbc / driver bug into an AR::StatementInvalid !
57
53
  return exception if exception.is_a?(Throwable)
58
54
 
55
+ # We create this exception in Java where we do not have access to the pool
56
+ exception.instance_variable_set(:@connection_pool, @pool) if exception.kind_of?(::ActiveRecord::JDBCError)
57
+
59
58
  case exception
60
59
  when SystemExit, SignalException, NoMemoryError then exception
61
60
  when ActiveModel::RangeError, TypeError, RuntimeError then exception