arel_extensions 2.1.3 → 2.1.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.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -2
  3. data/.github/workflows/ruby.yml +4 -4
  4. data/.rubocop.yml +25 -1
  5. data/Gemfile +10 -10
  6. data/README.md +1 -2
  7. data/Rakefile +4 -4
  8. data/TODO +0 -1
  9. data/arel_extensions.gemspec +11 -11
  10. data/gemfiles/rails3.gemfile +10 -10
  11. data/gemfiles/rails4.gemfile +13 -13
  12. data/gemfiles/rails5_0.gemfile +12 -12
  13. data/gemfiles/rails5_1_4.gemfile +12 -12
  14. data/gemfiles/rails5_2.gemfile +13 -13
  15. data/gemfiles/rails6.gemfile +11 -11
  16. data/gemfiles/rails6_1.gemfile +11 -11
  17. data/gemfiles/rails7.gemfile +7 -7
  18. data/gemspecs/arel_extensions-v1.gemspec +12 -12
  19. data/gemspecs/arel_extensions-v2.gemspec +11 -11
  20. data/init/mssql.sql +0 -0
  21. data/init/mysql.sql +0 -0
  22. data/init/oracle.sql +0 -0
  23. data/init/postgresql.sql +0 -0
  24. data/init/sqlite.sql +0 -0
  25. data/lib/arel_extensions/attributes.rb +2 -2
  26. data/lib/arel_extensions/boolean_functions.rb +2 -4
  27. data/lib/arel_extensions/common_sql_functions.rb +10 -10
  28. data/lib/arel_extensions/comparators.rb +14 -14
  29. data/lib/arel_extensions/date_duration.rb +7 -7
  30. data/lib/arel_extensions/helpers.rb +16 -13
  31. data/lib/arel_extensions/insert_manager.rb +1 -1
  32. data/lib/arel_extensions/math.rb +16 -18
  33. data/lib/arel_extensions/math_functions.rb +18 -18
  34. data/lib/arel_extensions/nodes/abs.rb +0 -0
  35. data/lib/arel_extensions/nodes/aggregate_function.rb +0 -0
  36. data/lib/arel_extensions/nodes/blank.rb +1 -1
  37. data/lib/arel_extensions/nodes/case.rb +4 -6
  38. data/lib/arel_extensions/nodes/cast.rb +3 -3
  39. data/lib/arel_extensions/nodes/ceil.rb +0 -0
  40. data/lib/arel_extensions/nodes/change_case.rb +0 -0
  41. data/lib/arel_extensions/nodes/coalesce.rb +0 -0
  42. data/lib/arel_extensions/nodes/collate.rb +9 -9
  43. data/lib/arel_extensions/nodes/concat.rb +2 -2
  44. data/lib/arel_extensions/nodes/date_diff.rb +6 -6
  45. data/lib/arel_extensions/nodes/duration.rb +0 -0
  46. data/lib/arel_extensions/nodes/find_in_set.rb +0 -0
  47. data/lib/arel_extensions/nodes/floor.rb +0 -0
  48. data/lib/arel_extensions/nodes/format.rb +0 -0
  49. data/lib/arel_extensions/nodes/formatted_number.rb +2 -2
  50. data/lib/arel_extensions/nodes/function.rb +21 -21
  51. data/lib/arel_extensions/nodes/is_null.rb +0 -0
  52. data/lib/arel_extensions/nodes/json.rb +7 -7
  53. data/lib/arel_extensions/nodes/length.rb +0 -0
  54. data/lib/arel_extensions/nodes/levenshtein_distance.rb +1 -1
  55. data/lib/arel_extensions/nodes/locate.rb +0 -0
  56. data/lib/arel_extensions/nodes/log10.rb +0 -0
  57. data/lib/arel_extensions/nodes/matches.rb +1 -1
  58. data/lib/arel_extensions/nodes/md5.rb +0 -0
  59. data/lib/arel_extensions/nodes/power.rb +0 -0
  60. data/lib/arel_extensions/nodes/rand.rb +0 -0
  61. data/lib/arel_extensions/nodes/repeat.rb +0 -0
  62. data/lib/arel_extensions/nodes/replace.rb +2 -2
  63. data/lib/arel_extensions/nodes/round.rb +0 -0
  64. data/lib/arel_extensions/nodes/soundex.rb +2 -2
  65. data/lib/arel_extensions/nodes/std.rb +0 -0
  66. data/lib/arel_extensions/nodes/substring.rb +0 -0
  67. data/lib/arel_extensions/nodes/sum.rb +0 -0
  68. data/lib/arel_extensions/nodes/then.rb +0 -0
  69. data/lib/arel_extensions/nodes/trim.rb +0 -0
  70. data/lib/arel_extensions/nodes/union.rb +4 -4
  71. data/lib/arel_extensions/nodes/union_all.rb +3 -3
  72. data/lib/arel_extensions/nodes/wday.rb +0 -0
  73. data/lib/arel_extensions/nodes.rb +0 -0
  74. data/lib/arel_extensions/null_functions.rb +0 -0
  75. data/lib/arel_extensions/predications.rb +10 -10
  76. data/lib/arel_extensions/railtie.rb +1 -1
  77. data/lib/arel_extensions/set_functions.rb +3 -3
  78. data/lib/arel_extensions/string_functions.rb +8 -8
  79. data/lib/arel_extensions/tasks.rb +2 -2
  80. data/lib/arel_extensions/version.rb +1 -1
  81. data/lib/arel_extensions/visitors/convert_format.rb +0 -0
  82. data/lib/arel_extensions/visitors/ibm_db.rb +19 -19
  83. data/lib/arel_extensions/visitors/mssql.rb +127 -121
  84. data/lib/arel_extensions/visitors/mysql.rb +137 -145
  85. data/lib/arel_extensions/visitors/oracle.rb +128 -128
  86. data/lib/arel_extensions/visitors/oracle12.rb +16 -16
  87. data/lib/arel_extensions/visitors/postgresql.rb +139 -137
  88. data/lib/arel_extensions/visitors/sqlite.rb +83 -85
  89. data/lib/arel_extensions/visitors/to_sql.rb +143 -148
  90. data/lib/arel_extensions/visitors.rb +7 -7
  91. data/lib/arel_extensions.rb +46 -32
  92. data/test/arelx_test_helper.rb +14 -13
  93. data/test/database.yml +5 -5
  94. data/test/real_db_test.rb +78 -78
  95. data/test/support/fake_record.rb +1 -1
  96. data/test/test_comparators.rb +5 -5
  97. data/test/visitors/test_bulk_insert_oracle.rb +4 -4
  98. data/test/visitors/test_bulk_insert_sqlite.rb +4 -4
  99. data/test/visitors/test_bulk_insert_to_sql.rb +4 -4
  100. data/test/visitors/test_oracle.rb +14 -14
  101. data/test/visitors/test_to_sql.rb +82 -82
  102. data/test/with_ar/all_agnostic_test.rb +364 -299
  103. data/test/with_ar/insert_agnostic_test.rb +17 -14
  104. data/test/with_ar/test_bulk_sqlite.rb +4 -4
  105. data/test/with_ar/test_math_sqlite.rb +12 -12
  106. data/test/with_ar/test_string_mysql.rb +20 -20
  107. data/test/with_ar/test_string_sqlite.rb +20 -20
  108. data/version_v1.rb +1 -1
  109. data/version_v2.rb +1 -1
  110. metadata +2 -9
  111. data/.travis/oracle/download.js +0 -152
  112. data/.travis/oracle/download.sh +0 -30
  113. data/.travis/oracle/download_ojdbc.js +0 -116
  114. data/.travis/oracle/install.sh +0 -34
  115. data/.travis/setup_accounts.sh +0 -9
  116. data/.travis/sqlite3/extension-functions.sh +0 -6
  117. data/.travis.yml +0 -193
