arel 4.0.2 → 5.0.0

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
  SHA1:
3
- metadata.gz: fe1827bf9b3fb8d0df377a874b604c6d1fbb4387
4
- data.tar.gz: 050b51b492c74c09be3aa3f4a58487ef3150c57b
3
+ metadata.gz: 5e4a4617ad12bc06100404774da8861b906302a0
4
+ data.tar.gz: ef0b304f87d0607f4225cda23a84fe972fa5f5d5
5
5
  SHA512:
6
- metadata.gz: 200b67f47b08b79e6b514035398fd8f00d810e786af0de57862ee68ec4ff228f68b036419273add78450df7c18f6da4b54b68e6b78eeacbb98575c40d426d2be
7
- data.tar.gz: 692a06c47c099852541d12c6499ef2c9bbe0f943fc5f2023f6523e6a819c14d43e7add74e834b9aa0290a17156bc4bf38ba32d043daf6248e20765664104141c
6
+ metadata.gz: e8f247d114fe817f8efa0810ed924f791fda25b55fa2f998449150c31e42dd1c8c10bf56d2c3afbcc4f6344962ada47ef0b503deedc995df10eb9c103827f1ba
7
+ data.tar.gz: 6fad98f033050e0556bed7ba338b8e7456b2758c62d58f98709c768f3e1496adf1a9f3d2e241be1c0f289c4fd91c694adec01c452f933f8caeef6495ccdca901
@@ -1,9 +1,12 @@
1
- === 4.0.2 / 2014-02-05
1
+ == 5.0.0 / 2013-12-04
2
+
3
+ * Enhancements
4
+
5
+ * Remove deprecated code
2
6
 
3
7
  * Bug Fixes
4
8
 
5
- * Fix `SqlLiteral` YAML serialization
6
- * PostgreSQL bugfix for invalid SQL in subqueries
9
+ * Fix serializing a relation when calling `to_yaml`
7
10
 
8
11
  == 4.0.1 / 2013-10-22
9
12
 
@@ -17,6 +20,57 @@
17
20
  * Make visitors threadsafe by removing @last_column
18
21
  * Support `columns_for_distinct` with Oracle adapter
19
22
 
23
+ == 3.0.3 / 2013-11-12
24
+
25
+ * Enhancements
26
+
27
+ * Support ANSI 2003 window functions
28
+
29
+ * Bug Fixes
30
+
31
+ * Fix joins in Informix
32
+
33
+ == 3.0.2 / 2012-02-21
34
+
35
+ * Enhancements
36
+
37
+ * Added a module for visiting and transforming bind values
38
+ * Fix in [] to be false, not in [] to be true
39
+
40
+ * Bug Fixes
41
+
42
+ * Revert fix for LIMIT / OFFSET when query is ordered in Oracle
43
+
44
+ == 3.0.1 / 2012-02-17
45
+
46
+ * Bug Fixes
47
+
48
+ * Fixed LIMIT / OFFSET when query is ordered in Oracle
49
+
50
+ == 3.0.0 / 2012-01-12
51
+
52
+ * Enhancements
53
+
54
+ * Support connection pool and schema cache
55
+
56
+ * Bug Fixes
57
+
58
+ * Conditions with no column can be followed by other conditions in Postgres
59
+
60
+ == 2.2.3 / 2012-02-21
61
+
62
+ * Enhancements
63
+
64
+ * Added a module for visiting and transforming bind values
65
+
66
+ == 2.2.2 / 2012-02-20
67
+
68
+ * Enhancements
69
+
70
+ * Support LOCK
71
+ * Allow using non-table alias as a right-hand relation name
72
+ * Added SelectManager#distinct
73
+
20
74
  == 2.2.1 / 2011-09-15
21
75
 
22
76
  * Enhancements
@@ -110,7 +110,6 @@ test/nodes/test_true.rb
110
110
  test/nodes/test_update_statement.rb
111
111
  test/nodes/test_window.rb
112
112
  test/support/fake_record.rb
113
- test/test_activerecord_compat.rb
114
113
  test/test_attributes.rb
115
114
  test/test_crud.rb
116
115
  test/test_delete_manager.rb
@@ -7,7 +7,7 @@
7
7
  Arel is a SQL AST manager for Ruby. It
8
8
 
9
9
  1. Simplifies the generation of complex SQL queries
