diff --git a/CHANGELOG b/CHANGELOG index 1cd7d3a0b4..df5508e422 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,4 @@ -=== HEAD +=== 3.31.0 (2012-01-03) * Dataset#from no longer handles :a__b__c___d as a.b.c AS d (jeremyevans) diff --git a/doc/release_notes/3.31.0.txt b/doc/release_notes/3.31.0.txt new file mode 100644 index 0000000000..04271b0232 --- /dev/null +++ b/doc/release_notes/3.31.0.txt @@ -0,0 +1,146 @@ += New Features + +* The serialization plugin can now support custom serialization + formats, by supplying a serializer/deserializer pair of + callable objects. You can also register custom deserializers + via Sequel::Plugins::Serialization.register_format, so that + they can be referenced by name. Example: + + Sequel::Plugins::Serialization.register_format(:reverse, + lambda{|v| v.reverse}, + lambda{|v| v.reverse}) + class User < Sequel::Model + serialize_attributes :reverse, :password + end + +* Dataset#import and #multi_insert now support a + :return=>:primary_key option. When this option is used, the + methods return an array of primary key values, one for each + inserted row. Usage of this option on MySQL requires that a + separate query be issued per row (instead of the single + query for all rows that MySQL would usually use). + +* PostgreSQL can now use Dataset#returning in conjunction with + import/multi_insert to set a custom column to return. + +* Microsoft SQL Server can now use Dataset#output in conjection with + import/multi_insert to set a custom column to return. + +* Dataset#import and #multi_insert now respect a :server option to + set the server/shard on which to execute the queries. + Additionally, options given to this method are also passed to + Dataset#transaction. + +* Dataset#insert_multiple now returns an array of inserted primary + keys. + +* Model.def_column_alias has been added to make it easy to create + alias methods for columns. This is useful if you have a legacy + database and want to create friendly method names for the + underlying columns. Note that this alias only affects the setter + and getter methods. This does not affect the dataset level, so you + still need to use the actual column names in dataset filters. + +* many_to_one associations can now have the same name as the related + foreign key column, using the :key_column option. Use of this + feature is not recommended, as it is much better to either rename + the column or rename the association. Here's an example of usage: + + # Example schema: + # albums artists + # :id /--> :id + # :artist --/ :name + # :name + class Album < Sequel::Model + def_column_alias(:artist_id, :artist) + many_to_one :artist, :key_column=>:artist + end + +* The mock adapter can now mock out database types, by providing a + shared adapter name as the host (e.g. mock://postgres). This + emulation is not perfect, but in most cases it allows you to see + what SQL Sequel would generate on a given database without needing + to install the required database driver. + +* Sequel now supports creating full text indexes on Microsoft SQL + Server. Before using it, you must have previously setup a default + full text search catalog, and you need to provide a :key_index + option with an index name symbol. + +* Dataset#group_rollup and #group_cube methods have been added for + GROUP BY ROLLUP and GROUP BY CUBE support. These features are in + a recent SQL standard, and they are supported to various degrees on + Microsoft SQL Server, DB2, Oracle, MySQL, and Derby. + +* Dataset#full_text_search on Microsoft SQL Server now supports + multiple search terms. + +* The jdbc adapter now supports a :login_timeout option, giving the + timeout in seconds. + += Other Improvements + +* Dataset#exists can now be used with prepared statement + placeholders. + +* Dataset#full_text_search can now be used with prepared statement + placeholders on PostgreSQL, MySQL, and Microsoft SQL Server. + +* If tables from two separate schema are detected when parsing the + schema for a table on PostgreSQL, an error is now raised. + Previously, no error was raised, which led to weird errors later, + such as duplicate columns in a model's primary_key. + +* RETURNING is now supported with UPDATE/DELETE on PostgreSQL 8.2+. + Previously, Sequel only supported it on 9.1+, but PostgreSQL + introduced support for it in 8.2. + +* The shared postgres adapter now correctly handles the return value + for Dataset#insert if you provide a separate column array and value + array on PostgreSQL < 8.2. + +* Handle case in the PostgreSQL adapter where the server version + cannot be determined via a query. + +* H2 clob types are now treated as string instead of as blob. + Treating clob as blob breaks on H2, as it doesn't automatically + hex-unescape the input for clobs as it does for blobs. + +* Dataset#empty? now works correctly when the dataset has an offset + and offset support is being emulated. + +* The mock adapter no longer defaults to downcasing identifiers on + output. + += Backwards Compatibility + +* Dataset#exists now returns a PlaceholderLiteralString instead of a + LiteralString, which could potentially break some code. If you + would like a String returned, you can pass the returned object to + Dataset#literal: + + dataset.literal(dataset.exists) + +* Dataset#from no longer handles :a__b__c___d as "a.b.c AS d". This + was not the intended behavior, and nowhere else in Sequel is a + symbol treated that way. Now, Dataset#from is consistent with the + rest of Sequel, using "a.b__c AS d". This should only affect + people in very rare cases, as most databases don't use three level + qualified tables. One exception is Microsoft SQL Server, which can + use three level qualified tables for cross-database access. + +* Previously, Dataset#insert_multiple returned an array of hashes, now + it returns an array of primary key values. + +* Dataset#EXRACT_CLOSE in the shared sqlite adapter has been renamed to + Dataset#EXTRACT_CLOSE. + +* Dataset::StoredProcedureMethods::SQL_QUERY_TYPE and + Dataset::ArgumentMapper::SQL_QUERY_TYPE constants have been removed, + as have related sql_query_type private methods. + +* The serialization plugin was significantly refactored. + Model.serialization_map now contains a callable object instead of a + Symbol, and Model.serialization_format has been removed. + Model.define_serialized_attribute_accessors private method now takes + two callable objects before the columns, instead of a single symbol. diff --git a/lib/sequel/version.rb b/lib/sequel/version.rb index c3077b0601..de3ac37986 100644 --- a/lib/sequel/version.rb +++ b/lib/sequel/version.rb @@ -3,7 +3,7 @@ module Sequel MAJOR = 3 # The minor version of Sequel. Bumped for every non-patch level # release, generally around once a month. - MINOR = 30 + MINOR = 31 # The tiny version of Sequel. Usually 0, only bumped for bugfix # releases that fix regressions from previous versions. TINY = 0