@@ -9,7 +9,7 @@ module ArelExtensions
9
9
  DATE_FORMAT_DIRECTIVES = { # ISO C / POSIX
10
10
  '%Y' => '%Y', '%C' => '', '%y' => '%y', '%m' => '%m', '%B' => '%M', '%b' => '%b', '%^b' => '%b', # year, month
11
11
  '%V' => '%v', '%G' => '%x', # ISO week number and year of week
12
- '%d' => '%d', '%e' => '%e', '%j' => '%j', '%w' => '%w', '%A' => '%W', # day, weekday
12
+ '%d' => '%d', '%e' => '%e', '%j' => '%j', '%w' => '%w', '%a' => '%a', '%A' => '%W', # day, weekday
13
13
  '%H' => '%H', '%k' => '%k', '%I' => '%I', '%l' => '%l', '%P' => '%p', '%p' => '%p', # hours
14
14
  '%M' => '%i', '%S' => '%S', '%L' => '', '%N' => '%f', '%z' => ''
15
15
  }.freeze
@@ -17,22 +17,22 @@ module ArelExtensions
17
17
 
18
18
  # Math functions
19
19
  def visit_ArelExtensions_Nodes_Log10 o, collector
20
- collector << "LOG10("
21
- o.expressions.each_with_index { |arg, i|
22
- collector << Arel::Visitors::ToSql::COMMA if i != 0
23
- collector = visit arg, collector
24
- }
25
- collector << ")"
26
- collector
20
+ collector << 'LOG10('
21
+ o.expressions.each_with_index { |arg, i|
22
+ collector << Arel::Visitors::ToSql::COMMA if i != 0
23
+ collector = visit arg, collector
24
+ }
25
+ collector << ')'
26
+ collector
27
27
  end
