firebird_adapter 1.0.11 → 6.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b9ed25619cd3c099b40ffd5f26e0dd04a65d04371b0d2f2e150140fb2818e97
4
- data.tar.gz: 41f5d2662dfbcbb34ca5d460ad915085529b13c243aa7c19aa16c4a6b31a4155
3
+ metadata.gz: d16fdcec64294ee89e80963f70014774ca1e4ebe1689c567fd8797e2aed941e4
4
+ data.tar.gz: fd636ff0a5c785e5f72cfc7feb03b84204c8528b1b87cc63b7bdff6f6fb5c140
5
5
  SHA512:
6
- metadata.gz: 1ca09c67c4b0f0f4a4db1a2b66095effed0ddf8543cee472deebfc34e036c3c26ff2d351702edb145045d4754b54489f17eaa9f116d433f4883b9db943802355
7
- data.tar.gz: 783a146494f9f2bba1d4d7fa0d027443ce1a4e53636a21e5c3c4245f351e64ffc7e3c3012360172c9eac2173ef70fd53364c122b618aa5d093c8fb12154ec3e5
6
+ metadata.gz: 513b0ecade7b01947daca7d843abbcdda4a69adc636dae2666b3a17755df083a578500e502949f94d9acfa4c04b3e7a312dea28c65f18e96c0db0f15cf7d1625
7
+ data.tar.gz: 93c436220c68e31ef6b06c11132fa1bfb7975fe3f5d34aa95aa6ba0e1970f535e3a8129d2c4acd22c49589e332daa145765b322f9bda7c94a5ff1071d6886f8c
@@ -47,13 +47,14 @@ module ActiveRecord::ConnectionAdapters::Firebird::DatabaseStatements
47
47
 
48
48
  result.close
49
49
  ActiveRecord::Result.new(fields, rows)
50
- elsif name.ends_with?(' Destroy')
50
+ elsif name.end_with?(' Destroy')
51
51
  result
52
52
  else
53
53
  ActiveRecord::Result.new([], [])
54
54
  end
55
- rescue RangeError
56
- ActiveRecord::Result.new([], [])
55
+ rescue RangeError => e
56
+ return ActiveRecord::Result.new([], []) if sql.downcase.start_with? 'select'
57
+ raise e
57
58
  rescue Exception => e
58
59
  result.close if result.is_a?(Fb::Cursor)
59
60
  raise e.message.encode('UTF-8', @connection.encoding)
@@ -1,3 +1,5 @@
1
+ require 'active_support/core_ext/string/strip'
2
+
1
3
  module ActiveRecord::ConnectionAdapters::Firebird::SchemaStatements
2
4
 
3
5
  def tables(_name = nil)
@@ -42,8 +44,8 @@ module ActiveRecord::ConnectionAdapters::Firebird::SchemaStatements
42
44
  end
43
45
  end
44
46
 
45
- def remove_index(table_name, options = {})
46
- index_name = index_name_for_remove(table_name, options)
47
+ def remove_index(table_name, column, options = {})
48
+ index_name = index_name_for_remove(table_name, column, options)
47
49
  execute "DROP INDEX #{quote_column_name(index_name)}"
48
50
  end
49
51
 
@@ -1,63 +1,87 @@
1
- class Arel::Visitors::Firebird < Arel::Visitors::ToSql
1
+ module Arel
2
+ class SelectManager
3
+ attr_reader :parentheses_ignored
2
4
 
3
- private
5
+ def ignore_parentheses
6
+ @parentheses_ignored = true
7
+ self
8
+ end
9
+ end
4
10
 
5
- def visit_Arel_Nodes_SelectCore(o, collector, select_statement)
6
- collector << 'SELECT'
11
+ class Visitors::Firebird < Arel::Visitors::ToSql
12
+ private
7
13
 
8
- visit_Arel_Nodes_SelectOptions(select_statement, collector)
14
+ def visit_Arel_Nodes_SelectCore(o, collector, select_statement)
15
+ collector << 'SELECT'
9
16
 
10
- collector = maybe_visit o.top, collector
17
+ visit_Arel_Nodes_SelectOptions(select_statement, collector)
11
18
 
12
- collector = maybe_visit o.set_quantifier, collector
19
+ collector = collect_optimizer_hints(o, collector)
20
+ collector = maybe_visit o.set_quantifier, collector
13
21
 
