arel_toolkit 0.3.0 → 0.4.4
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/.codeclimate.yml +3 -0
- data/.github/workflows/develop.yml +90 -0
- data/.github/workflows/master.yml +67 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +13 -5
- data/Appraisals +13 -0
- data/CHANGELOG.md +94 -5
- data/Gemfile +5 -0
- data/Gemfile.lock +62 -33
- data/Guardfile +4 -0
- data/README.md +67 -23
- data/Rakefile +11 -1
- data/arel_toolkit.gemspec +15 -6
- data/benchmark.rb +54 -0
- data/ext/pg_result_init/extconf.rb +52 -0
- data/ext/pg_result_init/pg_result_init.c +138 -0
- data/ext/pg_result_init/pg_result_init.h +6 -0
- data/gemfiles/active_record_6.gemfile +7 -0
- data/gemfiles/active_record_6.gemfile.lock +210 -0
- data/gemfiles/arel_gems.gemfile +10 -0
- data/gemfiles/arel_gems.gemfile.lock +284 -0
- data/gemfiles/default.gemfile +5 -0
- data/gemfiles/default.gemfile.lock +208 -0
- data/lib/arel/enhance.rb +17 -0
- data/lib/arel/enhance/context_enhancer/arel_table.rb +92 -0
- data/lib/arel/enhance/node.rb +232 -0
- data/lib/arel/enhance/path.rb +38 -0
- data/lib/arel/enhance/path_node.rb +26 -0
- data/lib/arel/enhance/query.rb +38 -0
- data/lib/arel/enhance/query_methods.rb +23 -0
- data/lib/arel/enhance/visitor.rb +97 -0
- data/lib/arel/extensions.rb +32 -6
- data/lib/arel/extensions/active_model_attribute_with_cast_value.rb +22 -0
- data/lib/arel/extensions/active_record_relation_query_attribute.rb +22 -0
- data/lib/arel/extensions/active_record_type_caster_connection.rb +7 -0
- data/lib/arel/extensions/active_record_type_caster_map.rb +7 -0
- data/lib/arel/extensions/array.rb +2 -9
- data/lib/arel/extensions/at_time_zone.rb +10 -3
- data/lib/arel/extensions/attributes_attribute.rb +47 -0
- data/lib/arel/extensions/binary.rb +7 -0
- data/lib/arel/extensions/bind_param.rb +15 -0
- data/lib/arel/extensions/bit_string.rb +2 -9
- data/lib/arel/extensions/case.rb +17 -0
- data/lib/arel/extensions/coalesce.rb +17 -3
- data/lib/arel/extensions/conflict.rb +9 -0
- data/lib/arel/extensions/contains.rb +27 -5
- data/lib/arel/extensions/current_catalog.rb +4 -0
- data/lib/arel/extensions/current_date.rb +4 -0
- data/lib/arel/extensions/current_of_expression.rb +2 -9
- data/lib/arel/extensions/current_role.rb +4 -0
- data/lib/arel/extensions/current_row.rb +7 -0
- data/lib/arel/extensions/current_schema.rb +4 -0
- data/lib/arel/extensions/current_user.rb +4 -0
- data/lib/arel/extensions/dealocate.rb +31 -0
- data/lib/arel/extensions/default_values.rb +4 -0
- data/lib/arel/extensions/delete_manager.rb +22 -6
- data/lib/arel/extensions/delete_statement.rb +46 -24
- data/lib/arel/extensions/dot.rb +11 -0
- data/lib/arel/extensions/exists.rb +59 -0
- data/lib/arel/extensions/extract_from.rb +3 -10
- data/lib/arel/extensions/factorial.rb +10 -2
- data/lib/arel/extensions/false.rb +7 -0
- data/lib/arel/extensions/function.rb +44 -14
- data/lib/arel/extensions/greatest.rb +17 -3
- data/lib/arel/extensions/indirection.rb +3 -12
- data/lib/arel/extensions/infer.rb +7 -7
- data/lib/arel/extensions/infix_operation.rb +17 -0
- data/lib/arel/extensions/insert_manager.rb +19 -3
- data/lib/arel/extensions/insert_statement.rb +31 -12
- data/lib/arel/extensions/into.rb +21 -0
- data/lib/arel/extensions/least.rb +17 -3
- data/lib/arel/extensions/named_argument.rb +3 -8
- data/lib/arel/extensions/named_function.rb +7 -0
- data/lib/arel/extensions/node.rb +10 -0
- data/lib/arel/extensions/ordering.rb +21 -6
- data/lib/arel/extensions/overlaps.rb +9 -0
- data/lib/arel/extensions/overlay.rb +9 -0
- data/lib/arel/extensions/position.rb +3 -8
- data/lib/arel/extensions/prepare.rb +39 -0
- data/lib/arel/extensions/range_function.rb +10 -2
- data/lib/arel/extensions/row.rb +3 -8
- data/lib/arel/extensions/select_core.rb +73 -0
- data/lib/arel/extensions/select_manager.rb +22 -6
- data/lib/arel/extensions/select_statement.rb +31 -9
- data/lib/arel/extensions/session_user.rb +4 -0
- data/lib/arel/extensions/set_to_default.rb +4 -0
- data/lib/arel/extensions/substring.rb +8 -0
- data/lib/arel/extensions/table.rb +43 -10
- data/lib/arel/extensions/time_with_precision.rb +6 -0
- data/lib/arel/extensions/to_sql.rb +27 -0
- data/lib/arel/extensions/top.rb +8 -0
- data/lib/arel/extensions/transaction.rb +3 -8
- data/lib/arel/extensions/tree_manager.rb +15 -0
- data/lib/arel/extensions/trim.rb +8 -0
- data/lib/arel/extensions/true.rb +7 -0
- data/lib/arel/extensions/type_cast.rb +7 -0
- data/lib/arel/extensions/unary.rb +7 -0
- data/lib/arel/extensions/unary_operation.rb +16 -0
- data/lib/arel/extensions/unknown.rb +4 -0
- data/lib/arel/extensions/update_manager.rb +22 -6
- data/lib/arel/extensions/update_statement.rb +36 -33
- data/lib/arel/extensions/user.rb +4 -0
- data/lib/arel/extensions/values_list.rb +15 -0
- data/lib/arel/extensions/variable_set.rb +9 -0
- data/lib/arel/extensions/variable_show.rb +3 -8
- data/lib/arel/middleware.rb +5 -1
- data/lib/arel/middleware/active_record_extension.rb +13 -0
- data/lib/arel/middleware/cache_accessor.rb +35 -0
- data/lib/arel/middleware/chain.rb +108 -33
- data/lib/arel/middleware/database_executor.rb +77 -0
- data/lib/arel/middleware/no_op_cache.rb +9 -0
- data/lib/arel/middleware/postgresql_adapter.rb +41 -5
- data/lib/arel/middleware/railtie.rb +15 -1
- data/lib/arel/middleware/result.rb +170 -0
- data/lib/arel/middleware/to_sql_executor.rb +15 -0
- data/lib/arel/middleware/to_sql_middleware.rb +33 -0
- data/lib/arel/sql_to_arel.rb +6 -3
- data/lib/arel/sql_to_arel/pg_query_visitor.rb +67 -38
- data/lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb +1 -1
- data/lib/arel/sql_to_arel/result.rb +17 -4
- data/lib/arel/transformer.rb +8 -0
- data/lib/arel/transformer/prefix_schema_name.rb +183 -0
- data/lib/arel/transformer/remove_active_record_info.rb +40 -0
- data/lib/arel/transformer/replace_table_with_subquery.rb +31 -0
- data/lib/arel_toolkit.rb +15 -2
- data/lib/arel_toolkit/version.rb +1 -1
- metadata +179 -42
- data/.travis.yml +0 -29
- data/lib/arel/extensions/generate_series.rb +0 -9
- data/lib/arel/extensions/rank.rb +0 -9
- data/lib/arel/extensions/unbound_column_reference.rb +0 -5
- data/lib/arel/sql_formatter.rb +0 -59
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
4
|
+
module Arel
|
|
5
|
+
module Visitors
|
|
6
|
+
class Dot
|
|
7
|
+
def visit_Arel_Nodes_BindParam(o)
|
|
8
|
+
visit_edge o, 'value'
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# rubocop:enable Naming/MethodName
|
|
15
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
@@ -3,21 +3,14 @@
|
|
|
3
3
|
|
|
4
4
|
module Arel
|
|
5
5
|
module Nodes
|
|
6
|
-
class BitString < Arel::Nodes::
|
|
7
|
-
attr_reader :str
|
|
8
|
-
|
|
9
|
-
def initialize(str)
|
|
10
|
-
super()
|
|
11
|
-
|
|
12
|
-
@str = str
|
|
13
|
-
end
|
|
6
|
+
class BitString < Arel::Nodes::Unary
|
|
14
7
|
end
|
|
15
8
|
end
|
|
16
9
|
|
|
17
10
|
module Visitors
|
|
18
11
|
class ToSql
|
|
19
12
|
def visit_Arel_Nodes_BitString(o, collector)
|
|
20
|
-
collector << "B'#{o.
|
|
13
|
+
collector << "B'#{o.expr[1..-1]}'"
|
|
21
14
|
end
|
|
22
15
|
end
|
|
23
16
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
4
|
+
module Arel
|
|
5
|
+
module Visitors
|
|
6
|
+
class Dot
|
|
7
|
+
def visit_Arel_Nodes_Case(o)
|
|
8
|
+
visit_edge o, 'case'
|
|
9
|
+
visit_edge o, 'conditions'
|
|
10
|
+
visit_edge o, 'default'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# rubocop:enable Naming/MethodName
|
|
17
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
@@ -1,9 +1,23 @@
|
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
1
4
|
module Arel
|
|
2
5
|
module Nodes
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
# https://www.postgresql.org/docs/10/functions-conditional.html
|
|
7
|
+
class Coalesce < Arel::Nodes::Unary
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module Visitors
|
|
12
|
+
class ToSql
|
|
13
|
+
def visit_Arel_Nodes_Coalesce(o, collector)
|
|
14
|
+
collector << 'COALESCE('
|
|
15
|
+
collector = inject_join(o.expr, collector, ', ')
|
|
16
|
+
collector << ')'
|
|
6
17
|
end
|
|
7
18
|
end
|
|
8
19
|
end
|
|
9
20
|
end
|
|
21
|
+
|
|
22
|
+
# rubocop:enable Naming/MethodName
|
|
23
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
@@ -40,6 +40,15 @@ module Arel
|
|
|
40
40
|
end
|
|
41
41
|
# rubocop:enable Metrics/AbcSize
|
|
42
42
|
end
|
|
43
|
+
|
|
44
|
+
class Dot
|
|
45
|
+
def visit_Arel_Nodes_Conflict(o)
|
|
46
|
+
visit_edge o, 'action'
|
|
47
|
+
visit_edge o, 'infer'
|
|
48
|
+
visit_edge o, 'values'
|
|
49
|
+
visit_edge o, 'wheres'
|
|
50
|
+
end
|
|
51
|
+
end
|
|
43
52
|
end
|
|
44
53
|
end
|
|
45
54
|
|
|
@@ -1,10 +1,32 @@
|
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
1
4
|
module Arel
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
if Gem.loaded_specs.key?('postgres_ext')
|
|
6
|
+
module Visitors
|
|
7
|
+
module ContainsPatch
|
|
8
|
+
def visit_Arel_Nodes_Contains(o, collector)
|
|
9
|
+
if o.left.is_a?(Arel::Attribute)
|
|
10
|
+
super
|
|
11
|
+
else
|
|
12
|
+
infix_value o, collector, ' @> '
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
PostgreSQL.prepend(ContainsPatch)
|
|
18
|
+
end
|
|
19
|
+
else
|
|
20
|
+
module Nodes
|
|
21
|
+
# https://www.postgresql.org/docs/9.1/functions-array.html
|
|
22
|
+
class Contains < Arel::Nodes::InfixOperation
|
|
23
|
+
def initialize(left, right)
|
|
24
|
+
super(:'@>', left, right)
|
|
25
|
+
end
|
|
7
26
|
end
|
|
8
27
|
end
|
|
9
28
|
end
|
|
10
29
|
end
|
|
30
|
+
|
|
31
|
+
# rubocop:enable Naming/MethodName
|
|
32
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
@@ -4,14 +4,7 @@
|
|
|
4
4
|
module Arel
|
|
5
5
|
module Nodes
|
|
6
6
|
# https://www.postgresql.org/docs/10/sql-update.html
|
|
7
|
-
class CurrentOfExpression < Arel::Nodes::
|
|
8
|
-
attr_accessor :cursor_name
|
|
9
|
-
|
|
10
|
-
def initialize(cursor_name)
|
|
11
|
-
super()
|
|
12
|
-
|
|
13
|
-
@cursor_name = cursor_name
|
|
14
|
-
end
|
|
7
|
+
class CurrentOfExpression < Arel::Nodes::Unary
|
|
15
8
|
end
|
|
16
9
|
end
|
|
17
10
|
|
|
@@ -19,7 +12,7 @@ module Arel
|
|
|
19
12
|
class ToSql
|
|
20
13
|
def visit_Arel_Nodes_CurrentOfExpression(o, collector)
|
|
21
14
|
collector << 'CURRENT OF '
|
|
22
|
-
collector << o.
|
|
15
|
+
collector << o.expr
|
|
23
16
|
end
|
|
24
17
|
end
|
|
25
18
|
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
4
|
+
module Arel
|
|
5
|
+
module Visitors
|
|
6
|
+
class Dot
|
|
7
|
+
def visit_Arel_Nodes_Dealocate(o)
|
|
8
|
+
visit_edge o, 'name'
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class ToSql
|
|
13
|
+
def visit_Arel_Nodes_Dealocate(o, collector)
|
|
14
|
+
collector << 'DEALLOCATE ' << (o.name || 'ALL')
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module Nodes
|
|
20
|
+
class Dealocate < Node
|
|
21
|
+
attr_reader :name
|
|
22
|
+
|
|
23
|
+
def initialize(name)
|
|
24
|
+
@name = name
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# rubocop:enable Naming/MethodName
|
|
31
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
@@ -1,9 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
4
|
+
module Arel
|
|
5
|
+
class DeleteManager < Arel::TreeManager
|
|
6
|
+
def ==(other)
|
|
7
|
+
other.is_a?(self.class) && @ast == other.ast && @ctx == other.ctx
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
protected
|
|
5
11
|
|
|
6
|
-
|
|
12
|
+
attr_reader :ctx
|
|
13
|
+
end
|
|
7
14
|
|
|
8
|
-
|
|
15
|
+
module Visitors
|
|
16
|
+
class Dot
|
|
17
|
+
def visit_Arel_DeleteManager(o)
|
|
18
|
+
visit_edge o, 'ast'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
9
22
|
end
|
|
23
|
+
|
|
24
|
+
# rubocop:enable Naming/MethodName
|
|
25
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|
|
@@ -3,18 +3,24 @@
|
|
|
3
3
|
|
|
4
4
|
module Arel
|
|
5
5
|
module Nodes
|
|
6
|
-
# https://www.postgresql.org/docs/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
# https://www.postgresql.org/docs/10/sql-delete.html
|
|
7
|
+
class DeleteStatement
|
|
8
|
+
module DeleteStatementExtension
|
|
9
|
+
attr_accessor :using
|
|
10
|
+
attr_accessor :with
|
|
11
|
+
attr_accessor :returning
|
|
12
|
+
attr_accessor :orders
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
old_initialize(relation, wheres)
|
|
14
|
+
def initialize(relation = nil, wheres = [])
|
|
15
|
+
super
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
@returning = []
|
|
18
|
+
@orders = []
|
|
19
|
+
@using = []
|
|
20
|
+
end
|
|
17
21
|
end
|
|
22
|
+
|
|
23
|
+
prepend DeleteStatementExtension
|
|
18
24
|
end
|
|
19
25
|
end
|
|
20
26
|
|
|
@@ -24,31 +30,47 @@ module Arel
|
|
|
24
30
|
def visit_Arel_Nodes_DeleteStatement(o, collector)
|
|
25
31
|
if o.with
|
|
26
32
|
collector = visit o.with, collector
|
|
27
|
-
collector <<
|
|
33
|
+
collector << ' '
|
|
28
34
|
end
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
if Gem.loaded_specs['activerecord'].version >= Gem::Version.new('6.0.0')
|
|
37
|
+
o = prepare_delete_statement(o)
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
if has_join_sources?(o)
|
|
40
|
+
collector << 'DELETE '
|
|
41
|
+
visit o.relation.left, collector
|
|
42
|
+
collector << ' FROM '
|
|
43
|
+
else
|
|
44
|
+
collector << 'DELETE FROM '
|
|
45
|
+
end
|
|
46
|
+
else
|
|
47
|
+
collector << 'DELETE FROM '
|
|
36
48
|
end
|
|
37
49
|
|
|
38
|
-
|
|
39
|
-
collector << WHERE
|
|
40
|
-
collector = inject_join o.wheres, collector, AND
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
unless o.returning.empty?
|
|
44
|
-
collector << ' RETURNING '
|
|
45
|
-
collector = inject_join o.returning, collector, ', '
|
|
46
|
-
end
|
|
50
|
+
collector = visit o.relation, collector
|
|
47
51
|
|
|
52
|
+
collect_nodes_for o.using, collector, ' USING ', ', '
|
|
53
|
+
collect_nodes_for o.wheres, collector, ' WHERE ', ' AND '
|
|
54
|
+
collect_nodes_for o.returning, collector, ' RETURNING ', ', '
|
|
55
|
+
collect_nodes_for o.orders, collector, ' ORDER BY '
|
|
48
56
|
maybe_visit o.limit, collector
|
|
49
57
|
end
|
|
50
58
|
# rubocop:enable Metrics/AbcSize
|
|
51
59
|
end
|
|
60
|
+
|
|
61
|
+
class Dot
|
|
62
|
+
module DeleteStatementExtension
|
|
63
|
+
def visit_Arel_Nodes_DeleteStatement(o)
|
|
64
|
+
super
|
|
65
|
+
|
|
66
|
+
visit_edge o, 'using'
|
|
67
|
+
visit_edge o, 'with'
|
|
68
|
+
visit_edge o, 'returning'
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
prepend(DeleteStatementExtension)
|
|
73
|
+
end
|
|
52
74
|
end
|
|
53
75
|
end
|
|
54
76
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# rubocop:disable Naming/MethodName
|
|
2
|
+
# rubocop:disable Naming/UncommunicativeMethodParamName
|
|
3
|
+
|
|
4
|
+
module Arel
|
|
5
|
+
module Nodes
|
|
6
|
+
# This is a copy of https://github.com/rails/arel/blob/v9.0.0/lib/arel/nodes/function.rb
|
|
7
|
+
# Only difference is the superclass, because EXISTS is not a function but a subquery expression.
|
|
8
|
+
# Semantic meaning is important when transforming the Arel using the enhanced AST,
|
|
9
|
+
# because EXISTS cannot be processed as a function. For example it does not have a schema
|
|
10
|
+
# like a normal function.
|
|
11
|
+
#
|
|
12
|
+
# To change the superclass we're removing the existing Exists class `Arel::Nodes::Exists`
|
|
13
|
+
# and recreating it extending from `Arel::Nodes::Unary`.
|
|
14
|
+
remove_const(:Exists)
|
|
15
|
+
|
|
16
|
+
# https://www.postgresql.org/docs/10/functions-subquery.html
|
|
17
|
+
class Exists < Arel::Nodes::Unary
|
|
18
|
+
include Arel::Predications
|
|
19
|
+
include Arel::WindowPredications
|
|
20
|
+
include Arel::OrderPredications
|
|
21
|
+
attr_accessor :expressions, :alias, :distinct
|
|
22
|
+
|
|
23
|
+
def initialize(expr, aliaz = nil)
|
|
24
|
+
@expressions = expr
|
|
25
|
+
@alias = aliaz && SqlLiteral.new(aliaz)
|
|
26
|
+
@distinct = false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def as(aliaz)
|
|
30
|
+
self.alias = SqlLiteral.new(aliaz)
|
|
31
|
+
self
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def hash
|
|
35
|
+
[@expressions, @alias, @distinct].hash
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def eql?(other)
|
|
39
|
+
self.class == other.class &&
|
|
40
|
+
expressions == other.expressions &&
|
|
41
|
+
self.alias == other.alias &&
|
|
42
|
+
distinct == other.distinct
|
|
43
|
+
end
|
|
44
|
+
alias == eql?
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
module Visitors
|
|
49
|
+
class Dot
|
|
50
|
+
def visit_Arel_Nodes_Exists(o)
|
|
51
|
+
visit_edge o, 'expressions'
|
|
52
|
+
visit_edge o, 'alias'
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# rubocop:enable Naming/MethodName
|
|
59
|
+
# rubocop:enable Naming/UncommunicativeMethodParamName
|