arel_extensions 2.1.3 → 2.1.4

Sign up to get free protection for your applications and to get access to all the features.
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