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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b0b104f4e9d8fb204bc6249aa06448f5881292745123dd94c2def2eee9254dad
4
- data.tar.gz: 3e64e4089e520711b10ca37cb3b3404834c2b939d65a50898e19d1735c4f3d50
3
+ metadata.gz: b1bdc562c7440301244b1a6a48e97f9d5859bcfb10ff1ad1fdfef14c0bfbc47e
4
+ data.tar.gz: 843fcbe3aa8c55be30d7d07315980871e190340ed35938f1ca8e7feddf72f57a
5
5
  SHA512:
6
- metadata.gz: 6f100c25e14250e25e93ecadfe20f1bbe2c5ee1e42d3980924771111cc7ac5a094a3ab2f2db057bbd2ac8630ca195e15a60892fbc8dd47eb90ef2f4c8c324204
7
- data.tar.gz: 3ecae6463a95d48e9e1f9ef194fe8adde8333e39c74f9d90d405fd63acc64a59cbdcfb91b0fdea786ce1dca00f5dff93c142dbfaf8fef62a4465a8af65fae4bc
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"
4
+ pkg_version = "0.1.7"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "activerecord-advantage-adapter"
7
+ spec.name = 'activerecord-advantage-adapter'
8
8
  spec.version = pkg_version
9
- spec.authors = ["Edgar Sherman", "Jon Adams"]
10
- spec.email = ["advantage@sybase.com", "t12nslookup@googlemail.com"]
9
+ spec.authors = ['Edgar Sherman', 'Jon Adams']
10
+ spec.email = ['advantage@sybase.com', 't12nslookup@googlemail.com']
11
11
 
12
- spec.summary = %q{ActiveRecord driver for Advantage}
13
- spec.description = %q{ActiveRecord driver for the Advantage Database connector}
14
- spec.homepage = "http://devzone.advantagedatabase.com"
15
- spec.license = "Apache-2.0"
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["allowed_push_host"] = "https://rubygems.org"
20
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
21
21
 
22
- spec.metadata["homepage_uri"] = spec.homepage
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["source_code_uri"] = "https://github.com/t12nslookup/activerecord-advantage-adapter/"
25
- spec.metadata["changelog_uri"] = "https://github.com/t12nslookup/activerecord-advantage-adapter/CHANGELOG.md"
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 "RubyGems 2.0 or newer is required to protect against " \
28
- "public gem pushes."
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("..", __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", "~> 1.17"
43
- spec.add_development_dependency "rake", "~> 10.0"
44
- spec.add_development_dependency "rspec", "~> 3.0"
45
-
46
- spec.add_runtime_dependency "advantage", "~> 0.1", ">= 0.1.2"
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 "active_record/connection_adapters/abstract_adapter"
24
- require "arel/visitors/advantage.rb"
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 << "SELECT "
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) { |c, x|
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 << "ORDER BY "
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 = inject_join o.projections, 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 << " FROM "
41
+ collector << ' FROM '
41
42
  collector = visit o.source, collector
42
43
  end
43
44
 
44
45
  if o.wheres.any?
45
- collector << " WHERE "
46
- collector = inject_join o.wheres, collector, " AND "
46
+ collector << ' WHERE '
47
+ collector = inject_join o.wheres, collector, ' AND '
47
48
  end
48
49
 
49
50
  if o.groups.any?
50
- collector << "GROUP BY "
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
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: 2021-05-28 00:00:00.000000000 Z
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: '1.17'
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: '1.17'
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: '10.0'
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: '10.0'
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.4
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: []