Skip to content

Commit

Permalink
Bump version to 3.33.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremyevans committed Mar 1, 2012
1 parent 0af295f commit b9f288c
Show file tree
Hide file tree
Showing 3 changed files with 159 additions and 2 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
=== HEAD
=== 3.33.0 (2012-03-01)

* Add ability to force or disable transactions completely in the migrators using the :use_transactions option (jeremyevans)

Expand Down
157 changes: 157 additions & 0 deletions doc/release_notes/3.33.0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
= New Features

* A server_block extension has been added that makes Sequel's
sharding support easier to use by scoping database access inside
the block to a given server/shard:

Sequel.extension :server_block
DB.extend Sequel::ServerBlock
DB.with_server(:shard_1) do
# All of these will execute against shard_1
DB.tables
DB[:table].all
DB.run 'SOME SQL'
end

* An arbitrary_servers extension has been added that extends
Sequel's sharding support so that you can use arbitrary
connection options instead of referencing an existing, predefined
server/shard:

Sequel.extension :arbitrary_servers
DB.pool.extend Sequel::ArbitraryServers
DB[:table].server(:host=>'foo', :database=>'bar').all

You can use this extension in conjunction with the server_block
extension:

DB.with_server(:host=>'foo', :database=>'bar') do
DB.synchronize do
# All of these will execute on host foo, database bar
DB.tables
DB[:table].all
DB.run 'SOME SQL'
end
end

The combination of these two extensions makes it pretty easy to
write a thread-safe Rack middleware that scopes each request
to an arbitrary database.

* The sqlite adapter now supports an integer_booleans setting
for using 1/0 for true/false values, instead of the the 't'/'f'
values used by default. As SQLite recommends using integers to
store booleans, converting your existing database and enabling
this setting is recommended, but for backwards compatibility it
is set to false. You can convert you existing database by doing
the following for each table/column that has booleans:

DB[:table].update(:boolean_column=>{'t'=>1}.
case(0, :boolean_column))

The integer_booleans default setting may change in a future
version of Sequel, so you should set it manually to false if you
prefer the current default.

* You can now disable transaction use in migrations, in one of two
ways. You generally only need to do this if you are using an
SQL query inside a migration that is specifically not supported
inside a transaction, such as CREATE INDEX CONCURRENTLY on
PostgreSQL.

The first way to disable transactions is on a per-migration basis
by calling the no_transaction method inside the Sequel.migration
block:

Sequel.migration do
no_transaction
change do
# ...
end
end

That will make it so that a transaction is not used for that
particular migration. The second way is passing the
:use_tranctions=>false option when calling Migrator.run (using
the API), which will completely disable transactions for all
migrations during the migrator run.

* The postgres adapter now respects an :sslmode option when using
pg as the underlying driver, you can set the value of this option to
disable, allow, prefer, or require.

* Database#create_schema and #drop_schema are now defined when
connecting to PostgreSQL.

* Database#supports_savepoints_in_prepared_transactions? has been
added for checking if savepoints are supported inside prepared
transactions. This is true if both savepoints and prepared
transactions are both supported, except on MySQL > 5.5.12 (due to
MySQL bug 64374).

= Other Improvements

* The mysql and mysql2 adapters now both provide an accurate number
of rows matched, so Sequel::Model usage on those adapters will now
raise a NoExistingObject exception by default if you attempt to
delete or update an instance that no longer exists in the database.

* Foreign key creation now works correctly without specifying the
:key option when using MySQL with the InnoDB table engine. InnoDB
requires that you list the column explicitly, even if you are
referencing the primary key of the table, so if the :key option is
not given, the database schema is introspected to find the primary
key for the table. If you are attempting to create a table with
a self-referential foreign key, it introspects the generator to
get the primary key for the table.

* The sqlite adapter will now return 1/0 stored in boolean columns as
true/false. It will convert dates stored as Integers/Floats to
Date objects by assuming they represent the julian date. It will
convert times stored as Integers/Floats to Sequel::SQLTime objects
by assuming they represent a number of seconds. It will convert
datetimes stored as Integers by assuming they represent a unix
epoch time integer, and datetimes stored as Floats by assuming the
represent the julian date (with fractional part representing the
time of day). These changes make Sequel handle SQLite's
recommendations for boolean/date/time storage.

* The instance_hooks plugin's (before|after)_*_hook methods now return
self so they can be used in a method chain.

* The list plugin now automatically adds new entries to the end of the
list when creating the entries, if the position field is not
specifically set.

* An identifier_output_method is now respected in the mysql2 adapter.

* NaN/Infinity Float values are now quoted correctly for input on
PostgreSQL, and the postgres adapter correctly handles them on
retrieval from the database.

* The :collate column option is now respected when creating tables or
altering columns on MySQL.

* You can now force use of the TimestampMigrator when the
IntegerMigrator would be used by default by calling
TimestampMigrator.apply or .run.

* Mock adapter usage with a specific SQL dialect now uses the
appropriate defaults for quoting identifiers.

* You can now disable the use of sudo in the rake install/uninstall
tasks using the SUDO='' environment variable.

* A very misleading error message has been fixed when attempting
to constantize an invalid string in the model inflector.

= Backwards Compatibility

* The sqlite adapter now typecasts columns that SQLite stores as
INTEGER/REAL. Previously, it only typecasted columns that
SQLite stored as TEXT/BLOB. For details about SQLite storage, see
http://www.sqlite.org/datatype3.html.

Any custom type conversion procs used with the sqlite adapter should
be modified to work with Integer/Float objects in addition to String
objects.
2 changes: 1 addition & 1 deletion lib/sequel/version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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 = 32
MINOR = 33
# The tiny version of Sequel. Usually 0, only bumped for bugfix
# releases that fix regressions from previous versions.
TINY = 0
Expand Down

0 comments on commit b9f288c

Please sign in to comment.