28
28
 
29
29
  def visit_ArelExtensions_Nodes_Power o, collector
30
- collector << "POW("
30
+ collector << 'POW('
31
31
  o.expressions.each_with_index { |arg, i|
32
32
  collector << Arel::Visitors::ToSql::COMMA if i != 0
33
33
  collector = visit arg, collector
34
34
  }
35
- collector << ")"
35
+ collector << ')'
36
36
  collector
37
37
  end
38
38
 
@@ -45,10 +45,9 @@ module ArelExtensions
45
45
  collector << ')'
46
46
  if o.escape
47
47
  collector << ' ESCAPE '
48
- visit o.escape, collector
49
- else
50
- collector
48
+ collector = visit o.escape, collector
51
49
  end
50
+ collector
52
51
  end
53
52
 
54
53
  def visit_ArelExtensions_Nodes_AiMatches o, collector
@@ -57,10 +56,9 @@ module ArelExtensions
57
56
  collector = visit o.right.ai_collate, collector
58
57
  if o.escape
59
58
  collector << ' ESCAPE '
60
- visit o.escape, collector
61
- else
62
- collector
59
+ collector = visit o.escape, collector
63
60
  end
61
+ collector
64
62
  end
65
63
 
66
64
  def visit_ArelExtensions_Nodes_AiIMatches o, collector
@@ -69,22 +67,20 @@ module ArelExtensions
69
67
  collector = visit o.right.ai_collate, collector
70
68
  if o.escape
71
69
  collector << ' ESCAPE '
72
- visit o.escape, collector
73
- else
74
- collector
70
+ collector = visit o.escape, collector
75
71
  end
72
+ collector
76
73
  end
77
74
 
78
75
  def visit_ArelExtensions_Nodes_SMatches o, collector
79
- collector = visit o.left.collate, collector
80
- collector << ' LIKE '
81
- collector = visit o.right.collate, collector
82
- if o.escape
83
- collector << ' ESCAPE '
84
- visit o.escape, collector
85
- else
86
- collector
87
- end
76
+ collector = visit o.left.collate, collector
77
+ collector << ' LIKE '
78
+ collector = visit o.right.collate, collector
79
+ if o.escape
80
+ collector << ' ESCAPE '
81
+ collector = visit o.escape, collector
82
+ end
83
+ collector
88
84
  end
89
85
 
90
86
  def visit_ArelExtensions_Nodes_IDoesNotMatch o, collector
@@ -95,10 +91,9 @@ module ArelExtensions
95
91
  collector << ')'
96
92
  if o.escape
97
93
  collector << ' ESCAPE '
98
- visit o.escape, collector
99
- else
100
- collector
94
+ collector = visit o.escape, collector
101
95
  end
96
+ collector
102
97
  end
103
98
 
104
99
  def visit_ArelExtensions_Nodes_Collate o, collector
@@ -106,7 +101,7 @@ module ArelExtensions
106
101
  case o.expressions.first
107
102
  when Arel::Attributes::Attribute
