Mar 27 2012, V3.52.8:
* Converted from CVS to GIT
* Added build support for Mac OS X 10.5, 10.6 and 10.7
* Converted old Mac OS X .nib format to newer .xib format
* Fixed issue with using buffer after free
* Fixed use ssize_t where appropriate
* Fixed issue with strlen if param can be NULL
* Fixed use ssize_t for length of string
* Fixed tracing SQLGetData using multiple chunks
* Fixed problem tracing on big-endian machines
* Fixed wrong type label
* Fixed compiler warnings
* The close() methods on connections and cursors don't raise exceptions if
called on already closed objects.
* Fixed fetchmany() with no argument in cursor subclasses.
* Use lo_creat() instead of lo_create() when possible for better interaction
with pgpool-II.
* Error and its subclasses are picklable, useful for multiprocessing interaction
* Better efficiency and formatting of timezone offset objects thanks to Menno
Smits.
* Fixed rownumber during iteration on cursor subclasses. Regression introduced
in 2.4.4.
* Added support for inet arrays.
* Fixed commit() concurrency problem.
* Codebase cleaned up using the GCC Python plugin's static analysis tool, which
has revealed several unchecked return values, possible NULL dereferences,
reference counting problems.
- bug #3486970 [import] Exception on XML import
- bug #3488777 [navi] $cfg['ShowTooltipAliasTB'] and blank names in
navigation
- bug #3512565 [navi] Fixed missing word "Rows" in table list tooltip
after cli
- [security] Fixed local path disclosure vulnerability, see PMASA-2012-2
Bugs Fixed
* Security Fix: Bug 59533 was fixed.
* Performance: Partitioning: InnoDB Storage Engine: The statistics used by the
optimizer for queries against partitioned InnoDB tables were based only on the
first partition of each such table, leading to use of the wrong execution
plan.
* References: This bug was introduced by Bug 11756867.
* Performance: InnoDB Storage Engine: Improved the performance of the DROP TABLE
statement for InnoDB tables, especially on systems with a large buffer pool.
The fix speeds up the processing for freeing entries in the adaptive hash
index.
* InnoDB Storage Engine: Deleting a huge amount of data from InnoDB tables
within a short time could cause the purge operation that flushes data from the
buffer pool to stall. If this issue occurs, restart the server to work around
it. This issue is only likely to occur on 32-bit platforms.
* InnoDB Storage Engine: If the server crashed during a TRUNCATE TABLE or CREATE
INDEX statement for an InnoDB table, or a DROP DATABASE statement for
a database containing InnoDB tables, an index could be corrupted, causing an
error message when accessing the table after restart:
InnoDB: Error: trying to load index index_name for table table_name
InnoDB: but the index tree has been freed!
In MySQL 5.1, this fix applies to the InnoDB Plugin, but not the built-in
InnoDB storage engine.
* InnoDB Storage Engine: When data was removed from an InnoDB table, newly
inserted data might not reuse the freed disk blocks, leading to an unexpected
size increase for the system tablespace or .ibd file (depending on the
setting of innodb_file_per_table. The OPTIMIZE TABLE could compact a .ibd file
in some cases but not others. The freed disk blocks would eventually be
reused as additional data was inserted.
More...
MySQL 5.0 series.
5.0.96
* yaSSL was upgraded from version 1.7.2 to 2.2.0.
5.0.95
* No change log entries.
5.0.94
* Some files in the MySQL Server sources containing legacy code still used the
LGPL license. Such files that were no longer in use have been removed. Any
such code that remains following this removal now appears under the GPL
only. (Bug #11896296)
References: See also Bug #11840513.
* Under some circumstances, the result of SUBSTRING_INDEX() incorrectly
depended on the contents of the previous row. (Bug #42404, Bug #11751514)
5.0.93
* Security Fix: The PolyFromWKB() function could crash the server when
improper WKB data was passed to the function. (Bug #51875, Bug #11759554,
CVE-2010-3840)
* Security Fix: Bug #36544 was fixed.
* Security Fix: Bug #49124 and Bug #11757121 were fixed.
* Two unused test files in storage/ndb/test/sql contained incorrect versions
of the GNU Lesser General Public License. The files and the directory
containing them have been removed. (Bug #11810224)
References: See also Bug #11810156.
* On FreeBSD and OpenBSD, the server incorrectly checked the range of the
system date, causing legal values to be rejected. (Bug #55755, Bug
#11763089)
* New utf8_general_mysql500_ci and ucs2_general_mysql500_ci collations have
been added that preserve the behavior of utf8_general_ci and ucs2_general_ci
from versions of MySQL previous to 5.1.24. Bug 27877 corrected an error in
the original collations but introduced an incompatibility for columns that
contain German 'ß' LATIN SMALL LETTER SHARP S. (As a result of the fix, that
character compares equal to characters with which it previously compared
different.) A symptom of the problem after upgrading to MySQL 5.1.24 or newer
from a version older than 5.1.24 is that CHECK TABLE produces this error:
* yaSSL was upgraded from version 1.7.2 to 2.2.0.
* Bugs Fixed
Remove devel/py-ctypes (only needed by and supporting python24).
Remove PYTHON_VERSIONS_ACCEPTED and PYTHON_VERSIONS_INCOMPATIBLE
lines that just mirror defaults now.
Miscellaneous cleanup while editing all these files.
* InnoDB Storage Engine: A deprecation warning is now issued when
--ignore-builtin-innodb is used.
* yaSSL was upgraded from version 1.7.2 to 2.2.0.
* Security Fix: Bug 13510739 and Bug 63775 were fixed.
* Important Change: InnoDB Storage Engine: When a row grew in size due to an
UPDATE operation, other (non-updated) columns could be moved to off-page
storage so that information about the row still fit within the constraints of
the InnoDB page size. The pointer to the new allocated off-page data was not
set up until the pages were allocated and written, potentially leading to
lost data if the system crashed while the column was being moved out of the
page. The problem was more common with tables using ROW_FORMAT=DYNAMIC or
ROW_FORMAT=COMPRESSED along with the Barracuda file format, particularly with
the innodb_file_per_table setting enabled, because page allocation operations
are more common as the .ibd tablespace files are extended. Still, the problem
could occur with any combination of InnoDB version, file format, and row
format.
* InnoDB Storage Engine: An erroneous assertion could occur, in debug builds
only, when creating an index on a column containing zero-length values (that
is, '').
* InnoDB Storage Engine: A DDL operation such as ALTER TABLE ... ADD COLUMN
could stall, eventually timing out with an Error 1005: Can't create table
message referring to fil_rename_tablespace.
* InnoDB Storage Engine: A DDL operation for an InnoDB table could cause a busy
MySQL server to halt with an assertion error:
More...
Changes:
1.951 2012-03-13T10:17:09Z
* Remove Tie::StdHash from our dependencies list, its part of core
and it creates problems with some CPAN clients
1.950 2012-03-12T13:54:10Z
* DEPRECATED: the encoding attribute to new() - we will not support
automatic decoding after 2.000, so please test your code with
encoding => undef now.
* Add pipeline support: Aaron Crane arc@github++!
* Cache AUTOLOAD calls: improves performance a bit, fixes#2
* Fix: apply reconnect logic to KEYS and INFO
* Fix: forbid PING and SHUTDOWN in SUBSCRIBE mode
* Updated docs covering pipelining and multi/exec
* Updated docs to point users to Github for code and issues
Changes:
=head2 Changes in DBI 1.618 (svn r15170) 25rd February 2012
Fixed compiler warnings in Driver_xst.h (Martin J. Evans)
Fixed compiler warning in DBI.xs (H.Merijn Brand)
Fixed Gofer tests failing on Windows RT74975 (Manoj Kumar)
Fixed my_ctx compile errors on Windows (Dave Mitchell)
Significantly optimized method dispatch via cache (Dave Mitchell)
Significantly optimized DBI internals for threads (Dave Mitchell)
Xsub to xsub calling optimization now enabled for threaded perls.
Corrected typo in example in docs (David Precious)
Added note that calling clone() without an arg may warn in future.
Minor changes to the install_method() docs in DBI::DBD.
Updated dbipport.h from Devel::PPPort 3.20
=head2 Changes in DBI 1.617 (svn r15107) 30th January 2012
NOTE: The officially supported minimum perl version will change
from perl 5.8.1 (2003) to perl 5.8.3 (2004) in a future release.
(The last change, from perl 5.6 to 5.8.1, was announced
in July 2008 and implemented in DBI 1.611 in April 2010.)
Fixed ParamTypes example in the pod (Martin J. Evans)
Fixed the definition of ArrayTupleStatus and remove confusion over
rows affected in list context of execute_array (Martin J. Evans)
Fixed sql_type_cast example and typo in errors (Martin J. Evans)
Fixed Gofer error handling for keeperr methods like ping (Tim Bunce)
Fixed $dbh->clone({}) RT73250 (Tim Bunce)
Fixed is_nested_call logic error RT73118 (Reini Urban)
Enhanced performance for threaded perls (Dave Mitchell, Tim Bunce)
Enhanced and standardized driver trace level mechanism (Tim Bunce)
Removed old code that was an inneffective attempt to detect
people doing DBI->{Attrib}.
Clear ParamValues on bind_param param count error RT66127 (Tim Bunce)
Changed DBI::ProxyServer to require DBI at compile-time RT62672 (Tim Bunce)
Added pod for default_user to DBI::DBD (Martin J. Evans)
Added CON, ENC and DBD trace flags and extended 09trace.t (Martin J. Evans)
Added TXN trace flags and applied CON and TXN to relevant methods (Tim Bunce)
Added some more fetchall_arrayref(..., $maxrows) tests (Tim Bunce)
Clarified docs for fetchall_arrayref called on an inactive handle.
Clarified docs for clone method (Tim Bunce)
Added note to DBI::Profile about async queries (Marcel Grünauer).
Reserved spatialite_ as a driver prefix for DBD::Spatialite
Reserved mo_ as a driver prefix for DBD::MO
Updated link to the SQL Reunion 95 docs, RT69577 (Ash Daminato)
Changed links for DBI recipes. RT73286 (Martin J. Evans)
* Enhance the INSERT syntax to allow multiple rows to be inserted via
the VALUES clause.
* Enhance the CREATE VIRTUAL TABLE command to support the IF NOT EXISTS clause.
* Added the sqlite3_stricmp() interface as a counterpart to sqlite3_strnicmp().
* Added the sqlite3_db_readonly() interface.
* Added the SQLITE_FCNTL_PRAGMA file control, giving VFS implementations
the ability to add new PRAGMA statements or to override built-in PRAGMAs.
* Queries of the form: "SELECT max(x), y FROM table" returns the value of y on
the same row that contains the maximum x value.
* Added support for the FTS4 languageid option.
* Documented support for the FTS4 content option. This feature has actually
been in the code since version 3.7.9 but is only now considered to be
officially supported.
* Pending statements no longer block ROLLBACK. Instead, the pending statement
will return SQLITE_ABORT upon next access after the ROLLBACK.
* Improvements to the handling of CSV inputs in the command-line shell
* Fix a bug introduced in version 3.7.10 that might cause a LEFT JOIN to be
incorrectly converted into an INNER JOIN if the WHERE clause indexable terms
connected by OR.
## Rails 3.2.1 (January 26, 2012) ##
* The threshold for auto EXPLAIN is ignored if there's no logger. *fxn*
* Call `to_s` on the value passed to `table_name=`, in particular symbols
are supported (regression). *Sergey Nartimov*
* Fix possible race condition when two threads try to define attribute
methods for the same class. *Jon Leighton*
## Rails 3.2.0 (January 20, 2012) ##
* Added a `with_lock` method to ActiveRecord objects, which starts
a transaction, locks the object (pessimistically) and yields to the block.
The method takes one (optional) parameter and passes it to `lock!`.
Before:
class Order < ActiveRecord::Base
def cancel!
transaction do
lock!
# ... cancelling logic
end
end
end
After:
class Order < ActiveRecord::Base
def cancel!
with_lock do
# ... cancelling logic
end
end
end
*Olek Janiszewski*
* 'on' and 'ON' boolean columns values are type casted to true
*Santiago Pastorino*
* Added ability to run migrations only for given scope, which allows
to run migrations only from one engine (for example to revert changes
from engine that you want to remove).
Example:
rake db:migrate SCOPE=blog
*Piotr Sarnacki*
* Migrations copied from engines are now scoped with engine's name,
for example 01_create_posts.blog.rb. *Piotr Sarnacki*
* Implements `AR::Base.silence_auto_explain`. This method allows the user to
selectively disable automatic EXPLAINs within a block. *fxn*
* Implements automatic EXPLAIN logging for slow queries.
A new configuration parameter `config.active_record.auto_explain_threshold_in_seconds`
determines what's to be considered a slow query. Setting that to `nil` disables
this feature. Defaults are 0.5 in development mode, and `nil` in test and production
modes.
As of this writing there's support for SQLite, MySQL (mysql2 adapter), and
PostgreSQL.
*fxn*
* Implemented ActiveRecord::Relation#pluck method
Method returns Array of column value from table under ActiveRecord model
Client.pluck(:id)
*Bogdan Gusiev*
* Automatic closure of connections in threads is deprecated. For example
the following code is deprecated:
Thread.new { Post.find(1) }.join
It should be changed to close the database connection at the end of
the thread:
Thread.new {
Post.find(1)
Post.connection.close
}.join
Only people who spawn threads in their application code need to worry
about this change.
* Deprecated:
* `set_table_name`
* `set_inheritance_column`
* `set_sequence_name`
* `set_primary_key`
* `set_locking_column`
Use an assignment method instead. For example, instead of `set_table_name`, use `self.table_name=`:
class Project < ActiveRecord::Base
self.table_name = "project"
end
Or define your own `self.table_name` method:
class Post < ActiveRecord::Base
def self.table_name
"special_" + super
end
end
Post.table_name # => "special_posts"
*Jon Leighton*
* Generated association methods are created within a separate module to allow overriding and
composition using `super`. For a class named `MyModel`, the module is named
`MyModel::GeneratedFeatureMethods`. It is included into the model class immediately after
the `generated_attributes_methods` module defined in ActiveModel, so association methods
override attribute methods of the same name. *Josh Susser*
* Implemented ActiveRecord::Relation#explain. *fxn*
* Add ActiveRecord::Relation#uniq for generating unique queries.
Before:
Client.select('DISTINCT name')
After:
Client.select(:name).uniq
This also allows you to revert the unqueness in a relation:
Client.select(:name).uniq.uniq(false)
*Jon Leighton*
* Support index sort order in sqlite, mysql and postgres adapters. *Vlad Jebelev*
* Allow the :class_name option for associations to take a symbol (:Client) in addition to
a string ('Client').
This is to avoid confusing newbies, and to be consistent with the fact that other options
like :foreign_key already allow a symbol or a string.
*Jon Leighton*
* In development mode the db:drop task also drops the test database. For symmetry with
the db:create task. *Dmitriy Kiriyenko*
* Added ActiveRecord::Base.store for declaring simple single-column key/value stores *DHH*
class User < ActiveRecord::Base
store :settings, accessors: [ :color, :homepage ]
end
u = User.new(color: 'black', homepage: '37signals.com')
u.color # Accessor stored attribute
u.settings[:country] = 'Denmark' # Any attribute, even if not specified with an accessor
* MySQL: case-insensitive uniqueness validation avoids calling LOWER when
the column already uses a case-insensitive collation. Fixes#561.
*Joseph Palermo*
* Transactional fixtures enlist all active database connections. You can test
models on different connections without disabling transactional fixtures.
*Jeremy Kemper*
* Add first_or_create, first_or_create!, first_or_initialize methods to Active Record. This is a
better approach over the old find_or_create_by dynamic methods because it's clearer which
arguments are used to find the record and which are used to create it:
User.where(:first_name => "Scarlett").first_or_create!(:last_name => "Johansson")
*Andrés Mejía*
* Fix nested attributes bug where _destroy parameter is taken into account
during :reject_if => :all_blank (fixes#2937)
*Aaron Christy*
* Add ActiveSupport::Cache::NullStore for use in development and testing.
*Brian Durand*
Tweak COMMENT.
## Rails 3.1.4 (unreleased) ##
* Fix a custom primary key regression *GH 3987*
*Jon Leighton*
* Perf fix (second try): don't load records for `has many :dependent =>
:delete_all` *GH 3672*
*Jon Leighton*
* Fix accessing `proxy_association` method from an association extension
where the calls are chained. *GH #3890*
(E.g. `post.comments.where(bla).my_proxy_method`)
*Jon Leighton*
* Perf fix: MySQL primary key lookup was still slow for very large
tables. *GH 3678*
*Kenny J*
* Perf fix: If a table has no primary key, don't repeatedly ask the database
for it.
*Julius de Bruijn*
=== 3.33.0 (2012-03-01)
* Add ability to force or disable transactions completely in the migrators
using the :use_transactions option (jeremyevans)
* Add ability to turn off transactions for migrations by calling
no_transaction inside the Sequel.migration block (jeremyevans)
* Allow specifically choosing which migrator to use via
TimestampMigrator.apply or IntegerMigrator.apply (jeremyevans)
* Add arbitrary_servers extension to allow the use of arbitrary servers/shards
by providing a hash of options as the server (jeremyevans)
* Add server_block extension to scope database access inside the block to a
specific default server/shard (jeremyevans)
* Respect :collate column option on MySQL (jeremyevans) (#445)
* Use Mysql2::Client::FOUND_ROWS to get accurate number of rows matched in the
mysql2 adapter (jeremyevans)
* Use Mysql#info to get accurate number of rows matched in the mysql adapter
(jeremyevans)
* Make mock adapter with specific SQL dialect use appropriate defaults for
quoting identifiers (jeremyevans)
* Make list plugin automatically set position field value on creation if not
already set (jeremyevans)
* Add Database#integer_booleans setting on SQLite to store booleans as
integers (jeremyevans)
* Typecast columns stored as integers/floats in the SQLite adapter (jeremyevans)
* In the instance_hooks plugin, (before|after)_*_hook instance methods now
return self (jeremyevans)
* Handle NaN, Infinity, and -Infinity floats on PostgreSQL (kf8a, jeremyevans)
(#444)
* Support an :sslmode option when using the postgres adapter with the pg
driver (jeremyevans)
* Add Database#create_schema and #drop_schema to the shared postgres adapter
(tkellen, jeremyevans) (#440)
* Add Database#supports_savepoints_in_prepared_transactions?, false on MySQL
>=5.5.12 (jeremyevans) (#437)
* Support an identifier output method in the mysql2 adapter (jeremyevans)
* Make foreign key creation work on MySQL with InnoDB engine without
specifying :key option (jeremyevans)
* Allow disabling use of sudo with SUDO='' when running the rake
install/uninstall tasks (jeremyevans) (#433)