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,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.