sparkql 1.1.16 → 1.1.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MDI5NzJhMzM4MGY2MWFlNGM0YjE3N2Y1OWI2NDBhYzhhYTA5ODU2NQ==
4
+ MzI5MGFiMTAwMTgyYjkyZDQyODY4MGE3ZDFkYTQ1NjFiODYyODAxMQ==
5
5
  data.tar.gz: !binary |-
6
- MmJlZTY5NzRlZGEwY2RkYTcyNzU1NDUyMzBiZGY1MDdjN2IwZjI1OA==
6
+ MGI1OTQwNWQ5OTg1MzNkYTc2MzQzM2Y1ZjRmMGViNWFlODQ5ZTE2MQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NWY3MDFkNWIyYmM2ZjNmODMwMTA3MWQzZTZlN2NhMmEzNTA2YzE5M2Q4NzEw
10
- MmE0YWJhM2ZlYTkxZWE5ZDAyYWU0NDNiZTVlZjZlM2FkMzgwZTA0ZTI0OTEy
11
- ZDAxNzc5NzdmNTgzMWYxN2U4MjAzZDJkYmJjMTdlMGMyNDE2ZmY=
9
+ NmVhZmM2ZWQzZmI0M2EyZmNlNmE2MTE0ZTE3MGZmZDU0MWIxZDZlZmMxOTA5
10
+ NGViMTdjNjI0YzkwY2FkODUxY2I5M2RlMTY4OTRmNTQ2NjY5NjQzZTIyZjgx
11
+ ZTNmMTUzNDFiMDI0ZWNmMzk5MzcyMjQ0ZWViMDQ4ZDE3NmRlOWY=
12
12
  data.tar.gz: !binary |-
13
- YTI4YmQwYzFkNjllNDc0Yzg0YWFiYzVjMGZmNDJkNDNlODc5MTcyMzVhYzcy
14
- MjhmMjUyMTQwYmUwMjY4N2U1MzIzNzI5MWVjMmFjNmI0MDg3ZDBmMmZiZDFl
15
- YzZhNjkxYTAxZTJiZGI1MTZjY2NlMjlmNjYyZGExNmRkMDdjYTU=
13
+ MGNiYmRhOTQ2ODlhMzM4ODRlNzdiYTg5YmNkNDZkZmIxOTc5ZTdkNTIxMjhh
14
+ MjgzMGY4ZmE3MDgzNTk5NGJmMTUzYjExYTNkYzhjMGNkY2IzOWNkMDU5OGEy
15
+ YTJkYTIxZDM5ODJkMDI5YWQxMjBmZjRlYjdhYzNlMjhiYTZkMzQ=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ v1.1.17, 2018-08-01
2
+ -------------------
3
+ * [IMPROVEMENT] New Function: concat()
4
+
1
5
  v1.1.16, 2018-07-26
2
6
  -------------------
3
7
  * [IMPROVEMENT] New Function: cast()
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.16
1
+ 1.1.17
@@ -71,6 +71,11 @@ class Sparkql::FunctionResolver
71
71
  :args => [[:field, :character], :character],
72
72
  :return_type => :integer
73
73
  },
74
+ :concat => {
75
+ :args => [[:field, :character], :character],
76
+ :resolve_for_type => true,
77
+ :return_type => :character
78
+ },
74
79
  :cast => {
75
80
  :args => [[:field, :character, :decimal, :integer, :null], :character],
76
81
  :resolve_for_type => true,
@@ -553,6 +558,21 @@ class Sparkql::FunctionResolver
553
558
  }
554
559
  end
555
560
 
561
+ def concat_character(arg1, arg2)
562
+ {
563
+ :type => :character,
564
+ :value => "'#{arg1}#{arg2}'"
565
+ }
566
+ end
567
+
568
+ def concat_field(arg1, arg2)
569
+ {
570
+ :type => :function,
571
+ :value => 'concat',
572
+ :args => [arg1, arg2]
573
+ }
574
+ end
575
+
556
576
  def date_field(arg)
557
577
  {
558
578
  :type => :function,
@@ -753,6 +753,30 @@ class ParserTest < Test::Unit::TestCase
753
753
  assert_equal(["FieldName"], expression[:function_parameters])
754
754
  end
755
755
 
756
+ def test_concat_with_field
757
+ filter = "City Eq concat(City, 'b')"
758
+ @parser = Parser.new
759
+ expression = @parser.parse(filter).first
760
+ assert !@parser.errors?, "Filter '#{filter}' failed: #{@parser.errors.first.inspect}"
761
+
762
+ assert_equal :function, expression[:type]
763
+ assert_equal 'concat', expression[:function_name]
764
+ assert_equal(["City", 'b'], expression[:function_parameters])
765
+ assert_equal("City", expression[:field])
766
+ end
767
+
768
+ def test_concat_with_literal
769
+ filter = "City Eq concat('a', 'b')"
770
+ @parser = Parser.new
771
+ expression = @parser.parse(filter).first
772
+ assert !@parser.errors?, "Filter '#{filter}' failed: #{@parser.errors.first.inspect}"
773
+
774
+ assert_equal 'concat', expression[:function_name]
775
+ assert_equal :character, expression[:type]
776
+ assert_equal "'ab'", expression[:value]
777
+ assert_equal ["a", "b"], expression[:function_parameters]
778
+ end
779
+
756
780
  def test_cast_with_field
757
781
  filter = "cast(ListPrice, 'character') Eq '100000'"
758
782
  @parser = Parser.new
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.16
4
+ version: 1.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wade McEwen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-01 00:00:00.000000000 Z
11
+ date: 2018-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: georuby