108
103
  case o.option
109
- when 'latin1','utf8'
104
+ when 'latin1', 'utf8'
110
105
  o.option
111
106
  else
112
107
  Arel::Table.engine.connection.charset || 'utf8'
@@ -128,27 +123,27 @@ module ArelExtensions
128
123
  end
129
124
 
130
125
  def visit_ArelExtensions_Nodes_Concat o, collector
131
- collector << "CONCAT("
126
+ collector << 'CONCAT('
132
127
  o.expressions.each_with_index { |arg, i|
133
128
  collector << COMMA if i != 0
134
129
  if (arg.is_a?(Numeric)) || (arg.is_a?(Arel::Attributes::Attribute))
135
- collector << "CAST("
130
+ collector << 'CAST('
136
131
  collector = visit arg, collector
137
- collector << " AS char)"
132
+ collector << ' AS char)'
138
133
  else
139
134
  collector = visit arg, collector
140
135
  end
141
136
  }
142
- collector << ")"
137
+ collector << ')'
143
138
  collector
144
139
  end
145
140
 
146
141
  def visit_ArelExtensions_Nodes_GroupConcat o, collector
147
- collector << "GROUP_CONCAT("
142
+ collector << 'GROUP_CONCAT('
148
143
  collector = visit o.left, collector
149
144
  if !o.order.blank?
150
145
  collector << ' ORDER BY '
151
- o.order.each_with_index do |order,i|
146
+ o.order.each_with_index do |order, i|
152
147
  collector << Arel::Visitors::ToSql::COMMA if i != 0
153
148
  collector = visit order, collector
154
149
  end
@@ -157,85 +152,85 @@ module ArelExtensions
157
152
  collector << ' SEPARATOR '
158
153
  collector = visit o.separator, collector
159
154
  end
160
- collector << ")"
155
+ collector << ')'
161
156
  collector
162
157
  end
163
158
 
164
159
  def visit_ArelExtensions_Nodes_Trim o, collector
165
- collector << 'TRIM(' # BOTH
166
- collector = visit o.right, collector
167
- collector << " FROM "
168
- collector = visit o.left, collector
169
- collector << ")"
170
- collector
160
+ collector << 'TRIM(' # BOTH
161
+ collector = visit o.right, collector
162
+ collector << ' FROM '
163
+ collector = visit o.left, collector
164
+ collector << ')'
165
+ collector
171
166
  end
172
167
 
173
168
  def visit_ArelExtensions_Nodes_Ltrim o, collector
174
- collector << 'TRIM(LEADING '
175
- collector = visit o.right, collector
176
- collector << " FROM "
177
- collector = visit o.left, collector
178
- collector << ")"
179
- collector
169
+ collector << 'TRIM(LEADING '
170
+ collector = visit o.right, collector
171
+ collector << ' FROM '
172
+ collector = visit o.left, collector
173
+ collector << ')'
174
+ collector
180
175
  end
181
176
 
182
177
  def visit_ArelExtensions_Nodes_Rtrim o, collector
183
178
  collector << 'TRIM(TRAILING '
184
179
  collector = visit o.right, collector
185
- collector << " FROM "
180
+ collector << ' FROM '
186
181
  collector = visit o.left, collector
187
- collector << ")"
182
+ collector << ')'
188
183
  collector
189
184
  end
190
185
 
191
186
  def visit_ArelExtensions_Nodes_Repeat o, collector
192
- collector << "REPEAT("
187
+ collector << 'REPEAT('
193
188
  o.expressions.each_with_index { |arg, i|
194
189
  collector << Arel::Visitors::ToSql::COMMA if i != 0
195
190
  collector = visit arg, collector
196
191
  }
197
- collector << ")"
192
+ collector << ')'
198
193
  collector
199
194
  end
200
195
 
201
196
  def visit_ArelExtensions_Nodes_RegexpReplace o, collector
202
197
  if !regexp_replace_supported?
203
- warn("Warning : ArelExtensions: REGEXP_REPLACE does not seem to be available in the current version of the DBMS, it might crash")
198
+ warn('Warning: ArelExtensions: REGEXP_REPLACE does not seem to be available in the current version of the DBMS, it might crash')
204
199
  end