10
- 2. Adapts to various RDBMS systems
10
+ 2. Adapts to various RDBMSes
11
11
 
12
12
  It is intended to be a framework framework; that is, you can build your own ORM
13
13
  with it, focusing on innovative object and collection modeling as opposed to
@@ -111,12 +111,10 @@ Suppose we have a table `products` with prices in different currencies. And we h
111
111
 
112
112
  ```ruby
113
113
  products = Arel::Table.new(:products)
114
- products.columns
115
- # => [products[:id], products[:name], products[:price], products[:currency_id]]
114
+ # Attributes: [:id, :name, :price, :currency_id]
116
115
 
117
116
  currency_rates = Arel::Table.new(:currency_rates)
118
- currency_rates.columns
119
- # => [currency_rates[:from_id], currency_rates[:to_id], currency_rates[:date], currency_rates[:rate]]
117
+ # Attributes: [:from_id, :to_id, :date, :rate]
120
118
  ```
121
119
 
122
120
  Now, to order products by price in user preferred currency simply call:
@@ -139,8 +137,7 @@ comments = Arel::Table.new(:comments)
139
137
  And this table has the following attributes:
140
138
 
141
139
  ```ruby
142
- comments.columns
143
- # => [comments[:id], comments[:body], comments[:parent_id]]
140
+ # [:id, :body, :parent_id]
144
141
  ```
145
142
 
146
143
  The `parent_id` column is a foreign key from the `comments` table to itself. Now, joining a table to itself requires aliasing in SQL. In fact, you may alias in Arel as well:
@@ -1,41 +1,41 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: arel 4.0.2.20140205180311 ruby lib
2
+ # stub: arel 5.0.0.20131204235845 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "arel"
6
- s.version = "4.0.2.20140205180311"
6
+ s.version = "5.0.0.20131204235845"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
- s.require_paths = ["lib"]
10
9
  s.authors = ["Aaron Patterson", "Bryan Halmkamp", "Emilio Tagua", "Nick Kallen"]
11
- s.date = "2014-02-05"
12
- 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."
10
+ s.date = "2013-12-05"
11
+ s.description = "Arel is a SQL AST manager for Ruby. It\n\n1. Simplifies the generation of complex SQL queries\n2. Adapts to various RDBMSes\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."
13
12
  s.email = ["aaron@tenderlovemaking.com", "bryan@brynary.com", "miloops@gmail.com", "nick@example.org"]
14
13
  s.extra_rdoc_files = ["History.txt", "MIT-LICENSE.txt", "Manifest.txt", "README.markdown"]
15
- 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/extract.rb", "lib/arel/nodes/false.rb", "lib/arel/nodes/function.rb", "lib/arel/nodes/grouping.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/outer_join.rb", "lib/arel/nodes/over.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/window.rb", "lib/arel/nodes/with.rb", "lib/arel/order_predications.rb", "lib/arel/predications.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", "lib/arel/window_predications.rb", "test/attributes/test_attribute.rb", "test/helper.rb", "test/nodes/test_and.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_distinct.rb", "test/nodes/test_equality.rb", "test/nodes/test_extract.rb", "test/nodes/test_false.rb", "test/nodes/test_grouping.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_over.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_table_alias.rb", "test/nodes/test_true.rb", "test/nodes/test_update_statement.rb", "test/nodes/test_window.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_dispatch_contamination.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
+ 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/extract.rb", "lib/arel/nodes/false.rb", "lib/arel/nodes/function.rb", "lib/arel/nodes/grouping.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/outer_join.rb", "lib/arel/nodes/over.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/window.rb", "lib/arel/nodes/with.rb", "lib/arel/order_predications.rb", "lib/arel/predications.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", "lib/arel/window_predications.rb", "test/attributes/test_attribute.rb", "test/helper.rb", "test/nodes/test_and.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_distinct.rb", "test/nodes/test_equality.rb", "test/nodes/test_extract.rb", "test/nodes/test_false.rb", "test/nodes/test_grouping.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_over.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_table_alias.rb", "test/nodes/test_true.rb", "test/nodes/test_update_statement.rb", "test/nodes/test_window.rb", "test/support/fake_record.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_dispatch_contamination.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"]
16
15
  s.homepage = "http://github.com/rails/arel"
17
16
  s.licenses = ["MIT"]
18
17
  s.rdoc_options = ["--main", "README.markdown"]
