activerecord-advantage-adapter 0.1.4 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/activerecord-advantage-adapter.gemspec +28 -29
- data/lib/active_record/connection_adapters/advantage_adapter.rb +42 -5
- data/lib/arel/visitors/advantage.rb +37 -12
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1bdc562c7440301244b1a6a48e97f9d5859bcfb10ff1ad1fdfef14c0bfbc47e
|
4
|
+
data.tar.gz: 843fcbe3aa8c55be30d7d07315980871e190340ed35938f1ca8e7feddf72f57a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 130731dda15fddc1d5f990b5fa8930e810f0c242893049beff250fee337530228c2dc893087fed2a0241183e6323317d99befdd44deb668197519a518e8047c5
|
7
|
+
data.tar.gz: 2336ed9446e64f67465074831efab9df081eb208056915d4b27780a90714f84c7690095b7856d25d237092e7fa03d4a74898f73326c35c2ea06558920fbc6c46
|
@@ -1,49 +1,48 @@
|
|
1
1
|
lib = File.expand_path("../lib", __FILE__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
|
4
|
-
pkg_version = "0.1.
|
4
|
+
pkg_version = "0.1.7"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'activerecord-advantage-adapter'
|
8
8
|
spec.version = pkg_version
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Edgar Sherman', 'Jon Adams']
|
10
|
+
spec.email = ['advantage@sybase.com', 't12nslookup@googlemail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
12
|
+
spec.summary = 'ActiveRecord driver for Advantage'
|
13
|
+
spec.description = 'ActiveRecord driver for the Advantage Database connector'
|
14
|
+
spec.homepage = 'http://devzone.advantagedatabase.com'
|
15
|
+
spec.license = 'Apache-2.0'
|
16
16
|
|
17
17
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
18
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
19
|
if spec.respond_to?(:metadata)
|
20
|
-
spec.metadata[
|
20
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
21
21
|
|
22
|
-
spec.metadata[
|
22
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
23
23
|
# Changed to the github project, as this is the actively maintained source, now.
|
24
|
-
spec.metadata[
|
25
|
-
spec.metadata[
|
24
|
+
spec.metadata['source_code_uri'] = 'https://github.com/t12nslookup/activerecord-advantage-adapter/'
|
25
|
+
spec.metadata['changelog_uri'] = 'https://github.com/t12nslookup/activerecord-advantage-adapter/blob/main/CHANGELOG.md'
|
26
26
|
else
|
27
|
-
raise
|
28
|
-
|
27
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
28
|
+
'public gem pushes.'
|
29
29
|
end
|
30
30
|
|
31
31
|
# Specify which files should be added to the gem when it is released.
|
32
32
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
33
|
-
spec.files = Dir.chdir(File.expand_path(
|
34
|
-
|
35
|
-
end
|
36
|
-
spec.files = Dir[
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
spec.require_paths = [
|
41
|
-
|
42
|
-
spec.add_development_dependency
|
43
|
-
spec.add_development_dependency
|
44
|
-
spec.add_development_dependency
|
45
|
-
|
46
|
-
spec.add_runtime_dependency
|
33
|
+
# spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
34
|
+
# `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
35
|
+
# end
|
36
|
+
spec.files = Dir['{test,lib}/**/*',
|
37
|
+
'LICENSE',
|
38
|
+
'README',
|
39
|
+
'activerecord-advantage-adapter.gemspec']
|
40
|
+
spec.require_paths = ['lib']
|
41
|
+
|
42
|
+
spec.add_development_dependency 'bundler', '~> 2.2.10'
|
43
|
+
spec.add_development_dependency 'rake', '~> 12.3.3'
|
44
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
45
|
+
|
46
|
+
spec.add_runtime_dependency 'advantage', '~> 0.1', '>= 0.1.2'
|
47
47
|
# spec.add_runtime_dependency 'activerecord', '>= 3.2.0'
|
48
|
-
|
49
48
|
end
|
@@ -20,8 +20,8 @@
|
|
20
20
|
#
|
21
21
|
#====================================================
|
22
22
|
|
23
|
-
require
|
24
|
-
require
|
23
|
+
require 'active_record/connection_adapters/abstract_adapter'
|
24
|
+
require 'arel/visitors/advantage'
|
25
25
|
|
26
26
|
# Singleton class to hold a valid instance of the AdvantageInterface across all connections
|
27
27
|
class ADS
|
@@ -62,6 +62,23 @@ module ActiveRecord
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
# copied and modified from "relation/calculations.rb"
|
66
|
+
module Calculations
|
67
|
+
def count(column_name = nil)
|
68
|
+
if block_given?
|
69
|
+
unless column_name.nil?
|
70
|
+
raise ArgumentError, "Column name argument is not supported when a block is passed."
|
71
|
+
end
|
72
|
+
super()
|
73
|
+
elsif column_name.nil?
|
74
|
+
# ADS doesn't like counting multiple columns, so if there is no column, force the primary_key
|
75
|
+
calculate(:count, self.primary_key)
|
76
|
+
else
|
77
|
+
calculate(:count, column_name)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
65
82
|
module ConnectionAdapters
|
66
83
|
class AdvantageException < StandardError
|
67
84
|
attr_reader :errno
|
@@ -240,7 +257,7 @@ module ActiveRecord
|
|
240
257
|
log(sql, 'delete', binds) { exec_query(sql, binds) }
|
241
258
|
end
|
242
259
|
|
243
|
-
def exec_query(sql, name = "SQL", _binds = [])
|
260
|
+
def exec_query(sql, name = "SQL", _binds = [], **_options)
|
244
261
|
cols, record = execute(sql, name)
|
245
262
|
ActiveRecord::Result.new(cols, record)
|
246
263
|
end
|
@@ -433,12 +450,32 @@ SQL
|
|
433
450
|
execute "ALTER TABLE #{quote_table_name(table_name)} DROP #{quote_column_name(column_name)}"
|
434
451
|
end
|
435
452
|
|
453
|
+
if Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR < 2
|
454
|
+
def combine_bind_parameters(
|
455
|
+
from_clause: [],
|
456
|
+
join_clause: [],
|
457
|
+
where_clause: [],
|
458
|
+
having_clause: [],
|
459
|
+
limit: nil,
|
460
|
+
offset: nil
|
461
|
+
) # :nodoc:
|
462
|
+
result = []
|
463
|
+
result << limit if limit
|
464
|
+
result += from_clause if from_clause.any?
|
465
|
+
result += join_clause if join_clause.any?
|
466
|
+
result += where_clause if where_clause.any?
|
467
|
+
result += having_clause if having_clause.any?
|
468
|
+
result << offset if offset
|
469
|
+
result
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
436
473
|
protected
|
437
474
|
|
438
475
|
# Execute a query
|
439
|
-
def select(sql, name = nil, binds = []) #:nodoc:
|
476
|
+
def select(sql, name = nil, binds = [], **options) #:nodoc:
|
440
477
|
if Rails::VERSION::MAJOR >= 4
|
441
|
-
exec_query(sql, name, binds)
|
478
|
+
exec_query(sql, name, binds, **options)
|
442
479
|
else
|
443
480
|
exec_query(sql, name, binds).to_hash
|
444
481
|
end
|
@@ -13,7 +13,7 @@ module Arel
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def visit_Arel_Nodes_Limit(o, collector)
|
16
|
-
collector << "TOP
|
16
|
+
collector << "TOP "
|
17
17
|
visit o.expr, collector
|
18
18
|
collector << " "
|
19
19
|
collector
|
@@ -21,38 +21,63 @@ module Arel
|
|
21
21
|
|
22
22
|
# copied from informix.rb
|
23
23
|
def visit_Arel_Nodes_SelectStatement(o, collector)
|
24
|
-
collector <<
|
24
|
+
collector << 'SELECT '
|
25
25
|
collector = maybe_visit o.limit, collector
|
26
26
|
collector = maybe_visit o.offset, collector
|
27
|
-
collector = o.cores.inject(collector)
|
27
|
+
collector = o.cores.inject(collector) do |c, x|
|
28
28
|
visit_Arel_Nodes_SelectCore x, c
|
29
|
-
|
29
|
+
end
|
30
30
|
if o.orders.any?
|
31
|
-
collector <<
|
32
|
-
collector = inject_join o.orders, collector,
|
31
|
+
collector << ' ORDER BY '
|
32
|
+
collector = inject_join o.orders, collector, ', '
|
33
33
|
end
|
34
34
|
collector
|
35
35
|
end
|
36
36
|
|
37
37
|
def visit_Arel_Nodes_SelectCore(o, collector)
|
38
|
-
collector =
|
38
|
+
collector = maybe_visit o.set_quantifier, collector
|
39
|
+
collector = inject_join o.projections, collector, ', '
|
39
40
|
if o.source && !o.source.empty?
|
40
|
-
collector <<
|
41
|
+
collector << ' FROM '
|
41
42
|
collector = visit o.source, collector
|
42
43
|
end
|
43
44
|
|
44
45
|
if o.wheres.any?
|
45
|
-
collector <<
|
46
|
-
collector = inject_join o.wheres, collector,
|
46
|
+
collector << ' WHERE '
|
47
|
+
collector = inject_join o.wheres, collector, ' AND '
|
47
48
|
end
|
48
49
|
|
49
50
|
if o.groups.any?
|
50
|
-
collector <<
|
51
|
-
collector = inject_join o.groups, collector,
|
51
|
+
collector << ' GROUP BY '
|
52
|
+
collector = inject_join o.groups, collector, ', '
|
52
53
|
end
|
53
54
|
|
54
55
|
collector
|
55
56
|
end
|
57
|
+
|
58
|
+
def visit_Arel_Nodes_Distinct(o, collector)
|
59
|
+
collector << 'DISTINCT '
|
60
|
+
end
|
61
|
+
|
62
|
+
# Rails version > 5?
|
63
|
+
def unboundable?(value)
|
64
|
+
value.respond_to?(:unboundable?) && value.unboundable?
|
65
|
+
end
|
66
|
+
|
67
|
+
def visit_Arel_Nodes_NotEqual(o, collector)
|
68
|
+
right = o.right
|
69
|
+
|
70
|
+
return collector << ' 1=1' if unboundable?(right)
|
71
|
+
|
72
|
+
collector = visit o.left, collector
|
73
|
+
|
74
|
+
if right.nil?
|
75
|
+
collector << ' IS NOT NULL'
|
76
|
+
else
|
77
|
+
collector << ' <> '
|
78
|
+
visit right, collector
|
79
|
+
end
|
80
|
+
end
|
56
81
|
else
|
57
82
|
# Rails 3 or lower
|
58
83
|
def visit_Arel_Nodes_Offset(o)
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-advantage-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edgar Sherman
|
8
8
|
- Jon Adams
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-05-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 2.2.10
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 2.2.10
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 12.3.3
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 12.3.3
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,8 +94,8 @@ metadata:
|
|
94
94
|
allowed_push_host: https://rubygems.org
|
95
95
|
homepage_uri: http://devzone.advantagedatabase.com
|
96
96
|
source_code_uri: https://github.com/t12nslookup/activerecord-advantage-adapter/
|
97
|
-
changelog_uri: https://github.com/t12nslookup/activerecord-advantage-adapter/CHANGELOG.md
|
98
|
-
post_install_message:
|
97
|
+
changelog_uri: https://github.com/t12nslookup/activerecord-advantage-adapter/blob/main/CHANGELOG.md
|
98
|
+
post_install_message:
|
99
99
|
rdoc_options: []
|
100
100
|
require_paths:
|
101
101
|
- lib
|
@@ -110,8 +110,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '0'
|
112
112
|
requirements: []
|
113
|
-
rubygems_version: 3.1.
|
114
|
-
signing_key:
|
113
|
+
rubygems_version: 3.1.6
|
114
|
+
signing_key:
|
115
115
|
specification_version: 4
|
116
116
|
summary: ActiveRecord driver for Advantage
|
117
117
|
test_files: []
|