sequel 5.6.0 → 5.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +30 -5099
  3. data/Rakefile +1 -1
  4. data/doc/opening_databases.rdoc +0 -2
  5. data/doc/postgresql.rdoc +31 -0
  6. data/doc/querying.rdoc +2 -2
  7. data/doc/release_notes/5.7.0.txt +108 -0
  8. data/doc/testing.rdoc +1 -0
  9. data/lib/sequel/adapters/jdbc/derby.rb +1 -1
  10. data/lib/sequel/adapters/jdbc/oracle.rb +11 -0
  11. data/lib/sequel/adapters/postgres.rb +1 -0
  12. data/lib/sequel/adapters/shared/postgres.rb +117 -13
  13. data/lib/sequel/connection_pool/sharded_threaded.rb +7 -6
  14. data/lib/sequel/connection_pool/threaded.rb +6 -6
  15. data/lib/sequel/core.rb +20 -0
  16. data/lib/sequel/database/logging.rb +3 -2
  17. data/lib/sequel/database/schema_generator.rb +1 -2
  18. data/lib/sequel/dataset/actions.rb +15 -5
  19. data/lib/sequel/extensions/connection_expiration.rb +3 -3
  20. data/lib/sequel/extensions/connection_validator.rb +3 -3
  21. data/lib/sequel/extensions/integer64.rb +30 -0
  22. data/lib/sequel/extensions/migration.rb +2 -3
  23. data/lib/sequel/plugins/pg_array_associations.rb +5 -3
  24. data/lib/sequel/plugins/validate_associated.rb +18 -0
  25. data/lib/sequel/version.rb +1 -1
  26. data/spec/adapters/mssql_spec.rb +6 -6
  27. data/spec/adapters/mysql_spec.rb +1 -1
  28. data/spec/adapters/oracle_spec.rb +15 -1
  29. data/spec/adapters/postgres_spec.rb +78 -1
  30. data/spec/adapters/spec_helper.rb +3 -1
  31. data/spec/bin_spec.rb +1 -0
  32. data/spec/core/dataset_spec.rb +10 -0
  33. data/spec/extensions/integer64_spec.rb +22 -0
  34. data/spec/extensions/pg_array_associations_spec.rb +14 -2
  35. data/spec/extensions/spec_helper.rb +1 -0
  36. data/spec/integration/associations_test.rb +4 -4
  37. data/spec/integration/dataset_test.rb +2 -0
  38. data/spec/integration/spec_helper.rb +5 -11
  39. data/spec/model/spec_helper.rb +1 -0
  40. metadata +35 -165
  41. data/doc/release_notes/1.0.txt +0 -38
  42. data/doc/release_notes/1.1.txt +0 -143
  43. data/doc/release_notes/1.3.txt +0 -101
  44. data/doc/release_notes/1.4.0.txt +0 -53
  45. data/doc/release_notes/1.5.0.txt +0 -155
  46. data/doc/release_notes/2.0.0.txt +0 -298
  47. data/doc/release_notes/2.1.0.txt +0 -271
  48. data/doc/release_notes/2.10.0.txt +0 -328
  49. data/doc/release_notes/2.11.0.txt +0 -215
  50. data/doc/release_notes/2.12.0.txt +0 -534
  51. data/doc/release_notes/2.2.0.txt +0 -253
  52. data/doc/release_notes/2.3.0.txt +0 -88
  53. data/doc/release_notes/2.4.0.txt +0 -106
  54. data/doc/release_notes/2.5.0.txt +0 -137
  55. data/doc/release_notes/2.6.0.txt +0 -157
  56. data/doc/release_notes/2.7.0.txt +0 -166
  57. data/doc/release_notes/2.8.0.txt +0 -171
  58. data/doc/release_notes/2.9.0.txt +0 -97
  59. data/doc/release_notes/3.0.0.txt +0 -221
  60. data/doc/release_notes/3.1.0.txt +0 -406
  61. data/doc/release_notes/3.10.0.txt +0 -286
  62. data/doc/release_notes/3.11.0.txt +0 -254
  63. data/doc/release_notes/3.12.0.txt +0 -304
  64. data/doc/release_notes/3.13.0.txt +0 -210
  65. data/doc/release_notes/3.14.0.txt +0 -118
  66. data/doc/release_notes/3.15.0.txt +0 -78
  67. data/doc/release_notes/3.16.0.txt +0 -45
  68. data/doc/release_notes/3.17.0.txt +0 -58
  69. data/doc/release_notes/3.18.0.txt +0 -120
  70. data/doc/release_notes/3.19.0.txt +0 -67
  71. data/doc/release_notes/3.2.0.txt +0 -268
  72. data/doc/release_notes/3.20.0.txt +0 -41
  73. data/doc/release_notes/3.21.0.txt +0 -87
  74. data/doc/release_notes/3.22.0.txt +0 -39
  75. data/doc/release_notes/3.23.0.txt +0 -172
  76. data/doc/release_notes/3.24.0.txt +0 -420
  77. data/doc/release_notes/3.25.0.txt +0 -88
  78. data/doc/release_notes/3.26.0.txt +0 -88
  79. data/doc/release_notes/3.27.0.txt +0 -82
  80. data/doc/release_notes/3.28.0.txt +0 -304
  81. data/doc/release_notes/3.29.0.txt +0 -459
  82. data/doc/release_notes/3.3.0.txt +0 -192
  83. data/doc/release_notes/3.30.0.txt +0 -135
  84. data/doc/release_notes/3.31.0.txt +0 -146
  85. data/doc/release_notes/3.32.0.txt +0 -202
  86. data/doc/release_notes/3.33.0.txt +0 -157
  87. data/doc/release_notes/3.34.0.txt +0 -671
  88. data/doc/release_notes/3.35.0.txt +0 -144
  89. data/doc/release_notes/3.36.0.txt +0 -245
  90. data/doc/release_notes/3.37.0.txt +0 -338
  91. data/doc/release_notes/3.38.0.txt +0 -234
  92. data/doc/release_notes/3.39.0.txt +0 -237
  93. data/doc/release_notes/3.4.0.txt +0 -325
  94. data/doc/release_notes/3.40.0.txt +0 -73
  95. data/doc/release_notes/3.41.0.txt +0 -155
  96. data/doc/release_notes/3.42.0.txt +0 -74
  97. data/doc/release_notes/3.43.0.txt +0 -105
  98. data/doc/release_notes/3.44.0.txt +0 -152
  99. data/doc/release_notes/3.45.0.txt +0 -179
  100. data/doc/release_notes/3.46.0.txt +0 -122
  101. data/doc/release_notes/3.47.0.txt +0 -270
  102. data/doc/release_notes/3.48.0.txt +0 -477
  103. data/doc/release_notes/3.5.0.txt +0 -510
  104. data/doc/release_notes/3.6.0.txt +0 -366
  105. data/doc/release_notes/3.7.0.txt +0 -179
  106. data/doc/release_notes/3.8.0.txt +0 -151
  107. data/doc/release_notes/3.9.0.txt +0 -233