205
- super(o,collector)
200
+ super(o, collector)
206
201
  end
207
202
 
208
203
  def visit_ArelExtensions_Nodes_Format o, collector
209
204
  case o.col_type
210
205
  when :date, :datetime, :time
211
206
  fmt = ArelExtensions::Visitors::strftime_to_format(o.iso_format, DATE_FORMAT_DIRECTIVES)
212
- collector << "DATE_FORMAT("
213
- collector << "CONVERT_TZ(" if o.time_zone
207
+ collector << 'DATE_FORMAT('
208
+ collector << 'CONVERT_TZ(' if o.time_zone
214
209
  collector = visit o.left, collector
215
210
  case o.time_zone
216
211
  when Hash
217
212
  src_tz, dst_tz = o.time_zone.first
218
213
  collector << COMMA
219
- collector = visit Arel::Nodes.build_quoted(src_tz), collector
214
+ collector = visit Arel.quoted(src_tz), collector
220
215
  collector << COMMA
221
- collector = visit Arel::Nodes.build_quoted(dst_tz), collector
216
+ collector = visit Arel.quoted(dst_tz), collector
222
217
  collector << ')'
223
218
  when String
224
219
  collector << COMMA << "'UTC'" << COMMA
225
- collector = visit Arel::Nodes.build_quoted(o.time_zone), collector
220
+ collector = visit Arel.quoted(o.time_zone), collector
226
221
  collector << ')'
227
222
  end
228
223
  collector << COMMA
229
- collector = visit Arel::Nodes.build_quoted(fmt), collector
230
- collector << ")"
224
+ collector = visit Arel.quoted(fmt), collector
225
+ collector << ')'
231
226
  when :integer, :float, :decimal
232
- collector << "FORMAT("
227
+ collector << 'FORMAT('
233
228
  collector = visit o.left, collector
234
229
  collector << Arel::Visitors::ToSql::COMMA
235
230
  collector << '2'
236
231
  collector << Arel::Visitors::ToSql::COMMA
237
232
  collector = visit o.right, collector
238
- collector << ")"
233
+ collector << ')'
239
234
  else
240
235
  collector = visit o.left, collector
241
236
  end
@@ -253,7 +248,7 @@ module ArelExtensions
253
248
  collector = visit o.right, collector
254
249
  collector << COMMA
255
250
  collector = visit o.left, collector
256
- collector << ")"
251
+ collector << ')'
257
252
  else
258
253
  collector << '('
259
254
  collector = visit o.left, collector
@@ -273,81 +268,79 @@ module ArelExtensions
273
268
  end
274
269
 
275
270
  def visit_ArelExtensions_Nodes_DateAdd o, collector
276
- collector << "DATE_ADD("
271
+ collector << 'DATE_ADD('
277
272
  collector = visit o.left, collector
278
273
  collector << COMMA
279
274
  collector = visit o.mysql_value(o.right), collector
280
- collector << ")"
275
+ collector << ')'
281
276
  collector
282
277
  end
283
278
 
284
279
  def visit_ArelExtensions_Nodes_Duration o, collector
285
280
  if o.left == 'wd'
286
- collector << "(WEEKDAY("
281
+ collector << '(WEEKDAY('
287
282
  collector = visit o.right, collector
288
- collector << ") + 1) % 7"
283
+ collector << ') + 1) % 7'
289
284
  else
290
285
  if o.with_interval
291
- case o.left
292
- when 'd','m','y'
293
- interval = 'DAY'
294
- when 'h','mn','s'
295
- interval = 'SECOND'
296
- when /i\z/
297
- interval = DATE_MAPPING[o.left[0..-2]]
298
- else
299
- interval = nil
300
- end
286
+ interval =
287
+ case o.left
288
+ when 'd', 'm', 'y'
289
+ 'DAY'
290
+ when 'h', 'mn', 's'
291
+ 'SECOND'
292
+ when /i\z/
293
+ DATE_MAPPING[o.left[0..-2]]
294
+ end
301
295
  end
302
- collector << " INTERVAL " if o.with_interval && interval
296
+ collector << ' INTERVAL ' if o.with_interval && interval
303
297
  collector << "#{DATE_MAPPING[o.left]}("
304
298
  collector = visit o.right, collector
