querybuilder 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,4 +1,10 @@
1
- == 0.9.4
1
+ == 0.9.5
2
+
3
+ * Major enhancements
4
+ * Better quoting when connection quote uses backslash (eval removes backslash).
5
+ * Fixed a bug when paginating without a limit clause.
6
+
7
+ == 0.9.4 2010-12-02
2
8
 
3
9
  * 1 Minor enhancement
4
10
  * Should only raise QueryBuilder::Error on initialize.
@@ -1,3 +1,3 @@
1
1
  module QueryBuilder
2
- VERSION = '0.9.4'
2
+ VERSION = '0.9.5'
3
3
  end
@@ -568,7 +568,7 @@ module QueryBuilder
568
568
 
569
569
  def process_paginate(query, paginate_fld)
570
570
  process(query)
571
- raise QueryBuilder::SyntaxError.new("Invalid paginate clause '#{paginate}' (used without limit).") unless @query.limit
571
+ raise QueryBuilder::SyntaxError.new("Invalid paginate clause (used without limit).") unless @query.limit
572
572
  context[:processing] = :paginate
573
573
  fld = process(paginate_fld)
574
574
  if fld && (page_size = @query.limit[/ LIMIT (\d+)/,1])
@@ -812,7 +812,9 @@ module QueryBuilder
812
812
  end
813
813
 
814
814
  def quote(arg)
815
- connection.quote(arg)
815
+ # we must backslash twice because 'eval' will take one out:
816
+ # 'l\\'avion' ==> 'l\'avion' ==> ok
817
+ connection.quote(arg).gsub('\\','\\\\\\\\') # we need 8
816
818
  end
817
819
 
818
820
  def connection
data/querybuilder.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{querybuilder}
8
- s.version = "0.9.4"
8
+ s.version = "0.9.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaspard Bucher"]
12
- s.date = %q{2010-12-02}
12
+ s.date = %q{2011-02-11}
13
13
  s.description = %q{QueryBuilder is an interpreter for the "pseudo sql" language. This language
14
14
  can be used for two purposes:
15
15
 
@@ -173,9 +173,6 @@ end
173
173
 
174
174
 
175
175
  class DummyClass
176
- # Mock connection and quoting
177
- def self.connection; self; end
178
- def self.quote(obj)
179
- obj.kind_of?(String) ? "'#{obj}'" : obj
180
- end
176
+ # Mock connection
177
+ def self.connection; ActiveRecord::Base.connection; end
181
178
  end
@@ -1,8 +1,5 @@
1
1
  class TestUser
2
- def self.connection; self; end
3
- def self.quote(obj)
4
- obj.kind_of?(String) ? "'#{obj}'" : obj
5
- end
2
+ def self.connection; ActiveRecord::Base.connection; end
6
3
  end
7
4
 
8
5
  class UserProcessor < QueryBuilder::Processor
@@ -14,6 +14,10 @@ offset_without_limit:
14
14
  src: "objects in project offset 3"
15
15
  res: "Invalid offset (used without limit)."
16
16
 
17
+ paginate_without_limit:
18
+ src: "objects in site paginate p"
19
+ res: "Invalid paginate clause (used without limit)."
20
+
17
21
  legacy_many_clauses:
18
22
  src: letters or foo
19
23
  res: "Unknown relation 'foo'."
@@ -159,4 +159,8 @@ filter_in_single_literal:
159
159
  filter_not_in_literal:
160
160
  src: "objects where id not in (1, 2 , 3,4) in site"
161
161
  sxp: '[:query, [:scope, [:filter, [:relation, "objects"], [:not, [:in, [:field, "id"], [:integer, "1"], [:integer, "2"], [:integer, "3"], [:integer, "4"]]]], "site"]]'
162
- sql: "SELECT objects.* FROM objects WHERE objects.id NOT IN (1,2,3,4)"
162
+ sql: "SELECT objects.* FROM objects WHERE objects.id NOT IN (1,2,3,4)"
163
+
164
+ filter_quote_string:
165
+ src: "objects where name = \"l'avion\""
166
+ sql: "SELECT objects.* FROM objects WHERE objects.name = 'l''avion' AND objects.parent_id = 123"
@@ -16,7 +16,6 @@ class DummyQueryBuilder < Test::Unit::TestCase
16
16
  def id; 123; end
17
17
  def parent_id; 333; end
18
18
  def project_id; 9999; end
19
- def connection; self; end
20
19
 
21
20
  context 'A query processor' do
22
21
  subject do
@@ -75,7 +74,7 @@ class DummyQueryBuilder < Test::Unit::TestCase
75
74
  should 'respond to select_keys' do
76
75
  assert_equal %w{a number c}, subject.select_keys
77
76
  end
78
-
77
+
79
78
  should 'not include star keys' do
80
79
  assert !subject.select_keys.include?('*')
81
80
  end
data/test/test_helper.rb CHANGED
@@ -10,4 +10,8 @@ require 'yamltest'
10
10
 
11
11
  require 'mock/dummy_processor'
12
12
  require 'mock/user_processor'
13
- require 'mock/dummy'
13
+ require 'mock/dummy'
14
+
15
+ require 'active_record'
16
+ # in order to use connection for quoting and such
17
+ ActiveRecord::Base.establish_connection(:adapter=>'sqlite3', :database=>':memory:')
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: querybuilder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 51
4
+ hash: 49
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 4
10
- version: 0.9.4
9
+ - 5
10
+ version: 0.9.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gaspard Bucher
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-02 00:00:00 +01:00
18
+ date: 2011-02-11 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency