sequel 5.6.0 → 5.7.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.
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,192 +0,0 @@
1
- New Features
2
- ------------
3
-
4
- * An association_proxies plugin has been added. This is not a
5
- full-blown proxy implementation, but it allows you to write code
6
- such as:
7
-
8
- artist.albums.filter{num_tracks > 10}
9
-
10
- Without the plugin, you have to call filter specifically on the
11
- association's dataset:
12
-
13
- artist.albums_dataset.filter{num_tracks > 10}
14
-
15
- The plugin works by proxying array methods to the array of
16
- associated objects, and all other methods to the association's
17
- dataset. This results in the following behavior:
18
-
19
- # Will load the associated objects (unless they are already
20
- # cached), and return the length of the array
21
- artist.albums.length
22
-
23
- # Will issue an SQL query with COUNT (even if the association
24
- # is already cached), and return the result
25
- artist.albums.count
26
-
27
- * The add_*/remove_*/remove_all_* association methods now take
28
- additional arguments that are passed down to the
29
- _add_*/_remove_*/_remove_all_* methods. One of the things this
30
- allows you to do is update additional columns in join tables for
31
- many_to_many associations:
32
-
33
- class Album
34
- many_to_many :artists
35
- def _add_artist(artist, values={})
36
- DB[:albums_artists].
37
- insert(values.merge(:album_id=>id,
38
- :artist_id=>artist.id))
39
- end
40
- end
41
-
42
- album = Album[1]
43
- artist1 = Artist[2]
44
- artist2 = Artist[3]
45
- album.add_artist(artist1, :relationship=>'composer')
46
- album.add_artist(artist2, :relationship=>'arranger')
47
-
48
- * The JDBC adapter now accepts a :convert_types option to turn off
49
- Java type conversion. The option is true by default for
50
- backwards compatibility and correctness, but can be set to false
51
- to double performance. The option can be set at the database
52
- and dataset levels:
53
-
54
- DB = Sequel.jdbc('jdbc:postgresql://host/database',
55
- :convert_types=>false)
56
- DB.convert_types = true
57
- ds = DB[:table]
58
- ds.convert_types = false
59
-
60
- * Dataset#from_self now takes an option hash and respects an
61
- :alias option, giving the table alias to use.
62
-
63
- * Dataset#unlimited was added, similar to unfiltered and unordered.
64
-
65
- * SQL::WindowFunction is now a subclass of SQL::GenericExpression,
66
- so you can alias it and treat it like any other SQL::Function.
67
-
68
- Other Improvements
69
- ------------------
70
-
71
- * Microsoft SQL Server support is much, much better in Sequel 3.3.0
72
- than in previous versions. Support is pretty good with the ODBC,
73
- ADO, and JDBC adapters, close to the level of support for
74
- PostreSQL, MySQL, SQLite, and H2. Improvements are too numerous
75
- to list, but here are some highlights:
76
-
77
- * Dataset#insert now returns the primary key (identity field), so
78
- it can be used easier with models.
79
-
80
- * Transactions can now use savepoints (except on ADO).
81
-
82
- * Offsets are supported when using SQL Server 2005 or 2008, using
83
- a ROW_NUMBER window function. However, you must specify an
84
- order for your dataset (which you probably are already doing if
85
- you are using offsets).
86
-
87
- * Schema parsing has been implemented, though it doesn't support
88
- primary key parsing (except on JDBC, since the JDBC support is
89
- used there).
90
-
91
- * The SQL syntax Sequel uses is now much more compatible, and
92
- most schema modification methods and database types now work
93
- correctly.
94
-
95
- * The ADO and ODBC adapters both work much better now. The ADO
96
- adapter no longer attempts to use transactions, since I've found
97
- that ADO does not give a stable native connection (and hence
98
- transactions weren't possible). I strongly recommend against
99
- using the ADO adapter in production.
100
-
101
- * The H2 JDBC subadapter now supports rename_column, set_column_null,
102
- set_column_type, and add_foreign_key.
103
-
104
- * Altering a columns type, null status, or default is now supported
105
- on SQLite. You can also add primary keys and unique columns.
106
-
107
- * Both the ADO and ODBC adapters now catch the native exception
108
- classes and raise Sequel::DatabaseErrors.
109
-
110
- * Model classes now default to associating to other classes in the
111
- same scope. This makes it easier to use namespaced models.
112
-
113
- * The schema parser and schema dumper now support the following
114
- types: nchar, nvarchar, ntext, smalldatetime, smallmoney, binary,
115
- and varbinary.
116
-
117
- * You can now specify the null status for a column using :allow_null
118
- in addition to :null. This is to make it easier to use the
119
- table creation methods with the results of the schema parser.
120
-
121
- * Renaming a NOT NULL column without a default now works on MySQL.
122
-
123
- * Model class initialization now raises an exception if there is a
124
- problem connecting to the database.
125
-
126
- * Connection pool performance has been increased slightly.
127
-
128
- * The literal_time method in the ODBC adapter has been fixed.
129
-
130
- * An unlikely but potential bug in the MySQL adapter has been fixed.
131
-
132
- Backwards Compatibility
133
- -----------------------
134
-
135
- * The convert_tinyint_to_bool setting moved from the main Sequel
136
- module to the Sequel::MySQL module. The native MySQL adapter is
137
- the only adapter that converted tinyint columns to booleans when
138
- the rows are returned, so you can only use the setting with the
139
- native MySQL adapter.
140
-
141
- Additionally, the setting's behavior has changed. When parsing
142
- the schema, now only tinyint(1) columns are now considered as
143
- boolean, instead of all tinyint columns. This allows you to use
144
- tinyint(4) columns for storing small integers and tinyint(1)
145
- columns as booleans, and not have the schema parsing support
146
- consider the tinyint(4) columns as booleans. Unfortunately,
147
- due to limitations in the native MySQL driver, all tinyint
148
- column values are converted to booleans upon retrieval, not just
149
- tinyint(1) column values.
150
-
151
- Unfortunately, the previous Sequel behavior was to use the
152
- default tinyint size (tinyint(4)) when creating boolean columns
153
- (using the TrueClass or FalseClass generic types). If you were
154
- using the generic type support to create the columns, you should
155
- modify your database to change the column type from tinyint(4) to
156
- tinyint(1).
157
-
158
- If you use MySQL with tinyint columns, these changes have the
159
- potential to break applications. Care should be taken when
160
- upgrading if these changes apply to you.
161
-
162
- * Model classes now default to associating to other classes in the
163
- same scope. It's highly unlikely anyone was relying on the
164
- previous behavior, but if you have a model inside a module that
165
- you are associating to a model outside of a module, you now need
166
- to specify the associated class using the :class option.
167
-
168
- * Model#save no longer includes the primary key fields in the SET
169
- clause of the UPDATE query, only in the WHERE clause. I'm not
170
- sure if this affects backwards compatibility of production code,
171
- but it can break tests that expect specific SQL.
172
-
173
- * Behavior to handle empty identifiers has now been standardized.
174
- If any database adapter returns an empty identifier, Sequel will
175
- use 'untitled' as the identifier. This can break backwards
176
- compatibility if the adapter previously used another default and
177
- you were relying on that default. This was necessary to fix any
178
- possible "interning empty string" exceptions.
179
-
180
- * On MSSQL, Sequel now uses the datetime type instead of the
181
- timestamp type for generic DateTimes. It now uses bit for the
182
- TrueClass and FalseClass generic types, and image for the File
183
- generic type.
184
-
185
- * Sequel now unescapes URL parts:
186
-
187
- Sequel.connect(ado:///db?host=server%5cinstance)
188
-
189
- However, this can break backward compatibility if you previously
190
- expected it not to be unescaped.
191
-
192
- * The columns_for private SQLite Database method has been removed.
@@ -1,135 +0,0 @@
1
- = Dataset Literalization Refactoring
2
-
3
- * As warned about in the 3.29.0 release notes, dataset literalization
4
- has been completely refactored. It now uses an append-only design
5
- which is faster in all cases, about twice as fast for large objects
6
- and deeply nested structures, and over two orders of magnitude
7
- faster in some pathological cases.
8
-
9
- This change should not affect applications, but may affect custom
10
- extensions or adapters that dealt with literalization of objects.
11
- Most literalization methods now have a method with an _append
12
- suffix that does the actual literalization, which takes the sql
13
- string to append to as the first argument. If you were overriding
14
- a literalization method, you now probably need to override the
15
- _append version instead. If you have this literalization method:
16
-
17
- def foo_sql(bar)
18
- "BAR #{literal(bar.baz)}"
19
- end
20
-
21
- You need to change the code to:
22
-
23
- def foo_sql_append(sql, bar)
24
- sql << "BAR "
25
- literal_append(sql, bar.baz)
26
- end
27
-
28
- def foo_sql(bar)
29
- sql = ""
30
- foo_sql_append(sql, bar)
31
- sql
32
- end
33
-
34
- If you have questions about modifying your custom adapter or
35
- extension, please ask on the Google Group or the IRC channel.
36
-
37
- = New Features
38
-
39
- * Model#set_server has been added to the base support (it was
40
- previously only in the sharding plugin), which allows you to
41
- set the shard on which to save/delete the model instance:
42
-
43
- foo1.set_server(:server_a).save
44
- foo2.set_server(:server_a).destroy
45
-
46
- * Model#save now accepts a :server option that uses set_server
47
- to set the shard to use. Unlike most other #save options, this
48
- option persists past the end of the save. Previously, the
49
- :server option only affected the transaction code, it now
50
- affects the INSERT/UPDATE statement as well.
51
-
52
- * When initiating a new dataset graph, any existing selected
53
- columns is assumed to be the columns to select for the graph from
54
- the current/master table. Before, there was not a way to specify
55
- the columns to select from the current/master table.
56
-
57
- * A :graph_alias_base association option has been added, which is
58
- used to set the base alias name to use when eager graphing. This
59
- is mostly useful when cascading eager graphs to dependent
60
- associations, where multiple associations with the same name in
61
- different models are being graphed simultaneously.
62
-
63
- * You can now specify nanoseconds and a timezone offset
64
- when converting a hash or array to a timestamp. The nanoseconds
65
- and offset are the 7th and 8th entries in the array, and the :nanos
66
- and :offset entry in the hash.
67
-
68
- * The postgres adapter now respects a :connect_timeout option if you
69
- are using the pg driver.
70
-
71
- = Other Improvements
72
-
73
- * Type conversion of Java to Ruby types in the JDBC adapter has been
74
- made much faster, as conversion method lookup is now
75
- O(number of columns) instead of
76
- O(number of columns*number of rows).
77
-
78
- * Sequel::SQL::Blob literalization is now much faster on adapters that
79
- use hex encoding, by switching to String#unpack('H*').
80
-
81
- * Database#after_commit and after_rollback now respect the :server
82
- option to set the server/shard to use.
83
-
84
- * Symbol splitting (e.g. for table__column) is now slightly faster.
85
-
86
- * All adapters now pass the dataset :limit/:offset value through
87
- Dataset#literal instead of using it verbatim. Note that
88
- Dataset#limit already called to_i on input strings, so this isn't
89
- a security issue. However, the previous code broke if you
90
- provided a Sequel-specific object (e.g. Sequel::SQL::Function) as
91
- the :limit/:offset value.
92
-
93
- * Calling graph and eager_graph on an already graphed dataset no
94
- longer modifies the receiver.
95
-
96
- * Model#set_server now correctly handles the case where @this is
97
- already loaded.
98
-
99
- * Dataset#destroy for model datasets now uses the dataset's shard
100
- for transactions.
101
-
102
- * When emulating offset support using ROW_NUMBER (on Microsoft SQL
103
- Server, DB2, and Oracle), explicitly order by the ROW_NUMBER
104
- result, as otherwise the results are not guaranteed to be ordered.
105
-
106
- * Explicitly force a case insensitive collation when emulating ILIKE
107
- on Microsoft SQL Server. Previously, ILIKE could be case sensitive
108
- on Microsoft SQL Server if case sensitive collation was the
109
- database default.
110
-
111
- * Using on_duplicate_key_update with prepared statements on MySQL now
112
- works correctly.
113
-
114
- * The tinytds adapter now works correctly if the
115
- identifier_output_method is nil.
116
-
117
- * The plugin/extension specs were cleaned up using the mock adapter.
118
-
119
- = Backwards Compatibility
120
-
121
- * In addition to the previously mentioned dataset literalization
122
- changes, any custom adapters that overrode *_clause_methods
123
- methods need to be modified to add a method that adds the
124
- SELECT/UPDATE/INSERT/DELETE. Previously, this was done by default,
125
- but due to common table expressions and the dataset literalization
126
- changes, a separate method is now needed.
127
-
128
- * Dataset#on_duplicate_key_update_sql has been removed from the shared
129
- mysql adapter.
130
-
131
- * The :columns dataset option used when inserting is no longer
132
- literalized in advance.
133
-
134
- * Dataset#as_sql no longer takes an expression, it just takes the
135
- alias, and only adds the alias part.
@@ -1,146 +0,0 @@
1
- = New Features
2
-
3
- * The serialization plugin can now support custom serialization
4
- formats, by supplying a serializer/deserializer pair of
5
- callable objects. You can also register custom deserializers
6
- via Sequel::Plugins::Serialization.register_format, so that
7
- they can be referenced by name. Example:
8
-
9
- Sequel::Plugins::Serialization.register_format(:reverse,
10
- lambda{|v| v.reverse},
11
- lambda{|v| v.reverse})
12
- class User < Sequel::Model
13
- serialize_attributes :reverse, :password
14
- end
15
-
16
- * Dataset#import and #multi_insert now support a
17
- :return=>:primary_key option. When this option is used, the
18
- methods return an array of primary key values, one for each
19
- inserted row. Usage of this option on MySQL requires that a
20
- separate query be issued per row (instead of the single
21
- query for all rows that MySQL would usually use).
22
-
23
- * PostgreSQL can now use Dataset#returning in conjunction with
24
- import/multi_insert to set a custom column to return.
25
-
26
- * Microsoft SQL Server can now use Dataset#output in conjection with
27
- import/multi_insert to set a custom column to return.
28
-
29
- * Dataset#import and #multi_insert now respect a :server option to
30
- set the server/shard on which to execute the queries.
31
- Additionally, options given to this method are also passed to
32
- Dataset#transaction.
33
-
34
- * Dataset#insert_multiple now returns an array of inserted primary
35
- keys.
36
-
37
- * Model.def_column_alias has been added to make it easy to create
38
- alias methods for columns. This is useful if you have a legacy
39
- database and want to create friendly method names for the
40
- underlying columns. Note that this alias only affects the setter
41
- and getter methods. This does not affect the dataset level, so you
42
- still need to use the actual column names in dataset filters.
43
-
44
- * many_to_one associations can now have the same name as the related
45
- foreign key column, using the :key_column option. Use of this
46
- feature is not recommended, as it is much better to either rename
47
- the column or rename the association. Here's an example of usage:
48
-
49
- # Example schema:
50
- # albums artists
51
- # :id /--> :id
52
- # :artist --/ :name
53
- # :name
54
- class Album < Sequel::Model
55
- def_column_alias(:artist_id, :artist)
56
- many_to_one :artist, :key_column=>:artist
57
- end
58
-
59
- * The mock adapter can now mock out database types, by providing a
60
- shared adapter name as the host (e.g. mock://postgres). This
61
- emulation is not perfect, but in most cases it allows you to see
62
- what SQL Sequel would generate on a given database without needing
63
- to install the required database driver.
64
-
65
- * Sequel now supports creating full text indexes on Microsoft SQL
66
- Server. Before using it, you must have previously setup a default
67
- full text search catalog, and you need to provide a :key_index
68
- option with an index name symbol.
69
-
70
- * Dataset#group_rollup and #group_cube methods have been added for
71
- GROUP BY ROLLUP and GROUP BY CUBE support. These features are in
72
- a recent SQL standard, and they are supported to various degrees on
73
- Microsoft SQL Server, DB2, Oracle, MySQL, and Derby.
74
-
75
- * Dataset#full_text_search on Microsoft SQL Server now supports
76
- multiple search terms.
77
-
78
- * The jdbc adapter now supports a :login_timeout option, giving the
79
- timeout in seconds.
80
-
81
- = Other Improvements
82
-
83
- * Dataset#exists can now be used with prepared statement
84
- placeholders.
85
-
86
- * Dataset#full_text_search can now be used with prepared statement
87
- placeholders on PostgreSQL, MySQL, and Microsoft SQL Server.
88
-
89
- * If tables from two separate schema are detected when parsing the
90
- schema for a table on PostgreSQL, an error is now raised.
91
- Previously, no error was raised, which led to weird errors later,
92
- such as duplicate columns in a model's primary_key.
93
-
94
- * RETURNING is now supported with UPDATE/DELETE on PostgreSQL 8.2+.
95
- Previously, Sequel only supported it on 9.1+, but PostgreSQL
96
- introduced support for it in 8.2.
97
-
98
- * The shared postgres adapter now correctly handles the return value
99
- for Dataset#insert if you provide a separate column array and value
100
- array on PostgreSQL < 8.2.
101
-
102
- * Handle case in the PostgreSQL adapter where the server version
103
- cannot be determined via a query.
104
-
105
- * H2 clob types are now treated as string instead of as blob.
106
- Treating clob as blob breaks on H2, as it doesn't automatically
107
- hex-unescape the input for clobs as it does for blobs.
108
-
109
- * Dataset#empty? now works correctly when the dataset has an offset
110
- and offset support is being emulated.
111
-
112
- * The mock adapter no longer defaults to downcasing identifiers on
113
- output.
114
-
115
- = Backwards Compatibility
116
-
117
- * Dataset#exists now returns a PlaceholderLiteralString instead of a
118
- LiteralString, which could potentially break some code. If you
119
- would like a String returned, you can pass the returned object to
120
- Dataset#literal:
121
-
122
- dataset.literal(dataset.exists)
123
-
124
- * Dataset#from no longer handles :a__b__c___d as "a.b.c AS d". This
125
- was not the intended behavior, and nowhere else in Sequel is a
126
- symbol treated that way. Now, Dataset#from is consistent with the
127
- rest of Sequel, using "a.b__c AS d". This should only affect
128
- people in very rare cases, as most databases don't use three level
129
- qualified tables. One exception is Microsoft SQL Server, which can
130
- use three level qualified tables for cross-database access.
131
-
132
- * Previously, Dataset#insert_multiple returned an array of hashes, now
133
- it returns an array of primary key values.
134
-
135
- * Dataset#EXRACT_CLOSE in the shared sqlite adapter has been renamed to
136
- Dataset#EXTRACT_CLOSE.
137
-
138
- * Dataset::StoredProcedureMethods::SQL_QUERY_TYPE and
139
- Dataset::ArgumentMapper::SQL_QUERY_TYPE constants have been removed,
140
- as have related sql_query_type private methods.
141
-
142
- * The serialization plugin was significantly refactored.
143
- Model.serialization_map now contains a callable object instead of a
144
- Symbol, and Model.serialization_format has been removed.
145
- Model.define_serialized_attribute_accessors private method now takes
146
- two callable objects before the columns, instead of a single symbol.