arel_toolkit 0.4.0 → 0.4.5
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/.github/workflows/coverage.yml +48 -0
- data/.github/workflows/test.yml +65 -0
- data/.gitignore +6 -1
- data/Appraisals +4 -0
- data/CHANGELOG.md +87 -7
- data/Gemfile.lock +50 -39
- data/Guardfile +4 -0
- data/README.md +25 -11
- data/Rakefile +11 -1
- data/arel_toolkit.gemspec +10 -5
- 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.lock +28 -18
- data/gemfiles/default.gemfile.lock +30 -20
- data/lib/arel/enhance.rb +1 -0
- data/lib/arel/enhance/context_enhancer/arel_table.rb +18 -1
- data/lib/arel/enhance/node.rb +71 -28
- data/lib/arel/enhance/query.rb +2 -0
- data/lib/arel/enhance/query_methods.rb +23 -0
- data/lib/arel/enhance/visitor.rb +19 -3
- data/lib/arel/extensions.rb +8 -2
- 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/attributes_attribute.rb +47 -0
- data/lib/arel/extensions/bind_param.rb +15 -0
- data/lib/arel/extensions/coalesce.rb +17 -3
- data/lib/arel/extensions/delete_statement.rb +20 -15
- data/lib/arel/extensions/exists.rb +59 -0
- data/lib/arel/extensions/function.rb +3 -2
- data/lib/arel/extensions/greatest.rb +17 -3
- data/lib/arel/extensions/infer.rb +1 -1
- data/lib/arel/extensions/insert_statement.rb +3 -3
- data/lib/arel/extensions/least.rb +17 -3
- data/lib/arel/extensions/node.rb +10 -0
- data/lib/arel/extensions/range_function.rb +10 -2
- data/lib/arel/extensions/select_core.rb +22 -7
- data/lib/arel/extensions/top.rb +8 -0
- data/lib/arel/extensions/tree_manager.rb +5 -0
- data/lib/arel/extensions/update_statement.rb +9 -23
- 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 +110 -31
- 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 +6 -2
- 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/pg_query_visitor.rb +34 -33
- data/lib/arel/sql_to_arel/result.rb +19 -2
- data/lib/arel/transformer.rb +2 -1
- data/lib/arel/transformer/prefix_schema_name.rb +183 -0
- data/lib/arel/transformer/remove_active_record_info.rb +2 -4
- data/lib/arel/transformer/replace_table_with_subquery.rb +31 -0
- data/lib/arel_toolkit.rb +7 -1
- data/lib/arel_toolkit/version.rb +1 -1
- metadata +101 -37
- data/.travis.yml +0 -34
- data/lib/arel/extensions/generate_series.rb +0 -9
- data/lib/arel/extensions/rank.rb +0 -9
- data/lib/arel/transformer/add_schema_to_table.rb +0 -26
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
module Arel
|
|
2
2
|
module SqlToArel
|
|
3
3
|
class Result < Array
|
|
4
|
-
def to_sql
|
|
5
|
-
|
|
4
|
+
def to_sql(engine = Arel::Table.engine)
|
|
5
|
+
sql, _binds = to_sql_and_binds(engine)
|
|
6
|
+
sql
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def to_sql_and_binds(engine = Arel::Table.engine)
|
|
10
|
+
sql_collection = []
|
|
11
|
+
binds_collection = []
|
|
12
|
+
|
|
13
|
+
each do |item|
|
|
14
|
+
sql, binds = item.to_sql_and_binds(engine)
|
|
15
|
+
sql_collection << sql
|
|
16
|
+
binds_collection.concat(binds)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
[
|
|
20
|
+
sql_collection.join('; '),
|
|
21
|
+
binds_collection,
|
|
22
|
+
]
|
|
6
23
|
end
|
|
7
24
|
|
|
8
25
|
def map(&block)
|
data/lib/arel/transformer.rb
CHANGED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
module Arel
|
|
2
|
+
module Transformer
|
|
3
|
+
class PrefixSchemaName
|
|
4
|
+
PG_CATALOG = 'pg_catalog'.freeze
|
|
5
|
+
DEFAULT_SCHEMA_PRIORITY = ['public', PG_CATALOG].freeze
|
|
6
|
+
|
|
7
|
+
attr_reader :object_mapping
|
|
8
|
+
attr_reader :schema_priority
|
|
9
|
+
|
|
10
|
+
def initialize(
|
|
11
|
+
schema_priority = DEFAULT_SCHEMA_PRIORITY,
|
|
12
|
+
override_object_mapping = {}
|
|
13
|
+
)
|
|
14
|
+
@schema_priority = schema_priority
|
|
15
|
+
@object_mapping = database_object_mapping.merge(override_object_mapping)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def call(arel, next_middleware)
|
|
19
|
+
tree = Arel.enhance(arel)
|
|
20
|
+
update_arel_tables(tree)
|
|
21
|
+
update_typecasts(tree)
|
|
22
|
+
update_functions(tree)
|
|
23
|
+
|
|
24
|
+
next_middleware.call tree
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def update_arel_tables(tree)
|
|
30
|
+
tree.query(
|
|
31
|
+
class: Arel::Table,
|
|
32
|
+
schema_name: nil,
|
|
33
|
+
context: { range_variable: true },
|
|
34
|
+
).each do |node|
|
|
35
|
+
schema_name = schema_name_from_object_name(node['name'].object.to_s)
|
|
36
|
+
node['schema_name'].replace(schema_name)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def update_typecasts(tree)
|
|
41
|
+
tree.query(
|
|
42
|
+
class: Arel::Nodes::TypeCast,
|
|
43
|
+
type_name: 'regclass',
|
|
44
|
+
).each do |node|
|
|
45
|
+
update_typecast_node(node)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def update_typecast_node(node)
|
|
50
|
+
table_name = table_name_from_arel_node(node['arg'].object)
|
|
51
|
+
reference_parts = table_name.split('.')
|
|
52
|
+
|
|
53
|
+
case reference_parts.length
|
|
54
|
+
when 1
|
|
55
|
+
schema_name = schema_name_from_object_name(table_name)
|
|
56
|
+
reference_parts.unshift(schema_name)
|
|
57
|
+
node['arg']['expr'].replace(reference_parts.join('.'))
|
|
58
|
+
when 2
|
|
59
|
+
node # Do nothing
|
|
60
|
+
else
|
|
61
|
+
raise "Don't know how to handle `#{reference_parts.length}` parts in " \
|
|
62
|
+
"`#{reference_parts}` for sql `#{node.to_sql}`"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def update_functions(tree)
|
|
67
|
+
tree.query(
|
|
68
|
+
class: Arel::Enhance::QueryMethods.in_ancestors?(Arel::Nodes::Function),
|
|
69
|
+
schema_name: nil,
|
|
70
|
+
).each do |node|
|
|
71
|
+
update_function_node(node)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def update_function_node(node)
|
|
76
|
+
object_name = if node.object.is_a?(Arel::Nodes::NamedFunction)
|
|
77
|
+
node['name'].object.downcase
|
|
78
|
+
else
|
|
79
|
+
node.object.class.to_s.demodulize.underscore
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
schema_name = schema_name_from_object_name(object_name)
|
|
83
|
+
node['schema_name'].replace(schema_name)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def table_name_from_arel_node(arel_node)
|
|
87
|
+
case arel_node
|
|
88
|
+
when Arel::Nodes::Quoted
|
|
89
|
+
arel_node.expr
|
|
90
|
+
else
|
|
91
|
+
raise "Unknown node `#{table_name}` for `#{node.inspect}`"
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def schema_name_from_object_name(table_name)
|
|
96
|
+
table_name = unquote_string(table_name)
|
|
97
|
+
possible_schemas = object_mapping[table_name]
|
|
98
|
+
|
|
99
|
+
if possible_schemas.nil?
|
|
100
|
+
raise "Object `#{table_name}` does not exist in the object_mapping and cannot be prefixed"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
schema_name = schema_priority.find do |possible_schema_name|
|
|
104
|
+
possible_schemas.include?(possible_schema_name)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
if schema_name.nil?
|
|
108
|
+
raise "Could not find a schema name for table `#{table_name}`.\n" \
|
|
109
|
+
"Current schema priority is `#{schema_priority}`.\n" \
|
|
110
|
+
"Possible schemas are `#{possible_schemas}`."
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# We don't need to prefix nodes with `pg_catalog`, because that's the default
|
|
114
|
+
# even if the search_path does not include `pg_catalog`.
|
|
115
|
+
return nil if schema_name == PG_CATALOG
|
|
116
|
+
|
|
117
|
+
schema_name
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# https://www.rubydoc.info/github/rubyworks/facets/String:unquote
|
|
121
|
+
def unquote_string(string)
|
|
122
|
+
case string[0, 1]
|
|
123
|
+
when "'", '"', '`'
|
|
124
|
+
string[0] = ''
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
case string[-1, 1]
|
|
128
|
+
when "'", '"', '`'
|
|
129
|
+
string[-1] = ''
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
string
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def database_object_mapping
|
|
136
|
+
mapping = {}
|
|
137
|
+
update_mapping mapping, database_tables
|
|
138
|
+
update_mapping mapping, database_views
|
|
139
|
+
update_mapping mapping, database_materialized_views
|
|
140
|
+
update_mapping mapping, database_functions
|
|
141
|
+
|
|
142
|
+
mapping
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def update_mapping(mapping, objects)
|
|
146
|
+
objects.each do |object|
|
|
147
|
+
name = object.fetch('object_name').to_s.downcase
|
|
148
|
+
mapping[name] ||= []
|
|
149
|
+
mapping[name] << object.fetch('schema_name').to_s
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def database_tables
|
|
154
|
+
connection.execute(
|
|
155
|
+
'SELECT tablename AS object_name, schemaname AS schema_name FROM pg_tables',
|
|
156
|
+
)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def database_views
|
|
160
|
+
connection.execute(
|
|
161
|
+
'SELECT viewname AS object_name, schemaname AS schema_name FROM pg_views',
|
|
162
|
+
)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def database_materialized_views
|
|
166
|
+
connection.execute(
|
|
167
|
+
'SELECT matviewname AS object_name, schemaname AS schema_name FROM pg_matviews',
|
|
168
|
+
)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def database_functions
|
|
172
|
+
connection.execute(
|
|
173
|
+
'SELECT pg_proc.proname AS object_name, pg_namespace.nspname AS schema_name ' \
|
|
174
|
+
'FROM pg_proc INNER JOIN pg_namespace ON pg_proc.pronamespace = pg_namespace.oid',
|
|
175
|
+
)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def connection
|
|
179
|
+
Arel::Table.engine.connection
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
@@ -2,7 +2,7 @@ module Arel
|
|
|
2
2
|
module Transformer
|
|
3
3
|
class RemoveActiveRecordInfo
|
|
4
4
|
class << self
|
|
5
|
-
def call(arel,
|
|
5
|
+
def call(arel, next_middleware)
|
|
6
6
|
tree = Arel.enhance(arel)
|
|
7
7
|
|
|
8
8
|
tree.query(class: Arel::Table).each do |node|
|
|
@@ -15,7 +15,7 @@ module Arel
|
|
|
15
15
|
)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
tree.object
|
|
18
|
+
next_middleware.call tree.object
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
private
|
|
@@ -30,8 +30,6 @@ module Arel
|
|
|
30
30
|
Arel::Nodes::TypeCast.new(Arel::Nodes::Quoted.new('t'), 'bool')
|
|
31
31
|
when FalseClass
|
|
32
32
|
Arel::Nodes::TypeCast.new(Arel::Nodes::Quoted.new('f'), 'bool')
|
|
33
|
-
when Float
|
|
34
|
-
value
|
|
35
33
|
else
|
|
36
34
|
raise "Unknown value cast `#{value}` with class `#{value.class}`"
|
|
37
35
|
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Arel
|
|
2
|
+
module Transformer
|
|
3
|
+
class ReplaceTableWithSubquery
|
|
4
|
+
attr_reader :subquery_for_table
|
|
5
|
+
|
|
6
|
+
def initialize(subquery_for_table)
|
|
7
|
+
@subquery_for_table = subquery_for_table
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call(arel, next_middleware)
|
|
11
|
+
tree = Arel.enhance(arel)
|
|
12
|
+
update_arel_tables(tree)
|
|
13
|
+
next_middleware.call tree
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def update_arel_tables(tree)
|
|
19
|
+
tree.query(
|
|
20
|
+
class: Arel::Table,
|
|
21
|
+
context: { range_variable: true },
|
|
22
|
+
schema_name: nil,
|
|
23
|
+
).each do |node|
|
|
24
|
+
if (subquery = subquery_for_table.call(node.name.value))
|
|
25
|
+
node.replace subquery.as(node.name.value)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/arel_toolkit.rb
CHANGED
|
@@ -3,9 +3,15 @@ require 'postgres_ext' if Gem.loaded_specs.key?('postgres_ext')
|
|
|
3
3
|
require 'active_record_upsert' if Gem.loaded_specs.key?('active_record_upsert')
|
|
4
4
|
require 'pg_search' if Gem.loaded_specs.key?('pg_search')
|
|
5
5
|
require 'rails/railtie' if Gem.loaded_specs.key?('railties')
|
|
6
|
+
require 'arel'
|
|
7
|
+
require 'active_record'
|
|
8
|
+
require 'active_record/connection_adapters/postgresql_adapter'
|
|
6
9
|
|
|
7
10
|
require 'arel_toolkit/version'
|
|
8
|
-
|
|
11
|
+
|
|
12
|
+
require 'pg'
|
|
13
|
+
require 'arel_toolkit/pg_result_init'
|
|
14
|
+
|
|
9
15
|
require 'arel/extensions'
|
|
10
16
|
require 'arel/sql_to_arel'
|
|
11
17
|
require 'arel/middleware'
|
data/lib/arel_toolkit/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,43 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: arel_toolkit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maarten
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: arel
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 9.0.0
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: 9.0.0
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: activerecord
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
30
16
|
requirements:
|
|
31
|
-
- - "
|
|
17
|
+
- - ">="
|
|
32
18
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
19
|
+
version: '0'
|
|
34
20
|
type: :runtime
|
|
35
21
|
prerelease: false
|
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
23
|
requirements:
|
|
38
|
-
- - "
|
|
24
|
+
- - ">="
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
26
|
+
version: '0'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: pg
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,14 +44,14 @@ dependencies:
|
|
|
58
44
|
requirements:
|
|
59
45
|
- - "~>"
|
|
60
46
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 1.
|
|
47
|
+
version: '1.3'
|
|
62
48
|
type: :runtime
|
|
63
49
|
prerelease: false
|
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
51
|
requirements:
|
|
66
52
|
- - "~>"
|
|
67
53
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 1.
|
|
54
|
+
version: '1.3'
|
|
69
55
|
- !ruby/object:Gem::Dependency
|
|
70
56
|
name: bundler
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,28 +86,42 @@ dependencies:
|
|
|
100
86
|
requirements:
|
|
101
87
|
- - "~>"
|
|
102
88
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 1.
|
|
89
|
+
version: '1.15'
|
|
104
90
|
type: :development
|
|
105
91
|
prerelease: false
|
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
93
|
requirements:
|
|
108
94
|
- - "~>"
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 1.
|
|
96
|
+
version: '1.15'
|
|
111
97
|
- !ruby/object:Gem::Dependency
|
|
112
98
|
name: rake
|
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
|
114
100
|
requirements:
|
|
115
101
|
- - "~>"
|
|
116
102
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
103
|
+
version: '13.0'
|
|
118
104
|
type: :development
|
|
119
105
|
prerelease: false
|
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
107
|
requirements:
|
|
122
108
|
- - "~>"
|
|
123
109
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
110
|
+
version: '13.0'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: rake-compiler
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '1.0'
|
|
118
|
+
type: :development
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '1.0'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: rspec
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -262,6 +262,48 @@ dependencies:
|
|
|
262
262
|
- - "~>"
|
|
263
263
|
- !ruby/object:Gem::Version
|
|
264
264
|
version: 1.3.0
|
|
265
|
+
- !ruby/object:Gem::Dependency
|
|
266
|
+
name: guard-rake
|
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
|
268
|
+
requirements:
|
|
269
|
+
- - "~>"
|
|
270
|
+
- !ruby/object:Gem::Version
|
|
271
|
+
version: 1.0.0
|
|
272
|
+
type: :development
|
|
273
|
+
prerelease: false
|
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
275
|
+
requirements:
|
|
276
|
+
- - "~>"
|
|
277
|
+
- !ruby/object:Gem::Version
|
|
278
|
+
version: 1.0.0
|
|
279
|
+
- !ruby/object:Gem::Dependency
|
|
280
|
+
name: stackprof
|
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
|
282
|
+
requirements:
|
|
283
|
+
- - "~>"
|
|
284
|
+
- !ruby/object:Gem::Version
|
|
285
|
+
version: '0.2'
|
|
286
|
+
type: :development
|
|
287
|
+
prerelease: false
|
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
289
|
+
requirements:
|
|
290
|
+
- - "~>"
|
|
291
|
+
- !ruby/object:Gem::Version
|
|
292
|
+
version: '0.2'
|
|
293
|
+
- !ruby/object:Gem::Dependency
|
|
294
|
+
name: memory_profiler
|
|
295
|
+
requirement: !ruby/object:Gem::Requirement
|
|
296
|
+
requirements:
|
|
297
|
+
- - "~>"
|
|
298
|
+
- !ruby/object:Gem::Version
|
|
299
|
+
version: '0.9'
|
|
300
|
+
type: :development
|
|
301
|
+
prerelease: false
|
|
302
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
303
|
+
requirements:
|
|
304
|
+
- - "~>"
|
|
305
|
+
- !ruby/object:Gem::Version
|
|
306
|
+
version: '0.9'
|
|
265
307
|
- !ruby/object:Gem::Dependency
|
|
266
308
|
name: pry
|
|
267
309
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -349,19 +391,21 @@ dependencies:
|
|
|
349
391
|
description: 'ArelToolkit contains parsing, querying, modifying, optimisations, extensions
|
|
350
392
|
and more for Arel.
|
|
351
393
|
|
|
352
|
-
'
|
|
394
|
+
'
|
|
353
395
|
email:
|
|
354
396
|
- maarten@vgijssel.nl
|
|
355
397
|
executables: []
|
|
356
|
-
extensions:
|
|
398
|
+
extensions:
|
|
399
|
+
- ext/pg_result_init/extconf.rb
|
|
357
400
|
extra_rdoc_files: []
|
|
358
401
|
files:
|
|
359
402
|
- ".codeclimate.yml"
|
|
403
|
+
- ".github/workflows/coverage.yml"
|
|
404
|
+
- ".github/workflows/test.yml"
|
|
360
405
|
- ".gitignore"
|
|
361
406
|
- ".rspec"
|
|
362
407
|
- ".rubocop.yml"
|
|
363
408
|
- ".ruby-version"
|
|
364
|
-
- ".travis.yml"
|
|
365
409
|
- Appraisals
|
|
366
410
|
- CHANGELOG.md
|
|
367
411
|
- CODE_OF_CONDUCT.md
|
|
@@ -372,9 +416,15 @@ files:
|
|
|
372
416
|
- README.md
|
|
373
417
|
- Rakefile
|
|
374
418
|
- arel_toolkit.gemspec
|
|
419
|
+
- benchmark.rb
|
|
375
420
|
- bin/console
|
|
376
421
|
- bin/setup
|
|
422
|
+
- ext/pg_result_init/extconf.rb
|
|
423
|
+
- ext/pg_result_init/pg_result_init.c
|
|
424
|
+
- ext/pg_result_init/pg_result_init.h
|
|
377
425
|
- gemfiles/.bundle/config
|
|
426
|
+
- gemfiles/active_record_6.gemfile
|
|
427
|
+
- gemfiles/active_record_6.gemfile.lock
|
|
378
428
|
- gemfiles/arel_gems.gemfile
|
|
379
429
|
- gemfiles/arel_gems.gemfile.lock
|
|
380
430
|
- gemfiles/default.gemfile
|
|
@@ -385,9 +435,13 @@ files:
|
|
|
385
435
|
- lib/arel/enhance/path.rb
|
|
386
436
|
- lib/arel/enhance/path_node.rb
|
|
387
437
|
- lib/arel/enhance/query.rb
|
|
438
|
+
- lib/arel/enhance/query_methods.rb
|
|
388
439
|
- lib/arel/enhance/visitor.rb
|
|
389
440
|
- lib/arel/extensions.rb
|
|
390
441
|
- lib/arel/extensions/absolute.rb
|
|
442
|
+
- lib/arel/extensions/active_model_attribute_with_cast_value.rb
|
|
443
|
+
- lib/arel/extensions/active_record_relation_query_attribute.rb
|
|
444
|
+
- lib/arel/extensions/active_record_type_caster_connection.rb
|
|
391
445
|
- lib/arel/extensions/active_record_type_caster_map.rb
|
|
392
446
|
- lib/arel/extensions/all.rb
|
|
393
447
|
- lib/arel/extensions/any.rb
|
|
@@ -395,8 +449,10 @@ files:
|
|
|
395
449
|
- lib/arel/extensions/array_subselect.rb
|
|
396
450
|
- lib/arel/extensions/assignment.rb
|
|
397
451
|
- lib/arel/extensions/at_time_zone.rb
|
|
452
|
+
- lib/arel/extensions/attributes_attribute.rb
|
|
398
453
|
- lib/arel/extensions/between_symmetric.rb
|
|
399
454
|
- lib/arel/extensions/binary.rb
|
|
455
|
+
- lib/arel/extensions/bind_param.rb
|
|
400
456
|
- lib/arel/extensions/bit_string.rb
|
|
401
457
|
- lib/arel/extensions/bitwise_xor.rb
|
|
402
458
|
- lib/arel/extensions/case.rb
|
|
@@ -425,12 +481,12 @@ files:
|
|
|
425
481
|
- lib/arel/extensions/dot.rb
|
|
426
482
|
- lib/arel/extensions/equality.rb
|
|
427
483
|
- lib/arel/extensions/except_all.rb
|
|
484
|
+
- lib/arel/extensions/exists.rb
|
|
428
485
|
- lib/arel/extensions/exponentiation.rb
|
|
429
486
|
- lib/arel/extensions/extract_from.rb
|
|
430
487
|
- lib/arel/extensions/factorial.rb
|
|
431
488
|
- lib/arel/extensions/false.rb
|
|
432
489
|
- lib/arel/extensions/function.rb
|
|
433
|
-
- lib/arel/extensions/generate_series.rb
|
|
434
490
|
- lib/arel/extensions/greatest.rb
|
|
435
491
|
- lib/arel/extensions/indirection.rb
|
|
436
492
|
- lib/arel/extensions/infer.rb
|
|
@@ -454,6 +510,7 @@ files:
|
|
|
454
510
|
- lib/arel/extensions/named_argument.rb
|
|
455
511
|
- lib/arel/extensions/named_function.rb
|
|
456
512
|
- lib/arel/extensions/natural_join.rb
|
|
513
|
+
- lib/arel/extensions/node.rb
|
|
457
514
|
- lib/arel/extensions/not_between.rb
|
|
458
515
|
- lib/arel/extensions/not_between_symmetric.rb
|
|
459
516
|
- lib/arel/extensions/not_distinct_from.rb
|
|
@@ -467,7 +524,6 @@ files:
|
|
|
467
524
|
- lib/arel/extensions/position.rb
|
|
468
525
|
- lib/arel/extensions/prepare.rb
|
|
469
526
|
- lib/arel/extensions/range_function.rb
|
|
470
|
-
- lib/arel/extensions/rank.rb
|
|
471
527
|
- lib/arel/extensions/row.rb
|
|
472
528
|
- lib/arel/extensions/select_core.rb
|
|
473
529
|
- lib/arel/extensions/select_manager.rb
|
|
@@ -480,6 +536,7 @@ files:
|
|
|
480
536
|
- lib/arel/extensions/table.rb
|
|
481
537
|
- lib/arel/extensions/time_with_precision.rb
|
|
482
538
|
- lib/arel/extensions/to_sql.rb
|
|
539
|
+
- lib/arel/extensions/top.rb
|
|
483
540
|
- lib/arel/extensions/transaction.rb
|
|
484
541
|
- lib/arel/extensions/tree_manager.rb
|
|
485
542
|
- lib/arel/extensions/trim.rb
|
|
@@ -496,24 +553,32 @@ files:
|
|
|
496
553
|
- lib/arel/extensions/variable_show.rb
|
|
497
554
|
- lib/arel/extensions/with_ordinality.rb
|
|
498
555
|
- lib/arel/middleware.rb
|
|
556
|
+
- lib/arel/middleware/active_record_extension.rb
|
|
557
|
+
- lib/arel/middleware/cache_accessor.rb
|
|
499
558
|
- lib/arel/middleware/chain.rb
|
|
559
|
+
- lib/arel/middleware/database_executor.rb
|
|
560
|
+
- lib/arel/middleware/no_op_cache.rb
|
|
500
561
|
- lib/arel/middleware/postgresql_adapter.rb
|
|
501
562
|
- lib/arel/middleware/railtie.rb
|
|
563
|
+
- lib/arel/middleware/result.rb
|
|
564
|
+
- lib/arel/middleware/to_sql_executor.rb
|
|
565
|
+
- lib/arel/middleware/to_sql_middleware.rb
|
|
502
566
|
- lib/arel/sql_to_arel.rb
|
|
503
567
|
- lib/arel/sql_to_arel/error.rb
|
|
504
568
|
- lib/arel/sql_to_arel/pg_query_visitor.rb
|
|
505
569
|
- lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb
|
|
506
570
|
- lib/arel/sql_to_arel/result.rb
|
|
507
571
|
- lib/arel/transformer.rb
|
|
508
|
-
- lib/arel/transformer/
|
|
572
|
+
- lib/arel/transformer/prefix_schema_name.rb
|
|
509
573
|
- lib/arel/transformer/remove_active_record_info.rb
|
|
574
|
+
- lib/arel/transformer/replace_table_with_subquery.rb
|
|
510
575
|
- lib/arel_toolkit.rb
|
|
511
576
|
- lib/arel_toolkit/version.rb
|
|
512
577
|
homepage: https://github.com/mvgijssel/arel_toolkit
|
|
513
578
|
licenses:
|
|
514
579
|
- MIT
|
|
515
580
|
metadata: {}
|
|
516
|
-
post_install_message:
|
|
581
|
+
post_install_message:
|
|
517
582
|
rdoc_options: []
|
|
518
583
|
require_paths:
|
|
519
584
|
- lib
|
|
@@ -528,9 +593,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
528
593
|
- !ruby/object:Gem::Version
|
|
529
594
|
version: '0'
|
|
530
595
|
requirements: []
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
signing_key:
|
|
596
|
+
rubygems_version: 3.0.3
|
|
597
|
+
signing_key:
|
|
534
598
|
specification_version: 4
|
|
535
599
|
summary: Collection of tools for Arel
|
|
536
600
|
test_files: []
|