sparkql 1.3.5 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee4b94747c3d671e7ceac9675caaebaf3d8661a4a9316327719e7221f439b3bc
4
- data.tar.gz: '09a7eddd5cd21a23d2083c8312f0a1bec48a0f21938c0871538cdb08ef52d1d3'
3
+ metadata.gz: 6c51d91b09c229564b83503e11d3ca453c91f5c280307effd1120d6a33b74010
4
+ data.tar.gz: ea90a995aa3dbd06ae7f187437c24abb81590ff396e837ec45e531ea25408f69
5
5
  SHA512:
6
- metadata.gz: 67b098969f33bf5eaa19277d3d202687c8ceddf4183d4f54cb703cdb7b5ed3aff934a201a3e238226a27bfcecce9b2c58e31e2ce64f76fa0f03babf23b980291
7
- data.tar.gz: 42db5ca0692fca37b627562870641af084f539c64909fb8858e8bc872d4371d365621fe502cbba8289dbd0ea47e13cdc80df24c83172ebc3d88a92ec1291e64c
6
+ metadata.gz: c10a6629cc9606cdb49de2f60c64e6d0a38879c7abf4118e91fb23070eea06efa81b951a4f76daf185f5904efcbaa1b2ef4edb09a6124f24833e77865ecdd295
7
+ data.tar.gz: 9e073aa1c7963578f2ecf8e0a65230e7210c329a365a57e6b3fd7d4d0c7aa60e281b186e3c507ffe8f59a91fbefd16dbc9e99a9d97e8b603f4da6b1bb859c0e4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ v1.3.6, 2026-06-23
2
+ * [BUGFIX] Parser crash when days()/weekdays() exceed max offset
3
+
1
4
  v1.3.5, 2026-04-30
2
5
  * [IMPROVEMENT] add date_date() function
3
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.5
1
+ 1.3.6
@@ -171,6 +171,16 @@ module Sparkql::ParserTools
171
171
  end
172
172
 
173
173
  def tokenize_multiple(lit1, lit2)
174
+ if lit1.nil? || lit2.nil?
175
+ return nil if errors?
176
+
177
+ tokenizer_error(token: @lexer.last_field,
178
+ message: 'Invalid value in field list.',
179
+ status: :fatal,
180
+ syntax: true)
181
+ return nil
182
+ end
183
+
174
184
  final_type = lit1[:type]
175
185
  if lit1[:type] != lit2[:type]
176
186
  final_type = coercible_types(lit1[:type], lit2[:type])
@@ -224,15 +234,17 @@ module Sparkql::ParserTools
224
234
  resolver = function_resolver(name, args)
225
235
  resolver.validate
226
236
  if resolver.errors?
227
- tokenizer_error(token: @lexer.last_field,
228
- message: "Error parsing function #{resolver.errors.join(',')}",
229
- status: :fatal,
230
- syntax: true)
231
- nil
232
- else
233
- result = resolver.call
234
- result.nil? ? result : result.merge(condition: "#{name}(#{condition_list.join(',')})")
237
+ report_function_resolver_errors(resolver)
238
+ return nil
235
239
  end
240
+
241
+ result = resolver.call
242
+ if result.nil?
243
+ report_function_resolver_errors(resolver) if resolver.errors?
244
+ return nil
245
+ end
246
+
247
+ result.merge(condition: "#{name}(#{condition_list.join(',')})")
236
248
  end
237
249
 
238
250
  def tokenize_arithmetic(lhs, operator, rhs)
@@ -448,4 +460,16 @@ module Sparkql::ParserTools
448
460
  def offset
449
461
  @offset ||= current_timestamp.strftime('%:z')
450
462
  end
463
+
464
+ private
465
+
466
+ def report_function_resolver_errors(resolver)
467
+ resolver.errors.each do |error|
468
+ tokenizer_error(token: error.token || @lexer.last_field,
469
+ message: error.message,
470
+ status: error.status,
471
+ syntax: error.syntax?,
472
+ constraint: error.constraint?)
473
+ end
474
+ end
451
475
  end
@@ -1232,6 +1232,18 @@ class ParserTest < Test::Unit::TestCase
1232
1232
  assert_equal 0, expressions.last[:block_group]
1233
1233
  end
1234
1234
 
1235
+ test 'oversized days() in Bt range returns parser error instead of raising' do
1236
+ [
1237
+ 'OriginalEntryTimestamp Bt days(0),days(365001)',
1238
+ 'OpenHouses Bt days(0),days(9223372036854775807)'
1239
+ ].each do |filter|
1240
+ @parser = Parser.new
1241
+ assert_nothing_raised { @parser.parse(filter) }
1242
+ assert @parser.fatal_errors?, "Expected fatal error for #{filter}"
1243
+ assert_match(/max offset/i, @parser.errors.first.message)
1244
+ end
1245
+ end
1246
+
1235
1247
  private
1236
1248
 
1237
1249
  def parser_errors(filter)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sparkql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.5
4
+ version: 1.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wade McEwen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-14 00:00:00.000000000 Z
11
+ date: 2026-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: georuby