arel 2.2.3 → 3.0.0.rc1

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.
@@ -62,7 +62,6 @@ lib/arel/table.rb
62
62
  lib/arel/tree_manager.rb
63
63
  lib/arel/update_manager.rb
64
64
  lib/arel/visitors.rb
65
- lib/arel/visitors/bind_visitor.rb
66
65
  lib/arel/visitors/depth_first.rb
67
66
  lib/arel/visitors/dot.rb
68
67
  lib/arel/visitors/ibm_db.rb
@@ -107,7 +106,6 @@ test/test_insert_manager.rb
107
106
  test/test_select_manager.rb
108
107
  test/test_table.rb
109
108
  test/test_update_manager.rb
110
- test/visitors/test_bind_visitor.rb
111
109
  test/visitors/test_depth_first.rb
112
110
  test/visitors/test_dot.rb
113
111
  test/visitors/test_ibm_db.rb
@@ -2,38 +2,35 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "arel"
5
- s.version = "2.2.3.20120221150435"
5
+ s.version = "3.0.0.pre.20111119204131"
6
6
 
7
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Aaron Patterson", "Bryan Halmkamp", "Emilio Tagua", "Nick Kallen"]
9
- s.date = "2012-02-21"
9
+ s.date = "2011-11-20"
10
10
  s.description = "Arel is a SQL AST manager for Ruby. It\n\n1. Simplifies the generation of complex SQL queries\n2. Adapts to various RDBMS systems\n\nIt is intended to be a framework framework; that is, you can build your own ORM\nwith it, focusing on innovative object and collection modeling as opposed to\ndatabase compatibility and query generation."
11
11
  s.email = ["aaron@tenderlovemaking.com", "bryan@brynary.com", "miloops@gmail.com", "nick@example.org"]
12
12
  s.extra_rdoc_files = ["History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown"]