14
- collect_nodes_for o.projections, collector, SPACE
22
+ collect_nodes_for o.projections, collector, ' '
15
23
 
16
- if o.source && !o.source.empty?
17
- collector << ' FROM '
18
- collector = visit o.source, collector
19
- end
24
+ if o.source && !o.source.empty?
25
+ collector << ' FROM '
26
+ collector = visit o.source, collector
27
+ end
28
+
29
+ collect_nodes_for o.wheres, collector, ' WHERE ', ' AND '
30
+ collect_nodes_for o.groups, collector, ' GROUP BY '
31
+ unless o.havings.empty?
32
+ collector << ' HAVING '
33
+ inject_join o.havings, collector, ' AND '
34
+ end
35
+ collect_nodes_for o.windows, collector, ' WINDOW '
20
36
 
21
- collect_nodes_for o.wheres, collector, WHERE, AND
22
- collect_nodes_for o.groups, collector, GROUP_BY
23
- unless o.havings.empty?
24
- collector << ' HAVING '
25
- inject_join o.havings, collector, AND
37
+ collector
26
38
  end
27
- collect_nodes_for o.windows, collector, WINDOW
28
39
 
29
- collector
30
- end
40
+ def visit_Arel_Nodes_SelectStatement o, collector
41
+ if o.with
42
+ collector = visit o.with, collector
43
+ collector << ' '
44
+ end
45
+
46
+ collector = o.cores.inject(collector) { |c,x|
47
+ visit_Arel_Nodes_SelectCore(x, c, o)
48
+ }
49
+
50
+ unless o.orders.empty?
51
+ collector << ' ORDER BY '
52
+ len = o.orders.length - 1
53
+ o.orders.each_with_index { |x, i|
54
+ collector = visit(x, collector)
55
+ collector << ', ' unless len == i
56
+ }
57
+ end
31
58
 
32
- def visit_Arel_Nodes_SelectStatement o, collector
33
- if o.with
34
- collector = visit o.with, collector
35
- collector << SPACE
59
+ collector
36
60
  end
37
61
 
38
- collector = o.cores.inject(collector) { |c,x|
39
- visit_Arel_Nodes_SelectCore(x, c, o)
40
- }
62
+ def visit_Arel_Nodes_Limit(o, collector)
63
+ collector << 'FIRST '
64
+ visit o.expr, collector
65
+ end
41
66
 
42
- unless o.orders.empty?
43
- collector << ORDER_BY
44
- len = o.orders.length - 1
45
- o.orders.each_with_index { |x, i|
46
- collector = visit(x, collector)
47
- collector << COMMA unless len == i
48
- }
67
+ def visit_Arel_Nodes_Offset(o, collector)
68
+ collector << 'SKIP '
69
+ visit o.expr, collector
49
70
  end
50
71
 
51
- collector
52
- end
72
+ def visit_Arel_SelectManager o, collector
73
+ return visit(o.ast, collector) if o.parentheses_ignored
53
74
 
54
- def visit_Arel_Nodes_Limit(o, collector)
55
- collector << 'FIRST '
56
- visit o.expr, collector
57
- end
75
+ collector << '('
76
+ visit(o.ast, collector) << ')'
77
+ end
78
+
79
+ def visit_Arel_Nodes_Union o, collector
80
+ infix_value(o, collector, ' UNION ')
81
+ end
58
82
 
59
- def visit_Arel_Nodes_Offset(o, collector)
60
- collector << 'SKIP '
61
- visit o.expr, collector
83
+ def visit_Arel_Nodes_UnionAll o, collector
84
+ infix_value(o, collector, ' UNION ALL ')
85
+ end
62
86
  end
63
- end
87
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firebird_adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fábio Rodrigues
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-07 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.1'
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.1'
26
+ version: '6.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: fb
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: 2.1.4
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: 2.1.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '2.3'
139
+ version: '2.7'
140
140
  required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - ">="
@@ -146,5 +146,5 @@ requirements: []
146
146
  rubygems_version: 3.0.3
147
147
  signing_key:
148
148
  specification_version: 4
149
- summary: ActiveRecord Firebird Adapter for Rails 5.
149
+ summary: ActiveRecord Firebird Adapter for Rails 6.
150
150
  test_files: []