305
- collector << ")"
299
+ collector << ')'
306
300
  collector << " #{interval} " if o.with_interval && interval
307
301
  end
308
302
  collector
309
303
  end
310
304
 
311
305
  def visit_ArelExtensions_Nodes_IsNull o, collector
312
- collector << "ISNULL("
306
+ collector << 'ISNULL('
313
307
  collector = visit o.expr, collector
314
- collector << ")"
308
+ collector << ')'
315
309
  collector
316
310
  end
317
311
 
318
312
  def visit_ArelExtensions_Nodes_IsNotNull o, collector
319
- collector << "NOT ISNULL("
313
+ collector << 'NOT ISNULL('
320
314
  collector = visit o.expr, collector
321
- collector << ")"
315
+ collector << ')'
322
316
  collector
323
317
  end
324
318
 
325
319
  def visit_ArelExtensions_Nodes_Wday o, collector
326
- collector << "(WEEKDAY("
320
+ collector << '(WEEKDAY('
327
321
  collector = visit o.date, collector
328
- collector << ") + 1) % 7"
322
+ collector << ') + 1) % 7'
329
323
  collector
330
324
  end
331
325
 
332
326
  def visit_ArelExtensions_Nodes_Cast o, collector
333
- collector << "CAST("
334
- collector = visit o.left, collector
335
- collector << " AS "
336
327
  as_attr =
337
- Arel::Nodes::SqlLiteral.new(
338
- case o.as_attr
339
- when :string then 'char'
340
- when :time then 'time'
341
- when :int then 'signed'
342
- when :number, :decimal then 'decimal(20,6)'
343
- when :datetime then 'datetime'
344
- when :date then 'date'
345
- when :binary then 'binary'
346
- else o.as_attr.to_s
347
- end
348
- )
349
- collector = visit as_attr, collector
350
- collector << ")"
328
+ case o.as_attr
329
+ when :binary then 'binary'
330
+ when :date then 'date'
331
+ when :datetime then 'datetime'
332
+ when :int then 'signed'
333
+ when :number, :decimal then 'decimal(20,6)'
334
+ when :string then 'char'
335
+ when :time then 'time'
336
+ else o.as_attr.to_s
337
+ end
338
+
339
+ collector << 'CAST('
340
+ collector = visit o.left, collector
341
+ collector << ' AS '
342
+ collector = visit Arel::Nodes::SqlLiteral.new(as_attr), collector
343
+ collector << ')'
351
344
  collector
352
345
  end
353
346
 
@@ -357,7 +350,7 @@ module ArelExtensions
357
350
  o = o.dup
358
351
  o.orders = []
359
352
  end
360
- old_visit_Arel_Nodes_SelectStatement(o,collector)
353
+ old_visit_Arel_Nodes_SelectStatement(o, collector)
361
354
  end
362
355
 
363
356
  alias_method(:old_visit_Arel_Nodes_As, :visit_Arel_Nodes_As) rescue nil
@@ -369,7 +362,7 @@ module ArelExtensions
369
362
  else
370
363
  collector = visit o.left, collector
371
364
  end
372
- collector << " AS "
365
+ collector << ' AS '
373
366
 
374
367
  # sometimes these values are already quoted, if they are, don't double quote it
375
368
  quote = o.right.is_a?(Arel::Nodes::SqlLiteral) && o.right[0] != '`' && o.right[-1] != '`'
@@ -379,13 +372,12 @@ module ArelExtensions
379
372
  collector << '`' if quote
380
373
 
381
374
  collector
382
- collector
383
375
  end
384
376
 
385
377
  def visit_ArelExtensions_Nodes_FormattedNumber o, collector
386
378
  col = o.left.coalesce(0)
387
- params = o.locale ? [o.precision,Arel::Nodes.build_quoted(o.locale)] : [o.precision]
388
- sign = ArelExtensions::Nodes::Case.new.when(col<0).
379
+ params = o.locale ? [o.precision, Arel.quoted(o.locale)] : [o.precision]
380
+ sign = Arel.when(col < 0).
389
381
  then('-').
390
382
  else(o.flags.include?('+') ? '+' : (o.flags.include?(' ') ? ' ' : ''))
391
383
  sign_length = ArelExtensions::Nodes::Length.new([sign])