18
+ s.require_paths = ["lib"]
19
19
  s.rubyforge_project = "arel"
20
- s.rubygems_version = "2.2.0"
20
+ s.rubygems_version = "2.1.11"
21
21
  s.summary = "Arel is a SQL AST manager for Ruby"
22
- s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_and.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_distinct.rb", "test/nodes/test_equality.rb", "test/nodes/test_extract.rb", "test/nodes/test_false.rb", "test/nodes/test_grouping.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_over.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_table_alias.rb", "test/nodes/test_true.rb", "test/nodes/test_update_statement.rb", "test/nodes/test_window.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_dispatch_contamination.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"]
22
+ s.test_files = ["test/attributes/test_attribute.rb", "test/nodes/test_and.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_distinct.rb", "test/nodes/test_equality.rb", "test/nodes/test_extract.rb", "test/nodes/test_false.rb", "test/nodes/test_grouping.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_over.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_table_alias.rb", "test/nodes/test_true.rb", "test/nodes/test_update_statement.rb", "test/nodes/test_window.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_dispatch_contamination.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"]
23
23
 
24
24
  if s.respond_to? :specification_version then
25
25
  s.specification_version = 4
26
26
 
27
27
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
28
- s.add_development_dependency(%q<minitest>, ["~> 5.2"])
28
+ s.add_development_dependency(%q<minitest>, ["~> 5.0"])
29
29
  s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
30
- s.add_development_dependency(%q<hoe>, ["~> 3.8"])
30
+ s.add_development_dependency(%q<hoe>, ["~> 3.7"])
31
31
  else
32
- s.add_dependency(%q<minitest>, ["~> 5.2"])
32
+ s.add_dependency(%q<minitest>, ["~> 5.0"])
33
33
  s.add_dependency(%q<rdoc>, ["~> 4.0"])
34
- s.add_dependency(%q<hoe>, ["~> 3.8"])
34
+ s.add_dependency(%q<hoe>, ["~> 3.7"])
35
35
  end
36
36
  else
37
- s.add_dependency(%q<minitest>, ["~> 5.2"])
37
+ s.add_dependency(%q<minitest>, ["~> 5.0"])
38
38
  s.add_dependency(%q<rdoc>, ["~> 4.0"])
39
- s.add_dependency(%q<hoe>, ["~> 3.8"])
39
+ s.add_dependency(%q<hoe>, ["~> 3.7"])
40
40
  end
41
41
  end
@@ -32,7 +32,7 @@ require 'arel/sql_literal'
32
32
  ####
33
33
 
34
34
  module Arel
35
- VERSION = '4.0.2'
35
+ VERSION = '5.0.0'
36
36
 
37
37
  def self.sql raw_sql
38
38
  Arel::Nodes::SqlLiteral.new raw_sql
@@ -2,7 +2,7 @@ module Arel
2
2
  ###
3
3
  # FIXME hopefully we can remove this
4
4
  module Crud
5
- def compile_update values
5
+ def compile_update values, pk
6
6
  um = UpdateManager.new @engine
7
7
 
8
8
  if Nodes::SqlLiteral === values
@@ -10,6 +10,7 @@ module Arel
10
10
  else
11
11
  relation = values.first.first.relation
12
12
  end
13
+ um.key = pk
13
14
  um.table relation
14
15
  um.set values
15
16
  um.take @ast.limit.expr if @ast.limit
@@ -18,19 +19,6 @@ module Arel
18
19
  um
19
20
  end
20
21
 