@@ -1,157 +0,0 @@
1
- New Features
2
- ------------
3
-
4
- * Schema parsing was refactored, resulting in a huge speedup when
5
- using MySQL. MySQL now uses the DESCRIBE statement instead of the
6
- INFORMATION_SCHEMA. PostgreSQL now uses the pg_* system catalogs
7
- instead of the INFORMATION schema.
8
-
9
- * The schema information now includes the :primary_key field. Models
10
- now use this field to automatically determine the primary key for
11
- a table, so it no longer needs to be specified explicitly. Models
12
- even handle the composite primary key case.
13
-
14
- * The raise_on_typecast_failure switch was added, with it being true
15
- by default (so no change in behavior). This allows the user to
16
- silently ignore errors when typecasting fails, at the global, class,
17
- and instance levels.
18
-
19
- Sequel::Model.raise_on_typecast_failure = false # Global
20
- Artist.raise_on_typecast_failure = true # Class
21
- artist = Artist.new
22
- artist.raise_on_typecast_failure = false # Instance
23
-
24
- Album.raise_on_typecast_failure = true
25
- Album.new(:numtracks=>'a') # => raises Sequel::Error::InvalidValue
26
- Album.raise_on_typecast_failure = false
27
- Album.new(:numtracks=>'a') # => #<Album @values={:numtracks=>"a"}>
28
-
29
- * Associations' orders are now respected when eager loading via
30
- eager_graph. Sequel will qualify the columns in the order with
31
- the alias being used, so you can have overlapping columns when
32
- eager loading multiple associations.
33
-
34
- Artist.one_to_many :albums, :order=>:name
35
- Album.one_to_many :tracks, :order=>:number
36
- Artist.order(:artists__name).eager_graph(:albums=>:tracks).sql
37
- # => ... ORDER BY artists.name, albums.name, tracks.number
38
-
39
- * The support for CASE expressions has been enhanced by allowing the
40
- use of an optional expression:
41
-
42
- {1=>2}.case(0, :x)
43
- # => CASE x WHEN 1 THEN 2 ELSE 0 END
44
- [[:a, 1], [:b, 2], [:c, 3]].case(4, :y)
45
- # => CASE y WHEN a THEN 1 WHEN b THEN 2 WHEN c THEN 3 ELSE 4 END
46
-
47
- Previously, to get something equivalent to this, you had to do:
48
-
49
- {{:x=>1}=>2}.case(0)
50
- # => CASE WHEN (x = 1) THEN 2 ELSE 0 END
51
- [[{:y=>:a}, 1], [{:y=>:b}, 2], [{:y=>:c}, 3]].case(4)
52
- # => CASE WHEN (y = a) THEN 1 WHEN (y = b) THEN 2 WHEN (y = c)
53
- THEN 3 ELSE 4 END
54
-
55
- * You can now change the NULL/NOT NULL value of an existing column
56
- using the set_column_allow_null method.
57
-
58
- # Set NOT NULL
59
- DB.alter_table(:artists){set_column_allow_null :name, false}
60
- # Set NULL
61
- DB.alter_table(:artists){set_column_allow_null :name, true}
62
-
63
- * You can now get the schema information for a table in a non-public
64
- schema in PostgreSQL using the implicit :schema__table syntax.
65
- Before, the :schema option had to be given explicitly to
66
- Database#schema. This allows models to get schema information for
67
- tables outside the public schema.
68
-
69
- * Transactions are now supported on MSSQL.
70
-
71
- * Dataset#tables now returns all tables in the database for MySQL
72
- databases accessed via JDBC.
73
-
74
- * Database#drop_view can now drop multiple views at once.
75
-
76
- Other Improvements
77
- ------------------
78
-
79
- * The SQLite adapter now respects the Sequel.datetime_class option
80
- for timestamp and datetime columns.
81
-
82
- * Adding a unique constraint no longer explicity creates a unique
83
- index. If you want a unique index, use index :unique=>true.
84
-
85
- * If no language is specified when creating a full text index on
86
- PostgreSQL, the simple language is assumed.
87
-
88
- * Errors when typecasting fails are now Sequel::Error::InvalidValue
89
- instead of the more generic Sequel::Error.
90
-
91
- * Specifying constraints now works correctly for all types of
92
- arguments. Previously, it did not work unless a block or
93
- interpolated string were used.
94
-
95
- * Loading an association with the same name as a table in the FROM
96
- clause no longer causes an error.
97
-
98
- * When eagerly loading many_to_one associations where no objects have
99
- an associated object, the negative lookup is now cached.
100
-
101
- * String keys can now be used with Dataset#multi_insert, just like
102
- they can be used for Dataset#insert.
103
-
104
- * Dataset#join_table now generates the correct SQL when doing the
105
- first join to a dataset where the first source is a dataset, when
106
- an unqualified column is used in the conditions.
107
-
108
- * Cascading associations after *_to_many associations can now be
109
- eagerly loaded via eager_graph.
110
-
111
- * Eagerly loading *_to_many associations that are cascaded behind a
112
- many_to_one association now have their duplicates removed if a
113
- cartesian product join is done.
114
-
115
- * The SQLite adapter now uses string literals in all of the AS
116
- clauses. While the SQL standard specifies that identifiers should
117
- be used, SQLite documentation explicitly states that string
118
- literals are expected (though it generally works with identifiers
119
- by converting them implicitly).
120
-
121
- * Database methods that modify the schema now remove the cached
122
- schema entry.
123
-
124
- * The hash keys that Database#schema returns when no table is
125
- requested are now always supposed to be symbols.
126
-
127
- * The generation of SQL for composite foreign keys on MySQL has been
128
- fixed.
129
-
130
- * A schema.rdoc file was added to the documentation explaining the
131
- various parts of Sequel related to schema generation and
132
- modification and how they interact
133
- (http://sequel.rubyforge.org/rdoc/files/doc/schema_rdoc.html).
134
-
135
- * The RDoc template for the website was changed from the default
136
- template to the hanna template.
137
-
138
- Backwards Compatibility
139
- -----------------------
140
-
141
- * The :numeric_precision and :max_chars schema entries have been
142
- removed. Use the :db_type entry to determine this information,
143
- if available.
144
-
145
- * The SQLite adapter used to always return Time instances for
146
- timestamp types, even if Sequel.datetime_class was DateTime. For
147
- datetime types it always returned a DateTime instance. It
148
- now returns an instance of Sequel.datetime_class in both cases.
149
-
150
- * It's possible that the including of associations' orders when eager
151
- loading via eager_graph could cause problems. You can use the
152
- :order_eager_graph=>false option to not use the :order option when
153
- eager loading via :eager_graph.
154
-
155
- * There were small changes in SQL creation where the AS keyword is
156
- now used explicitly. These should have no effect, but could break
157
- tests for explicit SQL.
@@ -1,166 +0,0 @@
1
- Performance Optimizations
2
- -------------------------
3
-
4
- * Fetching a large number of records with the PostgreSQL adapter is
5
- significantly faster (up to 3-4 times faster than before).
6
-
7
- * Instantiating model objects has been made much faster, as many
8
- options (such as raise_on_save_failure) are now lazily loaded, and
9
- hook methods are now much faster if no hooks have been defined for
10
- that type of hook.
11
-
12
- New Association Options
13
- -----------------------
14
-
15
- * The :eager_grapher option has been added allowing you to supply
16
- your own block to implement eager loading via eager_graph.
17
-
18
- * many_to_one and one_to_many associations now have a :primary_key
19
- option, specifying the name of the column that the :key option
20
- references.
21
-
22
- * many_to_many associations now have :left_primary_key and
23
- :right_primary_key options, specifying the columns that :left_key
24
- and :right_key reference, respectively.
25
-
26
- * many_to_many associations now have a :uniq option, that adds an
27
- :after_load callback that makes the returned array of objects
28
- unique.
29
-
30
- Other New Features
31
- ------------------
32
-
33
- * Dataset#set_graph_aliases now allows you to supply a third argument
34
- for each column you want graph into the dataset, allowing you to use
35
- arbitrary SQL expressions that are graphed into the correct table:
36
-
37
- ds.set_graph_aliases!(:a=>[:b, :c], :d=>[:e, :f, 42])
38
- # SELECT b.c AS a, 42 AS d FROM ...
39
- ds.first # => {:b=>{:c=>?}, :e=>{:f=>42}}
40
-
41
- * Dataset#add_graph_aliases was added, that adds additional graph
42
- aliases instead of replacing the existing ones (as
43
- #set_graph_aliases does). It's basically the equivalent of
44
- select_more for graphs.
45
-
46
- * Dataset#join_table changed it's final argument from a symbol
47
- specifying a table name to an option hash (with backwards
48
- compatibility kept), and adds support for a :implicit_qualifier
49
- option, which it uses instead of the last joined table to
50
- qualify columns.
51
-
52
- * Association's :after_load callbacks are now called when eager
53
- loading via eager (but not when eager loading via eager_graph).
54
-
55
- * Any expression can now be used as the argument to Symbol#like,
56
- which means that you can pattern match columns to other columns.
57
- Before, it always transformed the argument to a string.
58
-
59
- :a.like(:b)
60
- # 2.6.0: a LIKE 'b'
61
- # 2.7.0: a LIKE b
62
-
63
- * Array#sql_array was added, allowing you to specify that an array
64
- in ruby be treated like an array in SQL. This is true anyway,
65
- except for arrays of all two pairs, which are treated like hashes,
66
- for specifying multiple conditions with the same key:
67
-
68
- DB[:foo].filter([:a,:b] => [[1,2],[3,4]].sql_array)
69
- # => SELECT * FROM foo WHERE ((a, b) IN ((1, 2), (3, 4)))
70
-
71
- * ComplexExpression#== and #sql? were added, allowing for easier
72
- testing.
73
-
74
- * Full text searching on PostgreSQL now joins multiple columns with
75
- a space, to prevent joining border words, and it works when there
76
- is a match in one column but the other column is NULL.
77
-
78
- Other Improvements
79
- ------------------
80
-
81
- * Instance methods added by creating associations are added to an
82
- anonymous module included by the class, so they can be overridden
83
- in the class while still allowing the use of super to get the
84
- default behavior (this is similar to column accessor methods).
85
-
86
- * Many improvements were added to support using multiple schemas in
87
- PostgreSQL.
88
-
89
- * Model::Validation::Errors objects are now more compatible with
90
- Rails, by adding a #count method and making #on return nil if there
91
- are no error messages for that attribute.
92
-
93
- * Serialized columns in models are no longer typecast.
94
-
95
- * Associations are now inherited when a model class is subclassed.
96
-
97
- * Many improvements were made that should make adding custom
98
- association types easier.
99
-
100
- * A corner case in eager_graph where the wrong table name would be
101
- used to qualify a column name has been fixed.
102
-
103
- * Dataset's cached column information is no longer modified if #each
104
- is called with an option that modifies the columns.
105
-
106
- * You should now be able to connect to Oracle via the JDBC adapter,
107
- and with the same support it has when using the oracle adapter.
108
-
109
- * Model.association_reflections is now a public methods, so you can
110
- grab a hash of all association reflections at once (keyed by
111
- association name symbol).
112
-
113
- * The :encoding/:charset option now works in the PostgreSQL adapter
114
- if the postgres-pr driver is used.
115
-
116
- * The numeric(x,y) type is now interpreted as decimal.
117
-
118
- Backwards Compatibilty
119
- ----------------------
120
-
121
- * The first argument to Model#initialize must be a hash, you can no
122
- longer use nil. For example, the following code will break if
123
- :album is not in params:
124
-
125
- Album.new(params[:album])
126
-
127
- Additionally, Model#initialize does not call the block if the
128
- second argument is true.
129
-
130
- * The Sequel::Model.lazy_load_schema setting was removed. It should
131
- no longer be necessary now that schema loading is relatively speedy,
132
- and schemas can be loaded at startup and cached.
133
-
134
- * The PostgreSQL adapter will default to using a unix socket in /tmp
135
- if no host is specified. Before, a TCP/IP socket to localhost was
136
- used if no host was specified. This change makes Sequel operate
137
- similarly to the PostgreSQL command line tools.
138
-
139
- * The ASSOCIATION_TYPES constant has changed from an array to a hash
140
- and it has been moved. The RECIPROCAL_ASSOCIATIONS constant has
141
- been removed. This is unlikely to matter unless you were using
142
- custom association types.
143
-
144
- * The PostgreSQL adapter now sets the PostgreSQL DateStyle, in order
145
- to implement an optimization. To turn this off, set
146
- Sequel::Postgres.use_iso_date_format = false.
147
-
148
- * When using the PostgreSQL adapter, in many places the schema is
149
- specified explicitly. If you do not specify a schema, a default
150
- one is used (public by default). If you use a schema other than
151
- public for your work, use Database#default_schema= to set it. For
152
- any table outside of the default schema, you should specify the
153
- schema explicitly, even if it is in the PostgreSQL search_path.
154
-
155
- * Model::Validation::Errors#on now returns nil instead of [] if there
156
- are no errors for an attribute.
157
-
158
- * Hooks added to a superclass after a subclass has been created no
159
- longer have an effect on the subclass.
160
-
161
- * The Postgres.string_to_bool method has been removed.
162
-
163
- * PostgreSQL full text searching now always defaults to using the
164
- simple dictionary. If you want to use another dictionary, it must
165
- be specified explicitly, both when searching and when creating a
166
- full text index.
@@ -1,171 +0,0 @@
1
- New Features
2
- ------------
3
-
4
- * Sequel now supports database stored procedures similar to its
5
- support for prepared statements. The API is as follows:
6
-
7
- DB[:table].call_sproc(:select, :mysp, 'param1', 'param2')
8
- # or
9
- sp = DB[:table].prepare_sproc(:select, :mysp)
10
- sp.call('param1', 'param2')
11
- sp.call('param3', 'param4')
12
-
13
- This works with Model datasets as well, allowing them to return
14
- model objects:
15
-
16
- Album.call_sproc(:select, :new_albums)
17
- #=> [#<Album ...>, #<Album ...>]
18
-
19
- You can call a stored procedure directly on the Database object
20
- if you want to, but the results and API are adapter dependent,
21
- and you definitely shouldn't do it if the stored procedure returns
22
- rows:
23
-
24
- DB.call_sproc(:mysp, :args=>['param1', 'param2'])
25
-
26
- Currently, the MySQL and JDBC adapters support stored procedures.
27
- Other adapters may support them in a future version.
28
-
29
- * The connection pool code can now remove connections if the
30
- adapter raises a Sequel::DatabaseDisconnectError indicating that
31
- the connection has been lost. When a query is attempted and
32
- the adapter raises this error, the connection pool removes the
33
- connection from the pool, and reraises the error. The Oracle and
34
- PostgreSQL adapters currently support this, and other adapters may
35
- support it in a future version.
36
-
37
- * Whether to upcase or quote identifiers can now be set separately.
38
- Previously, upcasing was done when quoting except when using SQLite,
39
- PostgreSQL, or MySQL. Now, you can turn upcasing off while still
40
- quoting. This may be necessary if you are using a MSSQL database
41
- that has lower case table names that conflict with reserved words.
42
- It also allows you to uppercase identifiers when using SQLite,
43
- PostgreSQL, or MySQL, which may be beneficial in certain cases.
44
-
45
- To turn upcasing on or off:
46
-
47
- # Global
48
- Sequel.upcase_identifiers = true
49
- # Database
50
- DB = Sequel.connect("postgres://...", :upcase_identifiers=>true)
51
- DB.upcase_identifiers = false
52
- # Dataset
53
- ds = DB[:items]
54
- ds.upcase_identifiers = true
55
-
56
- * Options are now supported when altering a columns type:
57
-
58
- DB.alter_table(:items) do
59
- set_column_type :score, :integer, :unsigned=>true
60
- set_column_type :score, :varchar, :size=>30
61
- set_column_type :score, :enum, :elements=>['a', 'b']
62
- end
63
-
64
- * Standard conforming strings are now turned on by default in the
65
- PostgreSQL adapter. This makes PostgreSQL not interpret backslash
66
- escapes. This is the PostgreSQL recommended setting, which will be
67
- the default setting in a future version of PostgreSQL. If you
68
- don't want for force the use of standard strings, use:
69
-
70
- Sequel::Postgres.force_standard_strings = false
71
-
72
- You need to do that after you call Sequel.connect but before you
73
- use the database for anything, since that setting is set on
74
- initial connection.
75
-
76
- * Sequel now raises an error if you attempt to use EXCEPT [ALL] or
77
- INTERSECT [ALL] on a database that doesn't support it.
78
-
79
- * Sequel now raises an error if you attempt to use DISTINCT ON with
80
- MySQL or Oracle, which don't support it.
81
-
82
- * A subadapter for the Progress RDBMS was added to the ODBC adapter.
83
- To connect to a Progress database, use the :db_type=>'progress'
84
- option. This adapter targets Progress 9.
85
-
86
- * The ODBC adapter now supports transactions.
87
-
88
- * The MSSQL shared adapter now supports multi_insert (for inserting
89
- multiple rows at once), and unicode string literals.
90
-
91
- Other Improvements
92
- ------------------
93
-
94
- * There were many improvements related to using schemas in databases.
95
- Using schema-qualified tables should work in most if not all cases
96
- now. Model associations, getting the schema, joins, and many other
97
- parts of Sequel were modified to allow the use of schema-qualifed
98
- tables.
99
-
100
- * You can now use literal strings with placeholders as well as
101
- subselects when using prepared statements. For example, the
102
- following all work now:
103
-
104
- DB[:items].filter("id = ?", :$i).call(:select, :i=>1)
105
- DB[:items].filter(:id=>DB[:items].select(:id)\
106
- .filter(:id=>:$i)).call(:select, :i=>1)
107
- DB["SELECT * FROM items WHERE id = ?", :$i].call(:select, :i=>1)
108
-
109
- * Model#initialize received a few more micro-optimizations.
110
-
111
- * Model#refresh now clears the changed columns as well as the
112
- associations.
113
-
114
- * You can now drop columns inside a transaction when using SQLite.
115
-
116
- * You can now submit multiple SQL queries at once in the MySQL
117
- adapter:
118
-
119
- DB['SELECT 1; SELECT 2'].all
120
- #=> [{:"1"=>1, :"2"=>2}]
121
-
122
- This may fix issues if you've seen a MySQL "commands out of sync"
123
- message. Note that this doesn't work if you are connecting to
124
- MySQL via JDBC.
125
-
126
- * You can now use AliasedExpressions directly in table names given
127
- to join_table:
128
-
129
- DB.from(:i.as(:j)).join(:k.as(:l), :a=>:b)
130
- #=> ... FROM i AS j INNER JOIN k AS l ON (l.a = j.b)
131
-
132
- * Database#rename_table once again works on PostgreSQL. It was
133
- broken in 2.7.0.
134
-
135
- * The interval type is now treated as it's own type. It was
136
- previously treated as an integer type.
137
-
138
- * Subselects are now aliased correctly when using Oracle.
139
-
140
- * UNION, INTERSECT, and EXCEPT statements now appear before ORDER
141
- and LIMIT on most databases. If you use these constructs, please
142
- test and make sure that they work correctly with your database.
143
-
144
- * SQL EXCEPT clause now works on Oracle, which uses MINUS instead.
145
-
146
- * Dataset#exists now returns a LiteralString, to make it easier to
147
- use.
148
-
149
- * The Sequel.odbc_mssql method was removed, as the odbc_mssql adapter
150
- was removed in a previous version. Instead, use:
151
-
152
- Sequel.odbc(..., :db_type=>'mssql')
153
-
154
- Backwards Compatibilty
155
- ----------------------
156
-
157
- * The hash returned by Database#schema when no table name is provided
158
- uses quoted strings instead of symbols as keys. The hash has a
159
- default proc, so using the symbol will return the same value as
160
- before, but if you use each to iterate through the hash, the keys
161
- will be different. This was necessary to handle schema-qualified
162
- tables.
163
-
164
- * Database#table_exists? no longer checks the output of
165
- Database#tables. If the table exists in the schema, it returns
166
- true, otherwise, it does a query. This was necessary because
167
- table_exists? accepts multiple formats for table names and
168
- Database#tables is an array of symbols.
169
-
170
- * When getting the schema on PostgreSQL, the default schema is now
171
- used even if the :schema=>nil option is used.