activerecord-jdbc-adapter 1.3.23 → 1.3.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +13 -0
- data/lib/arjdbc/db2/adapter.rb +21 -19
- data/lib/arjdbc/db2/as400.rb +10 -2
- data/lib/arjdbc/jdbc/adapter.rb +3 -0
- data/lib/arjdbc/mysql/adapter.rb +6 -2
- data/lib/arjdbc/oracle/adapter.rb +21 -1
- data/lib/arjdbc/oracle/connection_methods.rb +4 -0
- data/lib/arjdbc/tasks/database_tasks.rb +1 -1
- data/lib/arjdbc/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03de925ceee26187bae69a5e29fe1b3a0b23214b
|
4
|
+
data.tar.gz: b46c3b722e5399ce64b20cd949c07abed5170563
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4ddbaa31377d0a6168a9a2968c549018c4cdcd9db2d5320f4a1cb9e291dbf6d7cc8b6909da14e0b41e8e7da72cb04d3a7131a8cb80450debc2af6eaf8ade15e
|
7
|
+
data.tar.gz: faee7550a6863ec808c0024451af4632212509cbb7801f5434752790b7cf9bee037381cba269125c89dd0c80a6a860e2f72289f4b8658545db3c261a6f469310
|
data/History.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## 1.3.24 (09/24/17)
|
2
|
+
|
3
|
+
- [as400] Fixed ordering when limit and offset present (#789)
|
4
|
+
- [postgres] limit driver version correctly since > 9.4.1206 might break
|
5
|
+
- [db2] fixed issue with serialization not happening (#795)
|
6
|
+
resolves #725 (serialize with custom class not working on AR 4.2)
|
7
|
+
- reconnect!/disconnect! shall call super to reset cache/transaction state
|
8
|
+
- [oracle] some ~ enhanced adapter compatibility with configuration
|
9
|
+
- [mysql] support setting collation: xxx with config[:encoding] like AR 4.2
|
10
|
+
- [as400] Check if the exception thrown is a false-positive (#792)
|
11
|
+
- [as400] Added truncate functionality for DB2/AS400 (#793)
|
12
|
+
- [as400] Added DatabaseTasks for the as400 (#791)
|
13
|
+
|
1
14
|
## 1.3.23 (05/14/17)
|
2
15
|
|
3
16
|
- specify gem 'activerecord' < 5 since 5.x is not supported in 1.3.x
|
data/lib/arjdbc/db2/adapter.rb
CHANGED
@@ -363,6 +363,11 @@ module ArJdbc
|
|
363
363
|
if column.respond_to?(:primary) && column.primary && column.klass != String
|
364
364
|
return value.to_i.to_s
|
365
365
|
end
|
366
|
+
|
367
|
+
if column.respond_to?(:cast_type) && column.cast_type.is_a?(ActiveRecord::Type::Serialized)
|
368
|
+
return quote(column.cast_type.type_cast_for_database(value))
|
369
|
+
end if ::ActiveRecord::VERSION::MAJOR >= 4
|
370
|
+
|
366
371
|
if value && (column.type.to_sym == :decimal || column.type.to_sym == :integer)
|
367
372
|
return value.to_s
|
368
373
|
end
|
@@ -492,29 +497,26 @@ module ArJdbc
|
|
492
497
|
|
493
498
|
# @private shared with {Arel::Visitors::DB2}
|
494
499
|
def replace_limit_offset!(sql, limit, offset, orders = nil)
|
495
|
-
|
500
|
+
# Ordering is done somewhere before this method gets called
|
496
501
|
|
497
|
-
|
498
|
-
|
502
|
+
# Create the limit and offset sql
|
503
|
+
param_sql = ''
|
499
504
|
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
if sql.is_a?(String)
|
504
|
-
sql.sub!(/SELECT/i, start_sql)
|
505
|
-
sql << end_sql
|
506
|
-
else # AR 4.2 sql.class ... Arel::Collectors::Bind
|
507
|
-
sql.parts[0] = start_sql # sql.sub! /SELECT/i
|
508
|
-
sql.parts[ sql.parts.length ] = end_sql
|
509
|
-
end
|
505
|
+
if offset.present? && limit.present?
|
506
|
+
param_sql << " LIMIT #{limit} OFFSET #{offset} "
|
510
507
|
else
|
511
|
-
|
512
|
-
if
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
508
|
+
param_sql << " OFFSET #{offset}" if offset.present?
|
509
|
+
param_sql << if limit.present?
|
510
|
+
limit == 1 ? ' FETCH FIRST ROW ONLY' : " FETCH FIRST #{limit} ROWS ONLY"
|
511
|
+
end
|
512
|
+
end
|
513
|
+
|
514
|
+
if sql.is_a?(String)
|
515
|
+
sql << param_sql
|
516
|
+
else # AR 4.2 sql.class ... Arel::Collectors::Bind
|
517
|
+
sql.parts[sql.parts.length] = param_sql
|
517
518
|
end
|
519
|
+
|
518
520
|
sql
|
519
521
|
end
|
520
522
|
|
data/lib/arjdbc/db2/as400.rb
CHANGED
@@ -60,8 +60,11 @@ module ArJdbc
|
|
60
60
|
@connection.execute_update "call qsys.qcmdexc('QSYS/CHGJOB INQMSGRPY(*SYSRPYL)',0000000031.00000)"
|
61
61
|
@connection.execute_update "call qsys.qcmdexc('ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY(''I'')',0000000045.00000)"
|
62
62
|
rescue Exception => e
|
63
|
-
|
64
|
-
|
63
|
+
# Sometimes the exception can be a false-positive when we already ran the second command
|
64
|
+
unless e.message.include? 'Sequence number 9876 already defined in system reply list.'
|
65
|
+
raise "Could not call CHGJOB INQMSGRPY(*SYSRPYL) and ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY('I').\n" +
|
66
|
+
"Do you have authority to do this?\n\n#{e.inspect}"
|
67
|
+
end
|
65
68
|
end
|
66
69
|
|
67
70
|
begin
|
@@ -100,6 +103,11 @@ module ArJdbc
|
|
100
103
|
true
|
101
104
|
end
|
102
105
|
|
106
|
+
# AS400 does not support TRUNCATE command. Deleting everything from the table is should be close enough
|
107
|
+
def truncate(table_name, name = nil)
|
108
|
+
@connection.execute_update "DELETE FROM #{table_name}"
|
109
|
+
end
|
110
|
+
|
103
111
|
private
|
104
112
|
|
105
113
|
# @override
|
data/lib/arjdbc/jdbc/adapter.rb
CHANGED
@@ -296,12 +296,15 @@ module ActiveRecord
|
|
296
296
|
|
297
297
|
# @override
|
298
298
|
def reconnect!
|
299
|
+
super # clear_cache! && reset_transaction
|
299
300
|
@connection.reconnect! # handles adapter.configure_connection
|
300
301
|
@connection
|
301
302
|
end
|
302
303
|
|
303
304
|
# @override
|
304
305
|
def disconnect!
|
306
|
+
super # clear_cache! && reset_transaction
|
307
|
+
return unless @connection
|
305
308
|
@connection.disconnect!
|
306
309
|
end
|
307
310
|
|
data/lib/arjdbc/mysql/adapter.rb
CHANGED
@@ -57,11 +57,15 @@ module ArJdbc
|
|
57
57
|
if strict_mode? && ! variables.has_key?(:sql_mode)
|
58
58
|
variables[:sql_mode] = 'STRICT_ALL_TABLES' # SET SQL_MODE='STRICT_ALL_TABLES'
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
# NAMES does not have an equals sign, see
|
62
62
|
# http://dev.mysql.com/doc/refman/5.0/en/set-statement.html#id944430
|
63
63
|
# (trailing comma because variable_assignments will always have content)
|
64
|
-
|
64
|
+
if @config[:encoding]
|
65
|
+
encoding = "NAMES #{@config[:encoding]}"
|
66
|
+
encoding << " COLLATE #{@config[:collation]}" if @config[:collation]
|
67
|
+
encoding << ", "
|
68
|
+
end
|
65
69
|
|
66
70
|
# Gather up all of the SET variables...
|
67
71
|
variable_assignments = variables.map do |k, v|
|
@@ -57,6 +57,25 @@ module ArJdbc
|
|
57
57
|
# @see ActiveRecord::ConnectionAdapters::JdbcAdapter#jdbc_column_class
|
58
58
|
def jdbc_column_class; ::ActiveRecord::ConnectionAdapters::OracleColumn end
|
59
59
|
|
60
|
+
def configure_connection # mostly oracle-enhanced config compatibility
|
61
|
+
jdbc_connection = nil
|
62
|
+
if time_zone = config[:time_zone] # || ENV['TZ']
|
63
|
+
jdbc_connection ||= jdbc_connection(true)
|
64
|
+
jdbc_connection.setSessionTimeZone(time_zone)
|
65
|
+
end
|
66
|
+
|
67
|
+
cursor_sharing = config[:cursor_sharing] # || 'force'
|
68
|
+
execute "ALTER SESSION SET cursor_sharing = #{cursor_sharing}" if cursor_sharing
|
69
|
+
|
70
|
+
schema = config[:schema] && config[:schema].to_s
|
71
|
+
if schema.blank? # default schema owner
|
72
|
+
# @owner = username.upcase unless username.nil?
|
73
|
+
else
|
74
|
+
self.current_schema = schema
|
75
|
+
# @owner = schema
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
60
79
|
# @private
|
61
80
|
@@update_lob_values = true
|
62
81
|
|
@@ -943,10 +962,11 @@ module ActiveRecord::ConnectionAdapters
|
|
943
962
|
|
944
963
|
def initialize(*args)
|
945
964
|
::ArJdbc::Oracle.initialize!
|
946
|
-
super # configure_connection happens in super
|
947
965
|
|
948
966
|
@use_insert_returning = config.key?(:insert_returning) ?
|
949
967
|
self.class.type_cast_config_to_boolean(config[:insert_returning]) : nil
|
968
|
+
|
969
|
+
super # configure_connection happens in super
|
950
970
|
end
|
951
971
|
|
952
972
|
end
|
@@ -15,6 +15,10 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
15
15
|
unless config.key?(:statement_escape_processing)
|
16
16
|
config[:statement_escape_processing] = true
|
17
17
|
end
|
18
|
+
properties = ( config[:properties] ||= {} )
|
19
|
+
if prefetch_rows = config[:prefetch_rows] # || 100 (oracle-enhanced)
|
20
|
+
properties['defaultRowPrefetch'] = prefetch_rows
|
21
|
+
end
|
18
22
|
jdbc_connection(config)
|
19
23
|
end
|
20
24
|
alias_method :jdbcoracle_connection, :oracle_connection
|
@@ -39,7 +39,7 @@ module ArJdbc
|
|
39
39
|
register_tasks(/(oci|oracle)/, OracleDatabaseTasks)
|
40
40
|
register_tasks(/mssql/, MSSQLDatabaseTasks) # (built-in) alias
|
41
41
|
# tasks for custom (JDBC) adapters :
|
42
|
-
register_tasks(/db2/, DB2DatabaseTasks)
|
42
|
+
register_tasks(/(db2|as400)/, DB2DatabaseTasks)
|
43
43
|
register_tasks(/derby/, DerbyDatabaseTasks)
|
44
44
|
register_tasks(/h2/, H2DatabaseTasks)
|
45
45
|
register_tasks(/hsqldb/, HSQLDBDatabaseTasks)
|
data/lib/arjdbc/version.rb
CHANGED
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: 1.3.
|
4
|
+
version: 1.3.24
|
5
5
|
platform: ruby
|
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: 2017-
|
11
|
+
date: 2017-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -255,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
255
255
|
version: '0'
|
256
256
|
requirements: []
|
257
257
|
rubyforge_project: jruby-extras
|
258
|
-
rubygems_version: 2.
|
258
|
+
rubygems_version: 2.6.12
|
259
259
|
signing_key:
|
260
260
|
specification_version: 4
|
261
261
|
summary: JDBC adapter for ActiveRecord, for use within JRuby on Rails.
|