activerecord-jdbcas400-adapter 1.3.19 → 1.3.20
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/README.md +2 -2
- data/lib/arjdbc/as400.rb +1 -2
- data/lib/arjdbc/as400/adapter.rb +12 -11
- data/test/adapter_test.rb +13 -14
- metadata +22 -19
- data/lib/arjdbc/as400/system.rb +0 -38
- data/test/system_test.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a626eafcb49f65572a0b225f6c06881350d5113
|
4
|
+
data.tar.gz: 21d49dbbf66be37b547df5317c7e60d583e3df47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5756b10272558e6c2c0927f019546bc76c5ea3def1fc18ca34fd2d0875852a3f8eb695c6f318b03681ff5619bdacd46d48370b1f2ddd1eb77ed28aa91ee595bd
|
7
|
+
data.tar.gz: a023e55ac0d04531767a3322e5cb2bf3059287359d818bccae2ffa34aa6cf9c7c7e374247ba90f98f09bad4787444265f48365b7dab966fff1f396746dd9bc15
|
data/README.md
CHANGED
@@ -63,7 +63,7 @@ To use native DB2 connection (directly on IBM i JVM only), you can add this to d
|
|
63
63
|
```
|
64
64
|
This connection doesn't require credentials.
|
65
65
|
|
66
|
-
### Transaction isolation
|
66
|
+
### Transaction isolation: no commit
|
67
67
|
If your database supports setting the isolation level for a transaction, you can set it like so:
|
68
68
|
|
69
69
|
```ruby
|
@@ -89,7 +89,7 @@ To allow migrations with system naming, a configuration is added to adapter:
|
|
89
89
|
current_library: lib
|
90
90
|
```
|
91
91
|
|
92
|
-
The specified library will be used to define a schema during create_table migration.
|
92
|
+
The specified library will be used to define a schema during `create_table` migration.
|
93
93
|
It prevents creation of a table in QGPL.
|
94
94
|
|
95
95
|
If you want to use it with JNDI you can create a JNDI string and use erb in yaml to do something like this:
|
data/lib/arjdbc/as400.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'arjdbc'
|
2
2
|
require 'arjdbc/db2/adapter'
|
3
3
|
require 'arjdbc/as400/connection_methods'
|
4
|
-
require 'arjdbc/as400/system'
|
5
4
|
require 'arjdbc/as400/adapter'
|
6
5
|
|
7
6
|
# Register AS400 to database tasks
|
@@ -13,4 +12,4 @@ module ArJdbc
|
|
13
12
|
register_tasks(/as400/, DB2DatabaseTasks)
|
14
13
|
|
15
14
|
end
|
16
|
-
end
|
15
|
+
end
|
data/lib/arjdbc/as400/adapter.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module ArJdbc
|
2
2
|
module AS400
|
3
3
|
include DB2
|
4
|
-
include System
|
5
4
|
|
6
5
|
# @private
|
7
6
|
def self.extended(adapter); DB2.extended(adapter); end
|
@@ -37,7 +36,9 @@ module ArJdbc
|
|
37
36
|
# Set schema is it specified
|
38
37
|
def configure_connection
|
39
38
|
set_schema(config[:schema]) if config[:schema]
|
40
|
-
|
39
|
+
if config[:current_library]
|
40
|
+
execute_system_command("CHGCURLIB CURLIB(#{config[:current_library]})")
|
41
|
+
end
|
41
42
|
end
|
42
43
|
|
43
44
|
def os400_version
|
@@ -47,15 +48,15 @@ module ArJdbc
|
|
47
48
|
{ major: major, minor: minor }
|
48
49
|
end
|
49
50
|
|
50
|
-
# Do not return *LIBL
|
51
|
+
# Do not return *LIBL
|
51
52
|
def schema
|
52
|
-
db2_schema
|
53
|
+
db2_schema == '*LIBL' ? @current_library : db2_schema
|
53
54
|
end
|
54
55
|
|
55
56
|
def tables(name = nil)
|
56
57
|
# Do not perform search on all system
|
57
58
|
if system_naming?
|
58
|
-
name ||= current_library
|
59
|
+
name ||= @current_library
|
59
60
|
unless name
|
60
61
|
raise StandardError.new('Unable to retrieve tables without current library')
|
61
62
|
end
|
@@ -64,11 +65,6 @@ module ArJdbc
|
|
64
65
|
@connection.tables(nil, name)
|
65
66
|
end
|
66
67
|
|
67
|
-
# Prevent migration in QGPL
|
68
|
-
def supports_migrations?
|
69
|
-
!(system_naming? && !current_library?)
|
70
|
-
end
|
71
|
-
|
72
68
|
# If true, next_sequence_value is called before each insert statement
|
73
69
|
# to set the record's primary key.
|
74
70
|
# By default DB2 for i supports IDENTITY_VAL_LOCAL for tables that have
|
@@ -126,9 +122,14 @@ module ArJdbc
|
|
126
122
|
end
|
127
123
|
|
128
124
|
private
|
125
|
+
def execute_system_command(command)
|
126
|
+
command = quote(command)
|
127
|
+
execute("CALL qsys2.qcmdexc(#{command})")
|
128
|
+
end
|
129
|
+
|
129
130
|
# If naming is really in system mode CURRENT_SCHEMA is *LIBL
|
130
131
|
def system_naming?
|
131
|
-
|
132
|
+
db2_schema == '*LIBL'
|
132
133
|
end
|
133
134
|
|
134
135
|
# SET SCHEMA statement put connection in sql naming
|
data/test/adapter_test.rb
CHANGED
@@ -3,8 +3,8 @@ require 'test_helper'
|
|
3
3
|
class TestAdapter < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def test_schema
|
6
|
-
assert_equal(
|
7
|
-
assert_equal(system_connection.schema
|
6
|
+
assert_equal(config[:schema], connection.schema)
|
7
|
+
assert_equal(nil, system_connection.schema)
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_system_naming?
|
@@ -12,16 +12,6 @@ class TestAdapter < Test::Unit::TestCase
|
|
12
12
|
assert_true(system_connection.instance_eval {system_naming?})
|
13
13
|
end
|
14
14
|
|
15
|
-
def test_supports_migrations?
|
16
|
-
assert_true(connection.supports_migrations?)
|
17
|
-
|
18
|
-
system_connection.change_current_library('QGPL')
|
19
|
-
assert_true(system_connection.supports_migrations?)
|
20
|
-
|
21
|
-
system_connection.change_current_library(nil)
|
22
|
-
assert_false(system_connection.supports_migrations?)
|
23
|
-
end
|
24
|
-
|
25
15
|
def test_prefetch_primary_key?
|
26
16
|
begin
|
27
17
|
connection.execute('CREATE TABLE test_table (test_column INTEGER)')
|
@@ -66,14 +56,23 @@ class TestAdapter < Test::Unit::TestCase
|
|
66
56
|
|
67
57
|
connection.rename_column('test_table', 'test_column', 'new_test_column')
|
68
58
|
assert_not_nil(connection.columns('test_table').find { |column| column.name == 'new_test_column' })
|
69
|
-
assert_equal(connection.select_one('SELECT new_test_column FROM test_table')['new_test_column']
|
59
|
+
assert_equal(1, connection.select_one('SELECT new_test_column FROM test_table')['new_test_column'])
|
70
60
|
ensure
|
71
61
|
connection.execute('DROP TABLE test_table')
|
72
62
|
end
|
73
63
|
end
|
74
64
|
|
75
65
|
def test_transaction_isolation_levels
|
76
|
-
assert_equal(connection.transaction_isolation_levels.fetch(:no_commit)
|
66
|
+
assert_equal('NO COMMIT', connection.transaction_isolation_levels.fetch(:no_commit))
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_table_exists
|
70
|
+
begin
|
71
|
+
connection.execute('CREATE TABLE test_table (test_column INTEGER)')
|
72
|
+
assert_true(system_connection.table_exists?('test_table'))
|
73
|
+
ensure
|
74
|
+
connection.execute('DROP TABLE test_table')
|
75
|
+
end
|
77
76
|
end
|
78
77
|
|
79
78
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-jdbcas400-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sieger, Ola Bini, Pierrick Rouxel and JRuby contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
-
requirements:
|
16
|
-
- - '>='
|
17
|
-
- !ruby/object:Gem::Version
|
18
|
-
version: 3.0.0
|
19
|
-
name: activerecord
|
20
|
-
prerelease: false
|
21
|
-
type: :runtime
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 3.0.0
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
requirement: !ruby/object:Gem::Requirement
|
29
15
|
requirements:
|
@@ -80,6 +66,26 @@ dependencies:
|
|
80
66
|
- - '>='
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 3.0.0
|
75
|
+
- - <
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 5.0.0
|
78
|
+
name: activerecord
|
79
|
+
prerelease: false
|
80
|
+
type: :development
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 3.0.0
|
86
|
+
- - <
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 5.0.0
|
83
89
|
description: Install this gem to use AS/400 with JRuby on Rails.
|
84
90
|
email: nick@nicksieger.com, ola.bini@gmail.com
|
85
91
|
executables: []
|
@@ -94,11 +100,9 @@ files:
|
|
94
100
|
- lib/arjdbc/as400.rb
|
95
101
|
- lib/arjdbc/as400/adapter.rb
|
96
102
|
- lib/arjdbc/as400/connection_methods.rb
|
97
|
-
- lib/arjdbc/as400/system.rb
|
98
103
|
- lib/arjdbc/discover.rb
|
99
104
|
- test/adapter_test.rb
|
100
105
|
- test/database_tasks_test.rb
|
101
|
-
- test/system_test.rb
|
102
106
|
- test/test_helper.rb
|
103
107
|
homepage: https://github.com/pierrickrouxel/activerecord-jdbcas400-adapter
|
104
108
|
licenses:
|
@@ -127,5 +131,4 @@ summary: AS/400 JDBC adapter for JRuby on Rails.
|
|
127
131
|
test_files:
|
128
132
|
- test/adapter_test.rb
|
129
133
|
- test/database_tasks_test.rb
|
130
|
-
- test/system_test.rb
|
131
134
|
- test/test_helper.rb
|
data/lib/arjdbc/as400/system.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module ArJdbc
|
2
|
-
module AS400
|
3
|
-
module System
|
4
|
-
|
5
|
-
# Execute system command with QSYS.QCMDEXC
|
6
|
-
def execute_system_command(command)
|
7
|
-
length = command.length
|
8
|
-
command = quote(command)
|
9
|
-
execute("CALL QSYS.QCMDEXC(#{command}, CAST(#{length} AS DECIMAL(15, 5)))")
|
10
|
-
end
|
11
|
-
|
12
|
-
# Change current library
|
13
|
-
def change_current_library(current_library)
|
14
|
-
@current_library = current_library
|
15
|
-
# *CRTDFT is the nil equivalent for current library
|
16
|
-
current_library ||= '*CRTDFT'
|
17
|
-
execute_system_command("CHGCURLIB CURLIB(#{current_library})")
|
18
|
-
end
|
19
|
-
|
20
|
-
# Change libraries
|
21
|
-
def change_libraries(libraries)
|
22
|
-
libraries = libraries.nil? || libraries.size < 1 ? '*NONE' :libraries.join(' ')
|
23
|
-
execute_system_command("CHGLIBL LIBL(#{libraries})")
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns true if current library is configured
|
27
|
-
def current_library?
|
28
|
-
!current_library.nil?
|
29
|
-
end
|
30
|
-
|
31
|
-
# Returns the name current library
|
32
|
-
def current_library
|
33
|
-
@current_library
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
data/test/system_test.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestAdapter < Test::Unit::TestCase
|
4
|
-
def test_execute_system_command
|
5
|
-
assert_nothing_raised do
|
6
|
-
connection.execute_system_command('DSPJOBLOG')
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_change_current_library
|
11
|
-
connection = system_connection
|
12
|
-
assert_nothing_raised do
|
13
|
-
connection.change_current_library('QGPL')
|
14
|
-
connection.change_current_library(nil)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_current_library
|
19
|
-
connection = system_connection
|
20
|
-
connection.change_current_library('QSYS')
|
21
|
-
assert_equal(connection.current_library, 'QSYS')
|
22
|
-
assert_true(connection.current_library?)
|
23
|
-
|
24
|
-
connection.change_current_library(nil)
|
25
|
-
assert_nil(connection.current_library)
|
26
|
-
assert_false(connection.current_library?)
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_change_libraries
|
30
|
-
connection = system_connection
|
31
|
-
assert_nothing_raised do
|
32
|
-
connection.change_libraries(%w(QGPL QTEMP))
|
33
|
-
connection.change_libraries(nil)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|