13
- s.files = [".autotest", ".gemtest", ".travis.yml", "Gemfile", "History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown", "Rakefile", "arel.gemspec", "lib/arel.rb", "lib/arel/alias_predication.rb", "lib/arel/attributes.rb", "lib/arel/attributes/attribute.rb", "lib/arel/compatibility/wheres.rb", "lib/arel/crud.rb", "lib/arel/delete_manager.rb", "lib/arel/deprecated.rb", "lib/arel/expression.rb", "lib/arel/expressions.rb", "lib/arel/factory_methods.rb", "lib/arel/insert_manager.rb", "lib/arel/math.rb", "lib/arel/nodes.rb", "lib/arel/nodes/and.rb", "lib/arel/nodes/ascending.rb", "lib/arel/nodes/binary.rb", "lib/arel/nodes/count.rb", "lib/arel/nodes/delete_statement.rb", "lib/arel/nodes/descending.rb", "lib/arel/nodes/equality.rb", "lib/arel/nodes/false.rb", "lib/arel/nodes/function.rb", "lib/arel/nodes/in.rb", "lib/arel/nodes/infix_operation.rb", "lib/arel/nodes/inner_join.rb", "lib/arel/nodes/insert_statement.rb", "lib/arel/nodes/join_source.rb", "lib/arel/nodes/named_function.rb", "lib/arel/nodes/node.rb", "lib/arel/nodes/ordering.rb", "lib/arel/nodes/outer_join.rb", "lib/arel/nodes/select_core.rb", "lib/arel/nodes/select_statement.rb", "lib/arel/nodes/sql_literal.rb", "lib/arel/nodes/string_join.rb", "lib/arel/nodes/table_alias.rb", "lib/arel/nodes/terminal.rb", "lib/arel/nodes/true.rb", "lib/arel/nodes/unary.rb", "lib/arel/nodes/unqualified_column.rb", "lib/arel/nodes/update_statement.rb", "lib/arel/nodes/values.rb", "lib/arel/nodes/with.rb", "lib/arel/order_predications.rb", "lib/arel/predications.rb", "lib/arel/relation.rb", "lib/arel/select_manager.rb", "lib/arel/sql/engine.rb", "lib/arel/sql_literal.rb", "lib/arel/table.rb", "lib/arel/tree_manager.rb", "lib/arel/update_manager.rb", "lib/arel/visitors.rb", "lib/arel/visitors/bind_visitor.rb", "lib/arel/visitors/depth_first.rb", "lib/arel/visitors/dot.rb", "lib/arel/visitors/ibm_db.rb", "lib/arel/visitors/informix.rb", "lib/arel/visitors/join_sql.rb", "lib/arel/visitors/mssql.rb", "lib/arel/visitors/mysql.rb", "lib/arel/visitors/oracle.rb", "lib/arel/visitors/order_clauses.rb", "lib/arel/visitors/postgresql.rb", "lib/arel/visitors/sqlite.rb", "lib/arel/visitors/to_sql.rb", "lib/arel/visitors/visitor.rb", "lib/arel/visitors/where_sql.rb", "test/attributes/test_attribute.rb", "test/helper.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/support/fake_record.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_bind_visitor.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
13
+ s.files = [".autotest", ".gemtest", ".travis.yml", "Gemfile", "History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown", "Rakefile", "arel.gemspec", "lib/arel.rb", "lib/arel/alias_predication.rb", "lib/arel/attributes.rb", "lib/arel/attributes/attribute.rb", "lib/arel/compatibility/wheres.rb", "lib/arel/crud.rb", "lib/arel/delete_manager.rb", "lib/arel/deprecated.rb", "lib/arel/expression.rb", "lib/arel/expressions.rb", "lib/arel/factory_methods.rb", "lib/arel/insert_manager.rb", "lib/arel/math.rb", "lib/arel/nodes.rb", "lib/arel/nodes/and.rb", "lib/arel/nodes/ascending.rb", "lib/arel/nodes/binary.rb", "lib/arel/nodes/count.rb", "lib/arel/nodes/delete_statement.rb", "lib/arel/nodes/descending.rb", "lib/arel/nodes/equality.rb", "lib/arel/nodes/false.rb", "lib/arel/nodes/function.rb", "lib/arel/nodes/in.rb", "lib/arel/nodes/infix_operation.rb", "lib/arel/nodes/inner_join.rb", "lib/arel/nodes/insert_statement.rb", "lib/arel/nodes/join_source.rb", "lib/arel/nodes/named_function.rb", "lib/arel/nodes/node.rb", "lib/arel/nodes/ordering.rb", "lib/arel/nodes/outer_join.rb", "lib/arel/nodes/select_core.rb", "lib/arel/nodes/select_statement.rb", "lib/arel/nodes/sql_literal.rb", "lib/arel/nodes/string_join.rb", "lib/arel/nodes/table_alias.rb", "lib/arel/nodes/terminal.rb", "lib/arel/nodes/true.rb", "lib/arel/nodes/unary.rb", "lib/arel/nodes/unqualified_column.rb", "lib/arel/nodes/update_statement.rb", "lib/arel/nodes/values.rb", "lib/arel/nodes/with.rb", "lib/arel/order_predications.rb", "lib/arel/predications.rb", "lib/arel/relation.rb", "lib/arel/select_manager.rb", "lib/arel/sql/engine.rb", "lib/arel/sql_literal.rb", "lib/arel/table.rb", "lib/arel/tree_manager.rb", "lib/arel/update_manager.rb", "lib/arel/visitors.rb", "lib/arel/visitors/depth_first.rb", "lib/arel/visitors/dot.rb", "lib/arel/visitors/ibm_db.rb", "lib/arel/visitors/informix.rb", "lib/arel/visitors/join_sql.rb", "lib/arel/visitors/mssql.rb", "lib/arel/visitors/mysql.rb", "lib/arel/visitors/oracle.rb", "lib/arel/visitors/order_clauses.rb", "lib/arel/visitors/postgresql.rb", "lib/arel/visitors/sqlite.rb", "lib/arel/visitors/to_sql.rb", "lib/arel/visitors/visitor.rb", "lib/arel/visitors/where_sql.rb", "test/attributes/test_attribute.rb", "test/helper.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/support/fake_record.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
14
14
  s.homepage = "http://github.com/rails/arel"
15
15
  s.rdoc_options = ["--main", "README.markdown"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = "arel"
18
18
  s.rubygems_version = "1.8.11"
19
19
  s.summary = "Arel is a SQL AST manager for Ruby"
20
- s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_bind_visitor.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
20
+ s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_as.rb", "test/nodes/test_ascending.rb", "test/nodes/test_bin.rb", "test/nodes/test_count.rb", "test/nodes/test_delete_statement.rb", "test/nodes/test_descending.rb", "test/nodes/test_equality.rb", "test/nodes/test_infix_operation.rb", "test/nodes/test_insert_statement.rb", "test/nodes/test_named_function.rb", "test/nodes/test_node.rb", "test/nodes/test_not.rb", "test/nodes/test_or.rb", "test/nodes/test_select_core.rb", "test/nodes/test_select_statement.rb", "test/nodes/test_sql_literal.rb", "test/nodes/test_sum.rb", "test/nodes/test_update_statement.rb", "test/test_activerecord_compat.rb", "test/test_attributes.rb", "test/test_crud.rb", "test/test_delete_manager.rb", "test/test_factory_methods.rb", "test/test_insert_manager.rb", "test/test_select_manager.rb", "test/test_table.rb", "test/test_update_manager.rb", "test/visitors/test_depth_first.rb", "test/visitors/test_dot.rb", "test/visitors/test_ibm_db.rb", "test/visitors/test_informix.rb", "test/visitors/test_join_sql.rb", "test/visitors/test_mssql.rb", "test/visitors/test_mysql.rb", "test/visitors/test_oracle.rb", "test/visitors/test_postgres.rb", "test/visitors/test_sqlite.rb", "test/visitors/test_to_sql.rb"]
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  s.specification_version = 3
24
24
 
25
25
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
- s.add_development_dependency(%q<minitest>, ["~> 2.11"])
27
- s.add_development_dependency(%q<rdoc>, ["~> 3.10"])
28
- s.add_development_dependency(%q<hoe>, ["~> 2.13"])
26
+ s.add_development_dependency(%q<minitest>, ["~> 2.8"])
27
+ s.add_development_dependency(%q<hoe>, ["~> 2.12"])
29
28
  else
30
- s.add_dependency(%q<minitest>, ["~> 2.11"])
31
- s.add_dependency(%q<rdoc>, ["~> 3.10"])
32
- s.add_dependency(%q<hoe>, ["~> 2.13"])
29
+ s.add_dependency(%q<minitest>, ["~> 2.8"])
30
+ s.add_dependency(%q<hoe>, ["~> 2.12"])
33
31
  end
34
32
  else
35
- s.add_dependency(%q<minitest>, ["~> 2.11"])
36
- s.add_dependency(%q<rdoc>, ["~> 3.10"])
37
- s.add_dependency(%q<hoe>, ["~> 2.13"])
33
+ s.add_dependency(%q<minitest>, ["~> 2.8"])
34
+ s.add_dependency(%q<hoe>, ["~> 2.12"])
38
35
  end
39
36
  end
@@ -33,7 +33,7 @@ require 'arel/sql_literal'
33
33
  ####
34
34
 
35
35
  module Arel
36
- VERSION = '2.2.3'
36
+ VERSION = '3.0.0.rc1'
37
37
 
38
38
  def self.sql raw_sql
39
39
  Arel::Nodes::SqlLiteral.new raw_sql
@@ -39,7 +39,7 @@ module Arel
39
39
  def each &block
40
40
  return enum_for(:each) unless block_given?
41
41
 
42
- ::Arel::Visitors::DepthFirst.new(block).accept self
42
+ Visitors::DepthFirst.new(block).accept self
43
43
  end
44
44
  end
45
45
  end
@@ -6,8 +6,5 @@ module Arel
6
6
  include Arel::AliasPredication
7
7
  include Arel::OrderPredications
8
8
  end
9
-
10
- class BindParam < SqlLiteral
11
- end
12
9
  end
13
10
  end
@@ -51,7 +51,7 @@ module Arel
51
51
  if $VERBOSE
52
52
  warn "(#{caller.first}) where_clauses is deprecated and will be removed in arel 3.0.0 with no replacement"
53
53
  end
54
- to_sql = Visitors::ToSql.new @engine.connection_pool
54
+ to_sql = Visitors::ToSql.new @engine.connection
55
55
  @ctx.wheres.map { |c| to_sql.accept c }
56
56
  end
57
57
 
@@ -161,13 +161,13 @@ module Arel
161
161
 
162
162
  def wheres
163
163
  warn "#{caller[0]}: SelectManager#wheres is deprecated and will be removed in ARel 3.0.0 with no replacement"
164
- Compatibility::Wheres.new @engine.connection_pool, @ctx.wheres
164
+ Compatibility::Wheres.new @engine.connection, @ctx.wheres
165
165
  end
166
166
 
167
167
  def where_sql
168
168
  return if @ctx.wheres.empty?
169
169
 
170
- viz = Visitors::WhereSql.new @engine.connection_pool
170
+ viz = Visitors::WhereSql.new @engine.connection
171
171
  Nodes::SqlLiteral.new viz.accept @ctx
172
172
  end
173
173
 
@@ -222,7 +222,7 @@ module Arel
222
222
  end
223
223
 
224
224
  def order_clauses
225
- visitor = Visitors::OrderClauses.new(@engine.connection_pool)
225
+ visitor = Visitors::OrderClauses.new(@engine.connection)
226
226
  visitor.accept(@ast).map { |x|
227
227
  Nodes::SqlLiteral.new x
228
228
  }
@@ -109,7 +109,6 @@ module Arel
109
109
  alias :visit_Arel_Nodes_Lock :terminal
110
110
  alias :visit_Arel_Nodes_Node :terminal
111
111
  alias :visit_Arel_Nodes_SqlLiteral :terminal
112
- alias :visit_Arel_Nodes_BindParam :terminal
113
112
  alias :visit_Arel_SqlLiteral :terminal
114
113
  alias :visit_BigDecimal :terminal
115
114
  alias :visit_Bignum :terminal
@@ -65,7 +65,6 @@ module Arel
65
65
  visit_edge o, "expr"
66
66
  end
67
67
  alias :visit_Arel_Nodes_Group :unary
68
- alias :visit_Arel_Nodes_BindParam :unary
69
68
  alias :visit_Arel_Nodes_Grouping :unary
70
69
  alias :visit_Arel_Nodes_Having :unary
71
70
  alias :visit_Arel_Nodes_Limit :unary
@@ -4,30 +4,22 @@ require 'date'
4
4
  module Arel
5
5
  module Visitors
6
6
  class ToSql < Arel::Visitors::Visitor
7
- def initialize pool
8
- @pool = pool
9
- @connection = nil
7
+ attr_accessor :last_column
8
+
9
+ def initialize connection
10
+ @connection = connection
11
+ @schema_cache = connection.schema_cache
10
12
  @quoted_tables = {}
11
13
  @quoted_columns = {}
14
+ @last_column = nil
12
15
  end
13
16
 
14
17
  def accept object
15
18
  self.last_column = nil
16
- @pool.with_connection do |conn|
17
- @connection = conn
18
- super
19
- end
19
+ super
20
20
  end
21
21
 
22
22
  private
23
- def last_column= col
24
- Thread.current[:arel_visitors_to_sql_last_column] = col
25
- end
26
-
27
- def last_column
28
- Thread.current[:arel_visitors_to_sql_last_column]
29
- end
30
-
31
23
  def visit_Arel_Nodes_DeleteStatement o
32
24
  [
33
25
  "DELETE FROM #{visit o.relation}",
@@ -97,7 +89,7 @@ key on UpdateManager using UpdateManager#key=
97
89
  end
98
90
 
99
91
  def table_exists? name
100
- @pool.table_exists? name
92
+ @schema_cache.table_exists? name
101
93
  end
102
94
 
103
95
  def column_for attr
@@ -110,13 +102,13 @@ key on UpdateManager using UpdateManager#key=
110
102
  end
111
103
 
112
104
  def column_cache
113
- @pool.columns_hash
105
+ @schema_cache.columns_hash
114
106
  end
115
107
 
116
108
  def visit_Arel_Nodes_Values o
117
109
  "VALUES (#{o.expressions.zip(o.columns).map { |value, attr|
118
110
  if Nodes::SqlLiteral === value
119
- visit value
111
+ visit_Arel_Nodes_SqlLiteral value
120
112
  else
121
113
  quote(value, attr && column_for(attr))
122
114
  end
@@ -382,13 +374,14 @@ key on UpdateManager using UpdateManager#key=
382
374
 
383
375
  def literal o; o end
384
376
 
385
- alias :visit_Arel_Nodes_BindParam :literal
386
377
  alias :visit_Arel_Nodes_SqlLiteral :literal
387
378
  alias :visit_Arel_SqlLiteral :literal # This is deprecated
388
379
  alias :visit_Bignum :literal
389
380
  alias :visit_Fixnum :literal
390
381
 
391
- def quoted o; quote(o, last_column) end
382
+ def quoted o
383
+ quote(o, last_column)
384
+ end
392
385
 
393
386
  alias :visit_ActiveSupport_Multibyte_Chars :quoted
394
387
  alias :visit_ActiveSupport_StringInquirer :quoted
@@ -11,7 +11,6 @@ module Arel
11
11
  Nodes.const_get(k)
12
12
  }.grep(Class).each do |klass|
13
13
  next if Nodes::SqlLiteral == klass
14
- next if Nodes::BindParam == klass
15
14
  next if klass.name =~ /^Arel::Nodes::Test/
16
15
  assert klass.ancestors.include?(Nodes::Node), klass.name
17
16
  end
@@ -3,9 +3,10 @@ module FakeRecord
3
3
  end
4
4
 
5
5
  class Connection
6
- attr_reader :tables, :columns_hash, :visitor
6
+ attr_reader :tables, :columns_hash
7
+ attr_accessor :visitor
7
8
 
8
- def initialize(visitor)
9
+ def initialize(visitor = nil)
9
10
  @tables = %w{ users photos developers products}
10
11
  @columns = {
11
12
  'users' => [
@@ -50,6 +51,10 @@ module FakeRecord
50
51
  "\"#{name.to_s}\""
51
52
  end
52
53
 
54
+ def schema_cache
55
+ self
56
+ end
57
+
53
58
  def quote thing, column = nil
54
59
  if column && column.type == :integer
55
60
  return 'NULL' if thing.nil?
@@ -79,7 +84,8 @@ module FakeRecord
79
84
 
80
85
  def initialize
81
86
  @spec = Spec.new(:adapter => 'america')
82
- @connection = Connection.new(Arel::Visitors::ToSql.new(self))
87
+ @connection = Connection.new
88
+ @connection.visitor = Arel::Visitors::ToSql.new(connection)
83
89
  end
84
90
 
85
91
  def with_connection
@@ -93,6 +99,10 @@ module FakeRecord
93
99
  def columns_hash
94
100
  connection.columns_hash
95
101
  end
102
+
103
+ def schema_cache
104
+ connection
105
+ end
96
106
  end
97
107
 
98
108
  class Base
@@ -4,7 +4,7 @@ module Arel
4
4
  module Visitors
5
5
  describe 'the ibm_db visitor' do
6
6
  before do
7
- @visitor = IBM_DB.new Table.engine.connection_pool
7
+ @visitor = IBM_DB.new Table.engine.connection
8
8
  end
9
9
 
10
10
  it 'uses FETCH FIRST n ROWS to limit results' do
@@ -4,7 +4,7 @@ module Arel
4
4
  module Visitors
5
5
  describe 'the informix visitor' do
6
6
  before do
7
- @visitor = Informix.new Table.engine.connection_pool
7
+ @visitor = Informix.new Table.engine.connection
8
8
  end
9
9
 
10
10
  it 'uses LIMIT n to limit results' do
@@ -4,7 +4,7 @@ module Arel
4
4
  module Visitors
5
5
  describe 'the join_sql visitor' do
6
6
  before do
7
- @visitor = ToSql.new Table.engine.connection_pool
7
+ @visitor = ToSql.new Table.engine.connection
8
8
  @visitor.extend(JoinSql)
9
9
  end
10
10
 
@@ -4,7 +4,7 @@ module Arel
4
4
  module Visitors
5
5
  describe 'the mssql visitor' do
6
6
  before do
7
- @visitor = MSSQL.new Table.engine.connection_pool
7
+ @visitor = MSSQL.new Table.engine.connection
8
8
  @table = Arel::Table.new "users"
9
9
  end
10
10
 
@@ -4,7 +4,7 @@ module Arel
4
4
  module Visitors
5
5
  describe 'the mysql visitor' do
6
6
  before do
7
- @visitor = MySQL.new Table.engine.connection_pool
7
+ @visitor = MySQL.new Table.engine.connection
8
8
  end
9
9
 
10
10
  it 'squashes parenthesis on multiple unions' do
@@ -4,7 +4,7 @@ module Arel
4
4
  module Visitors
5
5
  describe 'the postgres visitor' do
6
6
  before do
7
- @visitor = PostgreSQL.new Table.engine.connection_pool
7
+ @visitor = PostgreSQL.new Table.engine.connection
8
8
  end
9
9
 
10
10
  describe 'locking' do
@@ -1,24 +1,14 @@
1
1
  require 'helper'
2
2
 
3
- class Arel::Visitors::ToSql
4
- def last_column; Thread.current[:arel_visitors_to_sql_last_column]; end
5
- end
6
-
7
3
  module Arel
8
4
  module Visitors
9
5
  describe 'the to_sql visitor' do
10
6
  before do
11
- @visitor = ToSql.new Table.engine.connection_pool
7
+ @visitor = ToSql.new Table.engine.connection
12
8
  @table = Table.new(:users)
13
9
  @attr = @table[:id]
14
10
  end
15
11
 
16
- it 'works with BindParams' do
17
- node = Nodes::BindParam.new 'omg'
18
- sql = @visitor.accept node
19
- sql.must_be_like 'omg'
20
- end
21
-
22
12
  it 'can define a dispatch method' do
23
13
  visited = false
24
14
  viz = Class.new(Arel::Visitors::Visitor) {
@@ -35,20 +25,6 @@ module Arel
35
25
  assert visited, 'hello method was called'
36
26
  end
37
27
 
38
- it "should be thread safe around usage of last_column" do
39
- visit_integer_column = Thread.new do
40
- Thread.stop
41
- @visitor.send(:visit_Arel_Attributes_Attribute, @attr)
42
- end
43
-
44
- sleep 0.2
45
- @visitor.accept(@table[:name])
46
- assert_equal(:string, @visitor.last_column.type)
47
- visit_integer_column.run
48
- visit_integer_column.join
49
- assert_equal(:string, @visitor.last_column.type)
50
- end
51
-
52
28
  it 'should not quote sql literals' do
53
29
  node = @table[Arel.star]
54
30
  sql = @visitor.accept node
@@ -226,7 +202,7 @@ module Arel
226
202
  end
227
203
  end
228
204
  in_node = Nodes::In.new @attr, %w{ a b c }
229
- visitor = visitor.new(Table.engine.connection_pool)
205
+ visitor = visitor.new(Table.engine.connection)
230
206
  visitor.expected = Table.engine.connection.columns(:users).find { |x|
231
207
  x.name == 'name'
232
208
  }
@@ -314,7 +290,7 @@ module Arel
314
290
  end
315
291
  end
316
292
  in_node = Nodes::NotIn.new @attr, %w{ a b c }
317
- visitor = visitor.new(Table.engine.connection_pool)
293
+ visitor = visitor.new(Table.engine.connection)
318
294
  visitor.expected = Table.engine.connection.columns(:users).find { |x|
319
295
  x.name == 'name'
320
296
  }
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
5
- prerelease:
4
+ version: 3.0.0.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Aaron Patterson
@@ -12,41 +12,41 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-02-21 00:00:00.000000000 Z
15
+ date: 2011-12-14 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: minitest
19
- requirement: &70248113196260 !ruby/object:Gem::Requirement
19
+ requirement: &70238561431700 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: '2.11'
24
+ version: '2.9'
25
25
  type: :development
26
26
  prerelease: false
27
- version_requirements: *70248113196260
27
+ version_requirements: *70238561431700
28
28
  - !ruby/object:Gem::Dependency
29
- name: rdoc
30
- requirement: &70248113195480 !ruby/object:Gem::Requirement
29
+ name: hoe
30
+ requirement: &70238561493640 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ~>
34
34
  - !ruby/object:Gem::Version
35
- version: '3.10'
35
+ version: '2.12'
36
36
  type: :development
37
37
  prerelease: false
38
- version_requirements: *70248113195480
38
+ version_requirements: *70238561493640
39
39
  - !ruby/object:Gem::Dependency
40
- name: hoe
41
- requirement: &70248113194600 !ruby/object:Gem::Requirement
40
+ name: rdoc
41
+ requirement: &70238562708680 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ~>
45
45
  - !ruby/object:Gem::Version
46
- version: '2.13'
46
+ version: '3.10'
47
47
  type: :development
48
48
  prerelease: false
49
- version_requirements: *70248113194600
49
+ version_requirements: *70238562708680
50
50
  description: ! 'Arel is a SQL AST manager for Ruby. It
51
51
 
52
52
 
@@ -137,7 +137,6 @@ files:
137
137
  - lib/arel/tree_manager.rb
138
138
  - lib/arel/update_manager.rb
139
139
  - lib/arel/visitors.rb
140
- - lib/arel/visitors/bind_visitor.rb
141
140
  - lib/arel/visitors/depth_first.rb
142
141
  - lib/arel/visitors/dot.rb
143
142
  - lib/arel/visitors/ibm_db.rb
@@ -182,7 +181,6 @@ files:
182
181
  - test/test_select_manager.rb
183
182
  - test/test_table.rb
184
183
  - test/test_update_manager.rb
185
- - test/visitors/test_bind_visitor.rb
186
184
  - test/visitors/test_depth_first.rb
187
185
  - test/visitors/test_dot.rb
188
186
  - test/visitors/test_ibm_db.rb
@@ -211,9 +209,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
209
  required_rubygems_version: !ruby/object:Gem::Requirement
212
210
  none: false
213
211
  requirements:
214
- - - ! '>='
212
+ - - ! '>'
215
213
  - !ruby/object:Gem::Version
216
- version: '0'
214
+ version: 1.3.1
217
215
  requirements: []
218
216
  rubyforge_project: arel
219
217
  rubygems_version: 1.8.11
@@ -249,7 +247,6 @@ test_files:
249
247
  - test/test_select_manager.rb
250
248
  - test/test_table.rb
251
249
  - test/test_update_manager.rb
252
- - test/visitors/test_bind_visitor.rb
253
250
  - test/visitors/test_depth_first.rb
254
251
  - test/visitors/test_dot.rb
255
252
  - test/visitors/test_ibm_db.rb
@@ -1,24 +0,0 @@
1
- module Arel
2
- module Visitors
3
- module BindVisitor
4
- def initialize target
5
- @block = nil
6
- super
7
- end
8
-
9
- def accept node, &block
10
- @block = block if block_given?
11
- super
12
- end
13
-
14
- private
15
- def visit_Arel_Nodes_BindParam o
16
- if @block
17
- @block.call
18
- else
19
- super
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,39 +0,0 @@
1
- require 'helper'
2
- require 'arel/visitors/bind_visitor'
3
-
4
- module Arel
5
- module Visitors
6
- class TestBindVisitor < MiniTest::Unit::TestCase
7
- def test_visitor_yields_on_binds
8
- visitor = Class.new(Arel::Visitors::Visitor) {
9
- def initialize omg
10
- end
11
-
12
- include Arel::Visitors::BindVisitor
13
- }.new nil
14
-
15
- bp = Nodes::BindParam.new 'omg'
16
- called = false
17
- visitor.accept(bp) { called = true }
18
- assert called
19
- end
20
-
21
- def test_visitor_only_yields_on_binds
22
- visitor = Class.new(Arel::Visitors::Visitor) {
23
- def initialize omg
24
- end
25
-
26
- include Arel::Visitors::BindVisitor
27
- }.new(nil)
28
-
29
- bp = Arel.sql 'omg'
30
- called = false
31
-
32
- assert_raises(TypeError) {
33
- visitor.accept(bp) { called = true }
34
- }
35
- refute called
36
- end
37
- end
38
- end
39
- end