21
- # FIXME: this method should go away
22
- def update values
23
- if $VERBOSE
24
- warn <<-eowarn
25
- update (#{caller.first}) is deprecated and will be removed in Arel 4.0.0. Please
26
- switch to `compile_update`
27
- eowarn
28
- end
29
-
30
- um = compile_update values
31
- @engine.connection.update um.to_sql, 'AREL'
32
- end
33
-
34
22
  def compile_insert values
35
23
  im = create_insert
36
24
  im.insert values
@@ -41,17 +29,6 @@ switch to `compile_update`
41
29
  InsertManager.new @engine
42
30
  end
43
31
 
44
- # FIXME: this method should go away
45
- def insert values
46
- if $VERBOSE
47
- warn <<-eowarn
48
- insert (#{caller.first}) is deprecated and will be removed in Arel 4.0.0. Please
49
- switch to `compile_insert`
50
- eowarn
51
- end
52
- @engine.connection.insert compile_insert(values).to_sql
53
- end
54
-
55
32
  def compile_delete
56
33
  dm = DeleteManager.new @engine
57
34
  dm.wheres = @ctx.wheres
@@ -59,14 +36,5 @@ switch to `compile_insert`
59
36
  dm
60
37
  end
61
38
 
62
- def delete
63
- if $VERBOSE
64
- warn <<-eowarn
65
- delete (#{caller.first}) is deprecated and will be removed in Arel 4.0.0. Please
66
- switch to `compile_delete`
67
- eowarn
68
- end
69
- @engine.connection.delete compile_delete.to_sql, 'AREL'
70
- end
71
39
  end
72
40
  end
@@ -47,14 +47,6 @@ module Arel
47
47
  create_table_alias grouping(@ast), Nodes::SqlLiteral.new(other)
48
48
  end
49
49
 
50
- def where_clauses
51
- if $VERBOSE
52
- warn "(#{caller.first}) where_clauses is deprecated and will be removed in arel 4.0.0 with no replacement"
53
- end
54
- to_sql = Visitors::ToSql.new @engine.connection
55
- @ctx.wheres.map { |c| to_sql.accept c }
56
- end
57
-
58
50
  def lock locking = Arel.sql('FOR UPDATE')
59
51
  case locking
60
52
  when true
@@ -169,11 +161,6 @@ module Arel
169
161
  @ast.orders
170
162
  end
171
163
 
172
- def wheres
173
- warn "#{caller[0]}: SelectManager#wheres is deprecated and will be removed in Arel 4.0.0 with no replacement"
174
- Compatibility::Wheres.new @engine.connection, @ctx.wheres
175
- end
176
-
177
164
  def where_sql
178
165
  return if @ctx.wheres.empty?
179
166
 
@@ -272,31 +259,6 @@ module Arel
272
259
  @engine.connection.send(:select, to_sql, 'AREL').map { |x| Row.new(x) }
273
260
  end
274
261
 
275
- # FIXME: this method should go away
276
- def insert values
277
- if $VERBOSE
278
- warn <<-eowarn
279
- insert (#{caller.first}) is deprecated and will be removed in Arel 4.0.0. Please
280
- switch to `compile_insert`
281
- eowarn
282
- end
283
-
284
- im = compile_insert(values)
285
- table = @ctx.froms
286
-
287
- primary_key = table.primary_key
288
- primary_key_name = primary_key.name if primary_key
289
-
290
- # FIXME: in AR tests values sometimes were Array and not Hash therefore is_a?(Hash) check is added
291
- primary_key_value = primary_key && values.is_a?(Hash) && values[primary_key]
292
- im.into table
293
- # Oracle adapter needs primary key name to generate RETURNING ... INTO ... clause
294
- # for tables which assign primary key value using trigger.
295
- # RETURNING ... INTO ... clause will be added only if primary_key_value is nil
296
- # therefore it is necessary to pass primary key value as well
297
- @engine.connection.insert im.to_sql, 'AREL', primary_key_name, primary_key_value
298
- end
299
-
300
262
  private
301
263
  def collapse exprs, existing = nil
302
264
  exprs = exprs.unshift(existing.expr) if existing
@@ -100,17 +100,6 @@ primary_key (#{caller.first}) is deprecated and will be removed in Arel 4.0.0
100
100
  from(self).having expr
101
101
  end
102
102
 
103
- def columns
104
- if $VERBOSE
105
- warn <<-eowarn
106
- (#{caller.first}) Arel::Table#columns is deprecated and will be removed in
107
- Arel 4.0.0 with no replacement. PEW PEW PEW!!!
108
- eowarn
109
- end
110
- @columns ||=
111
- attributes_for @engine.connection.columns(@name, "#{@name} Columns")
112
- end
113
-
114
103
  def [] name
115
104
  ::Arel::Attribute.new self, name
116
105
  end
@@ -149,15 +138,5 @@ Arel 4.0.0 with no replacement. PEW PEW PEW!!!
149
138
  end
150
139
  end
151
140
 
152
- @@table_cache = nil
153
- def self.table_cache engine # :nodoc:
154
- if $VERBOSE
155
- warn <<-eowarn
156
- (#{caller.first}) Arel::Table.table_cache is deprecated and will be removed in
157
- Arel 4.0.0 with no replacement. PEW PEW PEW!!!
158
- eowarn
159
- end
160
- @@table_cache ||= Hash[engine.connection.tables.map { |x| [x,true] }]
161
- end
162
141
  end
163
142
  end
@@ -4,12 +4,10 @@ module Arel
4
4
  private
5
5
 
6
6
  def visit_Arel_Nodes_Matches o, a
7
- a = o.left if Arel::Attributes::Attribute === o.left
8
7
  "#{visit o.left, a} ILIKE #{visit o.right, a}"
9
8
  end
10
9
 
11
10
  def visit_Arel_Nodes_DoesNotMatch o, a
12
- a = o.left if Arel::Attributes::Attribute === o.left
13
11
  "#{visit o.left, a} NOT ILIKE #{visit o.right, a}"
14
12
  end
15
13
 
@@ -85,17 +85,7 @@ module Arel
85
85
  if o.orders.empty? && o.limit.nil?
86
86
  wheres = o.wheres
87
87
  else
88
- key = o.key
89
- unless key
90
- warn(<<-eowarn) if $VERBOSE
91
- (#{caller.first}) Using UpdateManager without setting UpdateManager#key is
92
- deprecated and support will be removed in Arel 4.0.0. Please set the primary
93
- key on UpdateManager using UpdateManager#key= '#{key.inspect}'
94
- eowarn
95
- key = o.relation.primary_key
96
- end
97
-
98
- wheres = [Nodes::In.new(key, [build_subselect(key, o)])]
88
+ wheres = [Nodes::In.new(o.key, [build_subselect(o.key, o)])]
99
89
  end
100
90
 
101
91
  [
@@ -45,7 +45,7 @@ module Arel
45
45
  table = Table.new :users
46
46
  fc = FakeCrudder.new
47
47
  fc.from table
48
- stmt = fc.compile_update [[table[:id], 'foo']]
48
+ stmt = fc.compile_update [[table[:id], 'foo']], table.primary_key
49
49
  assert_instance_of Arel::UpdateManager, stmt
50
50
  end
51
51
  end
@@ -435,20 +435,6 @@ module Arel
435
435
  end
436
436
  end
437
437
 
438
- describe 'insert' do
439
- it 'uses the select FROM' do
440
- engine = EngineProxy.new Table.engine
441
- table = Table.new :users
442
- manager = Arel::SelectManager.new engine
443
- manager.from table
444
- manager.insert 'VALUES(NULL)'
445
-
446
- engine.executed.last.must_be_like %{
447
- INSERT INTO "users" VALUES(NULL)
448
- }
449
- end
450
- end
451
-
452
438
  describe 'lock' do
453
439
  # This should fail on other databases
454
440
  it 'adds a lock node' do
@@ -935,7 +921,7 @@ module Arel
935
921
  manager = Arel::SelectManager.new engine
936
922
  manager.from table
937
923
  manager.take 1
938
- stmt = manager.compile_update(SqlLiteral.new('foo = bar'))
924
+ stmt = manager.compile_update(SqlLiteral.new('foo = bar'), table.primary_key)
939
925
  stmt.key = table['id']
940
926
 
941
927
  stmt.to_sql.must_be_like %{
@@ -950,7 +936,7 @@ module Arel
950
936
  manager = Arel::SelectManager.new engine
951
937
  manager.from table
952
938
  manager.order :foo
953
- stmt = manager.compile_update(SqlLiteral.new('foo = bar'))
939
+ stmt = manager.compile_update(SqlLiteral.new('foo = bar'), table.primary_key)
954
940
  stmt.key = table['id']
955
941
 
956
942
  stmt.to_sql.must_be_like %{
@@ -964,7 +950,7 @@ module Arel
964
950
  table = Table.new :users
965
951
  manager = Arel::SelectManager.new engine
966
952
  manager.from table
967
- stmt = manager.compile_update(SqlLiteral.new('foo = bar'))
953
+ stmt = manager.compile_update(SqlLiteral.new('foo = bar'), table.primary_key)
968
954
 
969
955
  stmt.to_sql.must_be_like %{ UPDATE "users" SET foo = bar }
970
956
  end
@@ -975,7 +961,7 @@ module Arel
975
961
  manager = Arel::SelectManager.new engine
976
962
  manager.where table[:id].eq 10
977
963
  manager.from table
978
- stmt = manager.compile_update(table[:id] => 1)
964
+ stmt = manager.compile_update({table[:id] => 1}, table.primary_key)
979
965
 
980
966
  stmt.to_sql.must_be_like %{
981
967
  UPDATE "users" SET "id" = 1 WHERE "users"."id" = 10
@@ -989,7 +975,7 @@ module Arel
989
975
  manager.where table[:foo].eq 10
990
976
  manager.take 42
991
977
  manager.from table
992
- stmt = manager.compile_update(table[:id] => 1)
978
+ stmt = manager.compile_update({table[:id] => 1}, table.primary_key)
993
979
 
994
980
  stmt.to_sql.must_be_like %{
995
981
  UPDATE "users" SET "id" = 1 WHERE "users"."id" IN (SELECT "users"."id" FROM "users" WHERE "users"."foo" = 10 LIMIT 42)
@@ -1001,7 +987,7 @@ module Arel
1001
987
  table = Table.new :users
1002
988
  manager = Arel::SelectManager.new engine
1003
989
  manager.from table
1004
- stmt = manager.compile_update(table[:id] => 1)
990
+ stmt = manager.compile_update({table[:id] => 1}, table.primary_key)
1005
991
 
1006
992
  stmt.to_sql.must_be_like %{
1007
993
  UPDATE "users" SET "id" = 1
@@ -5,8 +5,6 @@ module Arel
5
5
  describe 'the postgres visitor' do
6
6
  before do
7
7
  @visitor = PostgreSQL.new Table.engine.connection
8
- @table = Table.new(:users)
9
- @attr = @table[:id]
10
8
  end
11
9
 
12
10
  describe 'locking' do
@@ -45,40 +43,6 @@ module Arel
45
43
  core.set_quantifier = Arel::Nodes::Distinct.new
46
44
  assert_equal 'SELECT DISTINCT', @visitor.accept(core)
47
45
  end
48
-
49
- describe "Nodes::Matches" do
50
- it "should know how to visit" do
51
- node = @table[:name].matches('foo%')
52
- @visitor.accept(node).must_be_like %{
53
- "users"."name" ILIKE 'foo%'
54
- }
55
- end
56
-
57
- it 'can handle subqueries' do
58
- subquery = @table.project(:id).where(@table[:name].matches('foo%'))
59
- node = @attr.in subquery
60
- @visitor.accept(node).must_be_like %{
61
- "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" ILIKE 'foo%')
62
- }
63
- end
64
- end
65
-
66
- describe "Nodes::DoesNotMatch" do
67
- it "should know how to visit" do
68
- node = @table[:name].does_not_match('foo%')
69
- @visitor.accept(node).must_be_like %{
70
- "users"."name" NOT ILIKE 'foo%'
71
- }
72
- end
73
-
74
- it 'can handle subqueries' do
75
- subquery = @table.project(:id).where(@table[:name].does_not_match('foo%'))
76
- node = @attr.in subquery
77
- @visitor.accept(node).must_be_like %{
78
- "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" NOT ILIKE 'foo%')
79
- }
80
- end
81
- end
82
46
  end
83
47
  end
84
48
  end
@@ -194,40 +194,6 @@ module Arel
194
194
  @visitor.accept(test).must_be_like %{ "users"."bool" = 't' }
195
195
  end
196
196
 
197
- describe "Nodes::Matches" do
198
- it "should know how to visit" do
199
- node = @table[:name].matches('foo%')
200
- @visitor.accept(node).must_be_like %{
201
- "users"."name" LIKE 'foo%'
202
- }
203
- end
204
-
205
- it 'can handle subqueries' do
206
- subquery = @table.project(:id).where(@table[:name].matches('foo%'))
207
- node = @attr.in subquery
208
- @visitor.accept(node).must_be_like %{
209
- "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" LIKE 'foo%')
210
- }
211
- end
212
- end
213
-
214
- describe "Nodes::DoesNotMatch" do
215
- it "should know how to visit" do
216
- node = @table[:name].does_not_match('foo%')
217
- @visitor.accept(node).must_be_like %{
218
- "users"."name" NOT LIKE 'foo%'
219
- }
220
- end
221
-
222
- it 'can handle subqueries' do
223
- subquery = @table.project(:id).where(@table[:name].does_not_match('foo%'))
224
- node = @attr.in subquery
225
- @visitor.accept(node).must_be_like %{
226
- "users"."id" IN (SELECT id FROM "users" WHERE "users"."name" NOT LIKE 'foo%')
227
- }
228
- end
229
- end
230
-
231
197
  describe "Nodes::Ordering" do
232
198
  it "should know how to visit" do
233
199
  node = @attr.desc
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.2
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
@@ -11,55 +11,55 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-02-05 00:00:00.000000000 Z
14
+ date: 2013-12-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: minitest
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - "~>"
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
- version: '5.2'
22
+ version: '5.0'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '5.2'
29
+ version: '5.0'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rdoc
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "~>"
34
+ - - ~>
35
35
  - !ruby/object:Gem::Version
36
36
  version: '4.0'
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
41
+ - - ~>
42
42
  - !ruby/object:Gem::Version
43
43
  version: '4.0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: hoe
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - ~>
49
49
  - !ruby/object:Gem::Version
50
- version: '3.8'
50
+ version: '3.7'
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - "~>"
55
+ - - ~>
56
56
  - !ruby/object:Gem::Version
57
- version: '3.8'
57
+ version: '3.7'
58
58
  description: |-
59
59
  Arel is a SQL AST manager for Ruby. It
60
60
 
61
61
  1. Simplifies the generation of complex SQL queries
62
- 2. Adapts to various RDBMS systems
62
+ 2. Adapts to various RDBMSes
63
63
 
64
64
  It is intended to be a framework framework; that is, you can build your own ORM
65
65
  with it, focusing on innovative object and collection modeling as opposed to
@@ -77,9 +77,9 @@ extra_rdoc_files:
77
77
  - Manifest.txt
78
78
  - README.markdown
79
79
  files:
80
- - ".autotest"
81
- - ".gemtest"
82
- - ".travis.yml"
80
+ - .autotest
81
+ - .gemtest
82
+ - .travis.yml
83
83
  - Gemfile
84
84
  - History.txt
85
85
  - MIT-LICENSE.txt
@@ -189,7 +189,6 @@ files:
189
189
  - test/nodes/test_update_statement.rb
190
190
  - test/nodes/test_window.rb
191
191
  - test/support/fake_record.rb
192
- - test/test_activerecord_compat.rb
193
192
  - test/test_attributes.rb
194
193
  - test/test_crud.rb
195
194
  - test/test_delete_manager.rb
@@ -217,23 +216,23 @@ licenses:
217
216
  metadata: {}
218
217
  post_install_message:
219
218
  rdoc_options:
220
- - "--main"
219
+ - --main
221
220
  - README.markdown
222
221
  require_paths:
223
222
  - lib
224
223
  required_ruby_version: !ruby/object:Gem::Requirement
225
224
  requirements:
226
- - - ">="
225
+ - - '>='
227
226
  - !ruby/object:Gem::Version
228
227
  version: '0'
229
228
  required_rubygems_version: !ruby/object:Gem::Requirement
230
229
  requirements:
231
- - - ">="
230
+ - - '>='
232
231
  - !ruby/object:Gem::Version
233
232
  version: '0'
234
233
  requirements: []
235
234
  rubyforge_project: arel
236
- rubygems_version: 2.2.0
235
+ rubygems_version: 2.1.11
237
236
  signing_key:
238
237
  specification_version: 4
239
238
  summary: Arel is a SQL AST manager for Ruby
@@ -266,7 +265,6 @@ test_files:
266
265
  - test/nodes/test_true.rb
267
266
  - test/nodes/test_update_statement.rb
268
267
  - test/nodes/test_window.rb
269
- - test/test_activerecord_compat.rb
270
268
  - test/test_attributes.rb
271
269
  - test/test_crud.rb
272
270
  - test/test_delete_manager.rb
@@ -1,18 +0,0 @@
1
- require 'helper'
2
-
3
- module Arel
4
- describe 'activerecord compatibility' do
5
- describe 'select manager' do
6
- it 'provides wheres' do
7
- table = Table.new :users
8
- manager = Arel::SelectManager.new Table.engine
9
- manager.where table[:id].eq 1
10
- manager.where table[:name].eq 'Aaron'
11
-
12
- manager.wheres.map { |x|
13
- x.value
14
- }.join(', ').must_equal "\"users\".\"id\" = 1, \"users\".\"name\" = 'Aaron'"
15
- end
16
- end
17
- end
18
- end