~ubuntu-branches/ubuntu/vivid/ruby-sequel/vivid

« back to all changes in this revision

Viewing changes to doc/release_notes/3.44.0.txt

  • Committer: Package Import Robot
  • Author(s): Dmitry Borodaenko, Dmitry Borodaenko, Cédric Boutillier
  • Date: 2013-08-10 18:38:17 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20130810183817-iqanz804j32i5myi
Tags: 4.1.1-1
[ Dmitry Borodaenko ]
* New upstream release.
* Standards-Version upgraded to 3.9.4 (no changes).
* Added Build-Depend on ruby-sqlite3.

[ Cédric Boutillier ]
* debian/control: remove obsolete DM-Upload-Allowed flag.
* use canonical URI in Vcs-* fields.
* debian/copyright: use DEP5 copyright-format/1.0 official URL for Format
  field.
* Update debian/watch. Thanks Bart Martens.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
= New Features
 
2
 
 
3
* Dataset#paged_each has been added, for processing entire datasets
 
4
  without keeping all rows in memory, even if the underlying driver
 
5
  keeps all query results in memory.  This is implemented using
 
6
  limits and offsets, and requires an order (model datasets use a
 
7
  default order by primary key).  It defaults to fetching 1000
 
8
  rows at a time, but that can be changed via the :rows_per_fetch
 
9
  option.
 
10
 
 
11
  This method is drop-in compatible for each.  Previously, the
 
12
  pagination extension's each_page method could be used for a
 
13
  similar purpose, but users of each_page are now encouraged to
 
14
  switch to paged_each.
 
15
 
 
16
* Sequel now recognizes constraint violation exceptions on most
 
17
  databases, and will raise specific exceptions for different
 
18
  types of constraint violations, instead of the generic
 
19
  Sequel::DatabaseError:
 
20
 
 
21
  * Sequel::ConstraintViolation (generic superclass)
 
22
  * Sequel::CheckConstraintViolation
 
23
  * Sequel::NotNullConstraintViolation
 
24
  * Sequel::ForeignKeyConstraintViolation
 
25
  * Sequel::UniqueConstraintViolation
 
26
  * Sequel::Postgres::ExclusionConstraintViolation
 
27
 
 
28
* The :dataset association option can now take accept an optional
 
29
  association reflection option.  Instead of doing:
 
30
 
 
31
    Album.one_to_many :artists,
 
32
      :dataset=>{Artist...}
 
33
 
 
34
  you can now do:
 
35
 
 
36
    Album.one_to_many :artists,
 
37
      :dataset=>{|r| r.associated_dataset...}
 
38
 
 
39
  This second form will preform better.
 
40
 
 
41
* Temporary views are now supported on PostgreSQL and SQLite using
 
42
  the :temp option to create_view.
 
43
 
 
44
= Other Improvements
 
45
 
 
46
* Row fetching speed in the tinytds adapter has been increased by
 
47
  up to 60%.
 
48
 
 
49
* Row fetching speed in the mysql2 adapter when using an identifier
 
50
  output method has been increased by up to 50%.
 
51
 
 
52
* On databases where offsets are emulated via the ROW_NUMBER window
 
53
  function (Oracle, DB2, Microsoft SQL Server), using an offset in
 
54
  a subselect is now supported.  For example, the following code
 
55
  previously didn't work correctly with emulated offsets:
 
56
 
 
57
    # Second 5 rows ordered by column2 of the second 10 rows ordered
 
58
    # by column 1.
 
59
    DB[:table].order(:column1).limit(10, 10).
 
60
      from_self.order(:column2).limit(5, 5)
 
61
 
 
62
  Row processing speed has been increased slightly for all adapters
 
63
  that supported databases where offsets are emulated.
 
64
 
 
65
* Association method performance has improved by caching an
 
66
  intermediate dataset.  This can close to triple the performance
 
67
  of the association_dataset method, and increase the performance
 
68
  of the association method by close to 30%.
 
69
 
 
70
* Virtual Row performance has increased about 30% in the typical
 
71
  case by using a shared VirtualRow instance.
 
72
 
 
73
* Database#create_or_replace_view is now emulated on databases that
 
74
  don't support it directly by dropping the view before attempting
 
75
  to create it.
 
76
 
 
77
* The columns_introspection extension can now introspect for simple
 
78
  select * queries from subselects, and it can now use the cached
 
79
  schema information in the database for simple select * queries
 
80
  from tables.
 
81
 
 
82
* The identity_map plugin now works correctly with many-to-many
 
83
  right-side composite keys.
 
84
 
 
85
* Dataset#last for Model datasets now works even if you don't specify
 
86
  an order explicitly, giving the last entry by primary key.  Note
 
87
  that Dataset#first for model datasets still does not order by
 
88
  default.
 
89
 
 
90
* The eager_each plugin no longer uses Object#extend at runtime.
 
91
 
 
92
* Database#remove_cached_schema is now thread-safe on non-GVL ruby
 
93
  implementations.
 
94
 
 
95
* Connection errors in the jdbc adapter now provide slightly more
 
96
  helpful messages.
 
97
 
 
98
* Sequel now uses the standard offset emulation code in the
 
99
  jdbc/as400 adapter, instead of custom offset emulation code
 
100
  specific to that adapter.
 
101
 
 
102
* Database#create_view with a dataset now works correctly when using
 
103
  the pg_auto_parameterize extension.
 
104
 
 
105
* Database#columns no longer calls the row_proc.
 
106
 
 
107
* Dataset#schema_and_table no longer turns a literal string into a
 
108
  non-literal string.
 
109
 
 
110
* The oracle adapter now works with a :prefetch_rows=>nil option,
 
111
  which explicitly disables prefetching.
 
112
 
 
113
* The mock mssql adapter now sets a server_version so that more
 
114
  parts of it work.
 
115
 
 
116
= Backwards Compatibility
 
117
 
 
118
* Offset emulation via ROW_NUMBER works by moving the query to a
 
119
  subselect that also selects from the ROW_NUMBER window function,
 
120
  and filtering on the ROW_NUMBER in the main query.  Previously, the
 
121
  ROW_NUMBER was also present in the output columns, and some
 
122
  adapter code was needed to hide that fact.  Now, the outer select
 
123
  selects all of the inner columns in the subselect except for the
 
124
  ROW_NUMBER, reducing the adapter code needed. This has the side
 
125
  effect of potentially requiring a query (or multiple queries for
 
126
  multiple subselects) to determine the columns to use.  The
 
127
  columns_introspection extension may reduce the number of queries
 
128
  needed.
 
129
 
 
130
* The correlated_subquery eager limit strategy is no longer supported
 
131
  on Microsoft SQL Server for many_*_many associations.  As the
 
132
  window_function eager limit strategy is supported there, there is
 
133
  no reason to use the correlated_subquery strategy.
 
134
 
 
135
* The public AssociationReflection#_dataset_method method has been
 
136
  removed.
 
137
 
 
138
* The private _*_dataset methods for associations (e.g.
 
139
  _albums_dataset) have been removed.
 
140
 
 
141
* The private Dataset#offset_returns_row_number_column? method has
 
142
  been removed.
 
143
 
 
144
* :conditions options for associations are now added to the
 
145
  association dataset before the foreign key filters, instead of
 
146
  after.  This should have no effect unless you were introspecting
 
147
  the dataset's opts or sql and acting on it.
 
148
 
 
149
* The added abilities in the columns_introspection plugin to use
 
150
  cached schema for introspection can now cause it to return
 
151
  incorrect results if the table's schema has changed since it was
 
152
  cached by Sequel.