@@ -393,28 +385,28 @@ module ArelExtensions
393
385
  number =
394
386
  if o.scientific_notation
395
387
  ArelExtensions::Nodes::Concat.new([
396
- Arel::Nodes::NamedFunction.new('FORMAT',[
397
- col.abs/Arel::Nodes.build_quoted(10).pow(col.abs.log10.floor)
398
- ]+params),
388
+ Arel::Nodes::NamedFunction.new('FORMAT', [
389
+ col.abs / Arel.quoted(10).pow(col.abs.log10.floor)
390
+ ] + params),
399
391
  o.type,
400
- Arel::Nodes::NamedFunction.new('FORMAT',[
392
+ Arel::Nodes::NamedFunction.new('FORMAT', [
401
393
  col.abs.log10.floor,
402
394
  0
403
395
  ])
404
396
  ])
405
397
  else
406
- Arel::Nodes::NamedFunction.new('FORMAT',[col.abs]+params)
398
+ Arel::Nodes::NamedFunction.new('FORMAT', [col.abs] + params)
407
399
  end
408
400
 
409
- repeated_char = (o.width == 0) ? Arel::Nodes.build_quoted('') : ArelExtensions::Nodes::Case.new().
410
- when(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length)>0).
411
- then(Arel::Nodes.build_quoted(
401
+ repeated_char = (o.width == 0) ? Arel.quoted('') : ArelExtensions::Nodes::Case.new.
402
+ when(Arel.quoted(o.width).abs - (number.length + sign_length) > 0).
403
+ then(Arel.quoted(
412
404
  o.flags.include?('-') ? ' ' : (o.flags.include?('0') ? '0' : ' ')
413
- ).repeat(Arel::Nodes.build_quoted(o.width).abs-(number.length+sign_length))
405
+ ).repeat(Arel.quoted(o.width).abs - (number.length + sign_length))
414
406
  ).
415
407
  else('')
416
- before = (!o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
417
- middle = (o.flags.include?('0'))&&(!o.flags.include?('-')) ? repeated_char : ''
408
+ before = (!o.flags.include?('0')) && (!o.flags.include?('-')) ? repeated_char : ''
409
+ middle = (o.flags.include?('0')) && (!o.flags.include?('-')) ? repeated_char : ''
418
410
  after = o.flags.include?('-') ? repeated_char : ''
419
411
  full_number = ArelExtensions::Nodes::Concat.new([
420
412
  before,
@@ -423,45 +415,45 @@ module ArelExtensions
423
415
  number,
424
416
  after
425
417
  ])
426
- collector = visit ArelExtensions::Nodes::Concat.new([Arel::Nodes.build_quoted(o.prefix),full_number,Arel::Nodes.build_quoted(o.suffix)]), collector
418
+ collector = visit ArelExtensions::Nodes::Concat.new([Arel.quoted(o.prefix), full_number, Arel.quoted(o.suffix)]), collector
427
419
  collector
428
420
  end
429
421
 
430
422
  def visit_Aggregate_For_AggregateFunction o, collector
431
423
  if !window_supported?
432
- warn("Warning : ArelExtensions: Window Functions are not available in the current version of the DBMS.")
433
- return collector
424
+ warn('Warning: ArelExtensions: Window Functions are not available in the current version of the DBMS.')
425
+ return collector
434
426
  end
435
427
 
436
428
  if !o.order.empty? || !o.group.empty?
437
- collector << " OVER ("
429
+ collector << ' OVER ('
438
430
  if !o.group.empty?
439
- collector << " PARTITION BY ("
431
+ collector << ' PARTITION BY ('
440
432
  visit o.group, collector
441
- collector << ")"
433
+ collector << ')'
442
434
  end
443
435
  if !o.order.empty?
444
- collector << " ORDER BY ("
436
+ collector << ' ORDER BY ('
445
437
  visit o.order, collector
446
- collector << ")"
438
+ collector << ')'
447
439
  end
448
- collector << ")"
440
+ collector << ')'
449
441
  end
450
442
  collector
451
443
  end
452
444
 
453
445
  def visit_ArelExtensions_Nodes_Std o, collector
454
- collector << (o.unbiased_estimator ? "STDDEV_SAMP(" : "STDDEV_POP(")
446
+ collector << (o.unbiased_estimator ? 'STDDEV_SAMP(' : 'STDDEV_POP(')
455
447
  visit o.left, collector
456
- collector << ")"
448
+ collector << ')'
457
449
  visit_Aggregate_For_AggregateFunction o, collector
458
450
  collector
459
451
  end
460
452
 
461
453
  def visit_ArelExtensions_Nodes_Variance o, collector
462
- collector << (o.unbiased_estimator ? "VAR_SAMP(" : "VAR_POP(")
454
+ collector << (o.unbiased_estimator ? 'VAR_SAMP(' : 'VAR_POP(')
463
455
  visit o.left, collector
464
- collector << ")"
456
+ collector << ')'
465
457
  visit_Aggregate_For_AggregateFunction o, collector
466
458
  collector
467
459
  end
@@ -493,13 +485,13 @@ module ArelExtensions
493
485
  # corresponding mysql version of the current mariadb version (which is not very helpful most of the time)
494
486
  end
495
487
 
496
- def visit_ArelExtensions_Nodes_Json o,collector
488
+ def visit_ArelExtensions_Nodes_Json o, collector
497
489
  return super if !json_supported?
498
490
 
499
491
  case o.dict
500
492
  when Array
501
493
  collector << 'JSON_ARRAY('
502
- o.dict.each.with_index do |v,i|
494
+ o.dict.each.with_index do |v, i|
503
495
  if i != 0
504
496
  collector << COMMA
505
497
  end
@@ -508,7 +500,7 @@ module ArelExtensions
508
500
  collector << ')'
509
501
  when Hash
510
502
  collector << 'JSON_OBJECT('
511
- o.dict.each.with_index do |(k,v),i|
503
+ o.dict.each.with_index do |(k, v), i|
512
504
  if i != 0
513
505
  collector << COMMA
514
506
  end
@@ -523,9 +515,9 @@ module ArelExtensions
523
515
  collector
524
516
  end
525
517
 
526
- def visit_ArelExtensions_Nodes_JsonMerge o,collector
518
+ def visit_ArelExtensions_Nodes_JsonMerge o, collector
527
519
  collector << 'JSON_MERGE_PATCH('
528
- o.expressions.each.with_index do |v,i|
520
+ o.expressions.each.with_index do |v, i|
529
521
  if i != 0
530
522
  collector << COMMA
531
523
  end
@@ -535,27 +527,27 @@ module ArelExtensions
535
527
  collector
536
528
  end
537
529
 
538
- def visit_ArelExtensions_Nodes_JsonGet o,collector
530
+ def visit_ArelExtensions_Nodes_JsonGet o, collector
539
531
  collector << 'JSON_EXTRACT('
540
532
  collector = visit o.dict, collector
541
533
  collector << COMMA
542
534
  if o.key.is_a?(Integer)
543
535
  collector << "\"$[#{o.key}]\""
544
536
  else
545
- collector = visit Arel::Nodes.build_quoted('$.')+o.key, collector
537
+ collector = visit Arel.quoted('$.') + o.key, collector
546
538
  end
547
539
  collector << ')'
548
540
  collector
549
541
  end
550
542
 
551
- def visit_ArelExtensions_Nodes_JsonSet o,collector
543
+ def visit_ArelExtensions_Nodes_JsonSet o, collector
552
544
  collector << 'JSON_SET('
553
545
  collector = visit o.dict, collector
554
546
  collector << COMMA
555
547
  if o.key.is_a?(Integer)
556
548
  collector << "\"$[#{o.key}]\""
557
549
  else
558
- collector = visit Arel::Nodes.build_quoted('$.')+o.key, collector
550
+ collector = visit Arel.quoted('$.') + o.key, collector
559
551
  end
560
552
  collector << COMMA
561
553
  collector = visit o.value, collector
@@ -574,7 +566,7 @@ module ArelExtensions
574
566
  case o.dict
575
567
  when Hash
576
568
  collector << 'JSON_MERGE_PATCH(' if o.dict.length > 1
577
- o.dict.each.with_index do |(k,v),i|
569
+ o.dict.each.with_index do |(k, v), i|
578
570
  if i != 0
579
571
  collector << COMMA
580
572
  end