sparkql 1.1.1 → 1.1.2
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 +8 -8
- data/CHANGELOG.md +5 -0
- data/VERSION +1 -1
- data/lib/sparkql/function_resolver.rb +93 -2
- data/test/unit/function_resolver_test.rb +33 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDJhMGNlYzU2MzNhMzQyZTZjMjE1YWQzYzQxZmZhNmQyZTkwNzEwOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDc2M2E2NDk3MjQwNTI4NWExZWRhMTE1OGFhNzYwYTg2YTViMDhkNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmI0ZTZjNmFjYjNjZThiMTVlMWJhNTkxN2EwNDI3YmRmZTg3ZmYyNDJiYTdm
|
10
|
+
OWFhMTQ5NDhlY2EwNGRkMzE3MGU0NTlhZDQwZWNmMGUzMThkM2JiZjVmOTAy
|
11
|
+
YmE0ZmE3OWFmY2RiZWEyYjJlNjE4MGVmN2NjMTc2OWQ0ODJlYTY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OGQ5OGI2YzdlNmUxYTVkOTJhNjk3NGEwM2ExODAwZGQ4MDA3M2M5YmVjNDcx
|
14
|
+
M2RlNmU3YjU5Zjk5NTgyNjljOTI2ZjZmODRmZjljZTExOTIwNzM3ZTdiMGJk
|
15
|
+
ZDc2NTI3NWUzMTlhOTg5NzM1NWYxOTg5ZDJkMTY1MTc4YmRhNDY=
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
v1.1.2, 2016-11-08 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.1...v1.1.2))
|
2
|
+
-------------------
|
3
|
+
* [IMPROVEMENT] New functions: year(), month(), day(), hour(), minute(), second(), and
|
4
|
+
fractionalseconds().
|
5
|
+
|
1
6
|
v1.1.1, 2016-09-09 ([changes](https://github.com/sparkapi/sparkql/compare/v1.1.0...v1.1.1))
|
2
7
|
-------------------
|
3
8
|
* [BUGFIX] Fix `Not` handling in the new Evaluation class
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.2
|
@@ -55,15 +55,50 @@ class Sparkql::FunctionResolver
|
|
55
55
|
:return_type => :datetime
|
56
56
|
},
|
57
57
|
:date => {
|
58
|
-
:args => [[:field,:datetime]],
|
58
|
+
:args => [[:field,:datetime,:date]],
|
59
59
|
:resolve_for_type => true,
|
60
60
|
:return_type => :date
|
61
61
|
},
|
62
62
|
:time => {
|
63
|
-
:args => [[:field,:datetime]],
|
63
|
+
:args => [[:field,:datetime,:date]],
|
64
64
|
:resolve_for_type => true,
|
65
65
|
:return_type => :time
|
66
66
|
},
|
67
|
+
:year => {
|
68
|
+
:args => [[:field,:datetime,:date]],
|
69
|
+
:resolve_for_type => true,
|
70
|
+
:return_type => :integer
|
71
|
+
},
|
72
|
+
:month => {
|
73
|
+
:args => [[:field,:datetime,:date]],
|
74
|
+
:resolve_for_type => true,
|
75
|
+
:return_type => :integer
|
76
|
+
},
|
77
|
+
:day => {
|
78
|
+
:args => [[:field,:datetime,:date]],
|
79
|
+
:resolve_for_type => true,
|
80
|
+
:return_type => :integer
|
81
|
+
},
|
82
|
+
:hour => {
|
83
|
+
:args => [[:field,:datetime,:date]],
|
84
|
+
:resolve_for_type => true,
|
85
|
+
:return_type => :integer
|
86
|
+
},
|
87
|
+
:minute => {
|
88
|
+
:args => [[:field,:datetime,:date]],
|
89
|
+
:resolve_for_type => true,
|
90
|
+
:return_type => :integer
|
91
|
+
},
|
92
|
+
:second => {
|
93
|
+
:args => [[:field,:datetime,:date]],
|
94
|
+
:resolve_for_type => true,
|
95
|
+
:return_type => :integer
|
96
|
+
},
|
97
|
+
:fractionalseconds => {
|
98
|
+
:args => [[:field,:datetime,:date]],
|
99
|
+
:resolve_for_type => true,
|
100
|
+
:return_type => :decimal
|
101
|
+
},
|
67
102
|
:range => {
|
68
103
|
:args => [:character, :character],
|
69
104
|
:return_type => :character
|
@@ -218,6 +253,62 @@ class Sparkql::FunctionResolver
|
|
218
253
|
}
|
219
254
|
end
|
220
255
|
|
256
|
+
def year_field(arg)
|
257
|
+
{
|
258
|
+
:type => :function,
|
259
|
+
:value => "year",
|
260
|
+
:args => [arg]
|
261
|
+
}
|
262
|
+
end
|
263
|
+
|
264
|
+
def month_field(arg)
|
265
|
+
{
|
266
|
+
:type => :function,
|
267
|
+
:value => "month",
|
268
|
+
:args => [arg]
|
269
|
+
}
|
270
|
+
end
|
271
|
+
|
272
|
+
def day_field(arg)
|
273
|
+
{
|
274
|
+
:type => :function,
|
275
|
+
:value => "day",
|
276
|
+
:args => [arg]
|
277
|
+
}
|
278
|
+
end
|
279
|
+
|
280
|
+
def hour_field(arg)
|
281
|
+
{
|
282
|
+
:type => :function,
|
283
|
+
:value => "hour",
|
284
|
+
:args => [arg]
|
285
|
+
}
|
286
|
+
end
|
287
|
+
|
288
|
+
def minute_field(arg)
|
289
|
+
{
|
290
|
+
:type => :function,
|
291
|
+
:value => "minute",
|
292
|
+
:args => [arg]
|
293
|
+
}
|
294
|
+
end
|
295
|
+
|
296
|
+
def second_field(arg)
|
297
|
+
{
|
298
|
+
:type => :function,
|
299
|
+
:value => "second",
|
300
|
+
:args => [arg]
|
301
|
+
}
|
302
|
+
end
|
303
|
+
|
304
|
+
def fractionalseconds_field(arg)
|
305
|
+
{
|
306
|
+
:type => :function,
|
307
|
+
:value => "fractionalseconds",
|
308
|
+
:args => [arg]
|
309
|
+
}
|
310
|
+
end
|
311
|
+
|
221
312
|
def date_datetime(dt)
|
222
313
|
{
|
223
314
|
:type => :date,
|
@@ -63,7 +63,39 @@ class FunctionResolverTest < Test::Unit::TestCase
|
|
63
63
|
assert_equal '2010-01-06', value[:value], "negative values should go back in time"
|
64
64
|
end
|
65
65
|
|
66
|
-
|
66
|
+
test "year(), month(), and day()" do
|
67
|
+
['year', 'month', 'day'].each do |function|
|
68
|
+
f = FunctionResolver.new(function, [{:type => :field, :value => "OriginalEntryTimestamp"}])
|
69
|
+
f.validate
|
70
|
+
assert !f.errors?, "Errors #{f.errors.inspect}"
|
71
|
+
value = f.call
|
72
|
+
assert_equal :function, value[:type]
|
73
|
+
assert_equal function, value[:value]
|
74
|
+
assert_equal "OriginalEntryTimestamp", value[:args].first
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
test "hour(), minute(), and second()" do
|
79
|
+
['year', 'month', 'day'].each do |function|
|
80
|
+
f = FunctionResolver.new(function, [{:type => :field, :value => "OriginalEntryTimestamp"}])
|
81
|
+
f.validate
|
82
|
+
assert !f.errors?, "Errors #{f.errors.inspect}"
|
83
|
+
value = f.call
|
84
|
+
assert_equal :function, value[:type]
|
85
|
+
assert_equal function, value[:value]
|
86
|
+
assert_equal "OriginalEntryTimestamp", value[:args].first
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
test "fractionalseconds()" do
|
91
|
+
f = FunctionResolver.new('fractionalseconds', [{:type => :field, :value => "OriginalEntryTimestamp"}])
|
92
|
+
f.validate
|
93
|
+
assert !f.errors?, "Errors #{f.errors.inspect}"
|
94
|
+
value = f.call
|
95
|
+
assert_equal :function, value[:type]
|
96
|
+
assert_equal 'fractionalseconds', value[:value]
|
97
|
+
assert_equal "OriginalEntryTimestamp", value[:args].first
|
98
|
+
end
|
67
99
|
|
68
100
|
# Polygon searches
|
69
101
|
|
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.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wade McEwen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: georuby
|