* Use lang/ruby/gem.mk instead of misc/rubygems/rubygem.mk.
* Add LICENSE.
It is really renamed from ruby-sequel-core and changes are too may,
please refer CHANGELOG file.
* Use lang/ruby/gem.mk instead of misc/rubygems/rubygem.mk.
* Update HOMEPAGE.
* Correct LICENSE.
* Remove default value of GEM_BUILD.
CHANGES:
158[tip] 872063e42b12 2010-02-19 08:02 -0800 ged
Adding "fat gem" compatible loader, set the default RUBY_CC_VERSION.
157 ab525ca90531 2010-02-19 06:27 -0800 ged
Updated the Rakefile so it includes itself in gems. (closes#15) Thanks to flameeyes@bitbucket for
156 9c65eb905416 2010-02-18 06:52 -0800 ged
Applied patch for PGconn#async_exec to make it have the same semantics as PGconn#exec (closes#19). Thanks again to Lars Kanis for the patch.
155 b0017ac0ecb5 2010-02-17 15:30 -0800 ged
Updated the Rakefile to always default the package version even if a version can't be read from the VERSION_FILE.
154 c7d5458af696 2010-02-17 06:23 -0800 ged
Improving spec database setup function (closes#18). Thanks to Lars Kanis for another fine patch.
153 39b11474d035 2010-02-17 06:14 -0800 ged
Ack! Removing typo
152 9d54bbc98488 2010-02-17 06:10 -0800 ged
Adding a test to ensure the result encoding remains the same even when client_encoding in the connection changes.
151 31afece7c203 2010-01-18 09:15 -0800 ged
Made the 'make_header' in the extconf more clear.
150:149,148 d9c920068712 2010-01-13 20:56 -0800 pgsql
Merged
149:141 294eb6d5530b 2010-01-13 20:51 -0800 pgsql
In rspec tests, replace the pattern:
148 74fab32c2687 2010-01-11 08:15 -0800 ged
A better fix for the PGconn#block weirdness on Win32 (closes#16).
147 f8dfc1b6c51c 2010-01-06 06:17 -0800 ged
Rearranged the sections of the README.
146 0df792de2a19 2010-01-05 08:48 -0800 ged
Updating MacOS X README.
145 2894973bc63f 2010-01-04 18:28 -0800 ged
Work around broken rb_thread_select() on win32; thanks to Lars Kanis for the patch!
144 88dacdb9c97d 2010-01-04 18:16 -0800 ged
Reverted removal of PGresult::InvalidOid, fixed broken spec.
143 739cec560448 2010-01-04 17:55 -0800 ged
Ignore some generated files, documentation work, removed type OID constants.
142 38a0d2a90664 2010-01-04 17:39 -0800 ged
Applied patch for static cross-compilation of win32 gem from Lars Kanis with a few changes to
141 f31202539234 2010-01-03 11:40 -0800 ged
Updated build system
* Use lang/ruby/gem.mk instead of misc/rubygems/rubygem.mk.
* Add LICENSE.
* Remove RUBY_HAS_ARCHLIB.
* Add PKG_DESTDIR_SUPPORT.
* Private patch isn't needed any more.
version 2.8.2
* Fix: Mysql#insert_id returns invalid value when larger than 2**32.
* Use lang/ruby/gem.mk instead of misc/rubygems/rubygem.mk.
* Fix dependency according to gemspec.
* Remove default value of GEM_BUILD.
Official changes are unknown.
* initial @stmt_name make unique.
* add DBI::ForcedError class.
* Use lang/ruby/gem.mk instead of misc/rubygems/rubygem.mk.
* Remove default value of GEM_BUILD.
0.4.4
Make sure to use String representation of type constants. This fixes
the problem of MySQL values all becoming Ruby Strings instead of sane
and proper Ruby types (like Fixnum for MySQL integers, etc.) Thanks go
to http://github.com/naturalethic who suggested the fix at
http://github.com/Pistos/m4dbi/issues/#issue/2/comment/123677
* Use lang/ruby/gem.mk instead of misc/rubygems/rubygem.mk.
* Add LICENSE.
* Fix dependency according to gemspec.
Changes are unknown, but may be some bug fixes.
* Add LICENSE.
* Add proper dependency.
* Remove default value of GEM_BUILD.
= CHANGES
== 1.2.2: 2010-07-04
* Supported ActiveRecord 2.3.8 and Rails 2.3.8.
* [#37] Fixed gem dependencies in Rakefile. [zachwily]
* Fixed a bug that setting 'false' but 'nil' is returned. [Hideyuki Yasuda]
* Supported non-String attribute value as LDIF value. [Matt Mencel]
* Worked with a LDAP server that uses 'objectclass' not 'objectClass' as
objectClass attribute name. [Tim Hermans]
* [#41] Provide SASL-option support, primarily for authzid
[Anthony M. Martinez]
* [#43] Error with to_xml [ilusi0n.x]
* [#44] Accept '0' and '1' as boolean value [projekttabla]
* [#27429] Fixed inverted validatation by validate_excluded_classes
[Marc Dequ«²nes]
* Supported DN attribute value for assosiation replacement.
[J«Órg Herzinger]
Please refer http://dev.mysql.com/doc/refman/5.1/en/news-5-1-50.html
for full changes .
InnoDB Notes:
InnoDB Plugin has been upgraded to version 1.0.11. This version is
considered of General Availability (GA) quality.
In this release, the InnoDB Plugin is included in source and binary
distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64, ia64),
generic Linux RPM packages, and any builds produced with the icc
compiler. It also does not work for FreeBSD 6 and HP-UX or for Linux
on generic ia64.
Bugs fixed:
Important Change: Replication: The LOAD DATA INFILE statement is now
considered unsafe for statement-based replication. When using
statement-based logging mode, the statement now produces a warning;
when using mixed-format logging, the statement is made using the
row-based format. (Bug#34283)
Partitioning: UPDATE and INSERT statements affecting partitioned
tables performed poorly when using row-based replication. (Bug#52517)
Partitioning: INSERT ON DUPLICATE KEY UPDATE statements performed
poorly on tables having many partitions. This was because the handler
function for reading a row from a specific index was not optimized in
the partitioning handler. (Bug#52455)
The server could crash on shutdown, if started with
--innodb-use-system-malloc=0. (Bug#55581)
GROUP BY operations used max_sort_length inconsistently. (Bug#55188)
Building MySQL on Solaris 8 x86 failed when using Sun Studio due to
gcc inline assembler code. (Bug#55061)
In debug builds, an assertion could be raised when the server tried to
send an OK packet to the client after having failed to detect errors
during processing of the WHERE condition of an UPDATE
statement. (Bug#54734)
The database server could crash when renaming a table that had active
transactions. (This issue only affected the database server when built
for debugging.) (Bug#54453)
The server could crash during the recovery phase of startup, if it
previously crashed while inserting BLOB or other large columns that
use off-page storage into an InnoDB table created with
ROW_FORMAT=REDUNDANT or ROW_FORMAT=COMPACT. (Bug#54408)
For an InnoDB table created with ROW_FORMAT=COMPRESSED or
ROW_FORMAT=DYNAMIC, a query using the READ UNCOMMITTED isolation level
could cause the server to stop with an assertion error, if BLOB or
other large columns that use off-page storage were being inserted at
the same time. (Bug#54358)
A client could supply data in chunks to a prepared statement parameter other than of type TEXT or BLOB using the mysql_stmt_send_long_data() C API function (or COM_STMT_SEND_LONG_DATA command). This led to a crash because other data types are not valid for long data. (Bug#54041)
mysql_secure_installation did not properly identify local accounts and
could incorrectly remove nonlocal root accounts. (Bug#54004)
Transactions could be incorrectly committed during recovery, rather
than rolled back, if the server crashed and was restarted after
performing ALTER TABLE...ADD PRIMARY KEY on an InnoDB table, or some
other operation that involves copying the entire table. (Bug#53756)
Portability problems in SHOW STATUS could lead to incorrect results on
some platforms. (Bug#53493)
Builds of MySQL generated a large number of warnings. (Bug#53445)
With lower_case_table_names set to a nonzero value, searches for table
or database names in INFORMATION_SCHEMA tables could produce incorrect
results. (Bug#53095)
The ABI check for MySQL failed to compile with gcc 4.5. (Bug#52514)
mysql_secure_installation sometimes failed to locate the mysql
client. (Bug#52274)
Reading a ucs2 data file with LOAD DATA INFILE was subject to three
problems. 1) Incorrect parsing of the file as ucs2 data, resulting in
incorrect length of the parsed string. This is fixed by truncating the
invalid trailing bytes (incomplete multibyte characters) when reading
from the file. 2) Reads from a proper ucs2 file did not recognize
newline characters. This is fixed by first checking whether a byte is
a newline (or any other special character) before reading it as a part
of a multibyte character. 3) When using user variables to hold column
data, the character set of the user variable was set incorrectly to
the database charset. This is fixed by setting it to the character set
specified in the LOAD DATA INFILE statement, if any. (Bug#51876)
Searches in INFORMATION_SCHEMA tables for rows matching a nonexistent
database produced an error instead of an empty query
result. (Bug#49542)
On FreeBSD, memory mapping for MERGE tables could fail if underlying
tables were empty. (Bug#47139)
The my_like_range_xxx() functions returned badly formed maximum
strings for Asian character sets, which caused problems for storage
engines. (Bug#45012)
A debugging assertion could be raised after a write failure to a
closed socket. (Bug#42496)
An assertion failure occurred within yaSSL for very long keys. (Bug#29784)
See also Bug#53463.
pkgsrc changes:
- adjust dependency version numbers to match versions of packages in pkgsrc
Upstream changes:
0.15 31 Aug 2010
* pod patches from movingtarget@mackler.org
* remove .yml config file and plugin dependency
* psycopg/cursor_type.c: executemany() propagates exceptions raised by the
iterable to the caller.
* lib/pool.py: dropped logging.basicConfig() call. It messes up with
projects using logging but where no handler is installed on the root
logger.
* psycopg/cursor_type.c: exceptions raised in the columns iterator of the
copy methods propagated to the caller.
* psycopg/typecast_datetime.c: Round seconds in historical timezones to
the nearest minute.
* lib/extras.py: register_tstz_w_secs() is now no-op.
Changes 2.2.1:
* Builds again on Windows.
Changes 2.2.0:
* typecast.c: Fixed problem related to receiving None from Python
when a string was expected.
* psycopg/adapter_datetime.c: Fixed TimestampFromTicks for second
values > 59.5.
* psycopg/adapter_datetime.c: Fixed same bug for TimeFromTicks.
* Added typecasters for arrays of specific MX/Py time-related types.
* psycopg/adapter_[mx]datetime.c: Explicit cast of the SQL representation
of time-related objects.
* psycopg/adapter_binary.c: Adapt buffer objects using an explicit cast on
the string literal
* lib/pqpath.c: Fixed reference leak in notify reception.
* Notifies are collected if available after every query execution.
* lib/extensions.py: DECIMAL typecaster imported from _psycopg.
* lib/extensions.py: PY* and MX* time typecaster imported from _psycopg.
* psycopg/connection_type.c: Correctly parse keywords in connect().
* psycopg/pqpath.c: Ensure running COPY in blocking mode.
* psycopg/pqpath.c: Free the GIL in blocking operations in V2 COPY FROM.
* psycopg/pqpath.c: Evaluate Python objects only once outside the COPY I/O
loops.
* Fixed problem with asynchronous NOTIFYs.
* Integrated async pacthes from Jan's git tree.
Upstream changes:
0.789 (06.23.2010) - John Siracusa <siracusa@gmail.com>
* Added support for SELECT FOR UPDATE and other forms of locking
(Initial patch by Kostas Chatzikokolakis)
* Fixed some POD typos (RT 58405)
0.788 (05.22.2010) - John Siracusa <siracusa@gmail.com>
* Fixed a bug that prevented function calls like now() from being
properly inlined, even when allow_inline_column_values was set
to a true value. (Reported by David Bourget)
* The Loader/auto-init system will now automatically set the
allow_inline_column_values attribute to a true value when a
column has a default value that looks like a function call.
* Fixed a non-numeric warning with development releases of Math::BigInt.
* Fixed SQL reserved word quoting bug. (Reported by Taric Mirza)
* Avoid stringifying exception objects when setting error().
(Suggested by Kostas Chatzikokolakis)
0.787 (04.27.2010) - John Siracusa <siracusa@gmail.com>
* Added remarks column attribute. (Patch by Adam Mackler)
* Improved error message generated by get_objects_from_sql() when
an unknown column is encountered.
* Added support for Rose::DB's keyword_function_calls attribute.
* Added dedicated timestamp with time zone column type.
* Inflate triggers now work correctly with lazy-loaded columns.
(Reported by Alex Karelas)
* Failure to have any valid registered data sources no longer causes
a fatal error when looking up default column sequence names during
class setup.
pkgsrc changes:
- import package for newly introduced dependency DateTime::Format::Oracle
Upstream changes:
0.762 (06.23.2010) - John Siracusa <siracusa@gmail.com>
* Support for Rose::DB::Object 0.789.
0.761 (05.22.2010) - John Siracusa <siracusa@gmail.com>
* Support for Rose::DB::Object 0.788.
* Detect and report problems caused by DBD::mysql versions that fail to
set the Active database handle attribute back to a true value when
mysql_auto_reconnect is set. (Reported by Matt S. Trout and Kostas
Chatzikokolakis)
0.760 (04.28.2010) - John Siracusa <siracusa@gmail.com>
* Moved version number back to three places after the decimal in order to
placate Unix package management systems. (Suggested by Matt S. Trout)
0.7591 (04.27.2010) - John Siracusa <siracusa@gmail.com>
* Corrected skip counts in MySQL tests.
0.759 (04.27.2010) - John Siracusa <siracusa@gmail.com>
* Fixed some inheritance dead ends (Reported by Matt S. Trout)
* Corrected parse_array()'s value unescaping (RT 56112)
* Added timestamp with time zone parsing/formating methods.
* Improved Oracle date/time parsing and formatting.
* DateTime::Format::Oracle is now a prerequisite (see above).
pkgsrc changes:
- adjust dependencies
Upstrean changes:
0.43 Sun Jul 25 01:00:34 UTC 2010
- add dep for MooseX::NonMoose for the use_moose=1 option
0.42 Sat Jul 24 23:14:27 UTC 2010
- add use_moose=1 to loader options by default for create=static
0.41 Wed Apr 28 08:42:13 EDT 2010
- allow configuring ResultSets using the SchemaProxy trait
pkgsrc changes:
- adjusting dependencies
Upstream changes:
0.49 11 April 2010
* uri_for_view_on_single_result() will return uri for 'view' action,
regardless of value of can_write().
0.50 13 May 2010
* fix make_primary_key_string() to get rid of bad sprintf() call
0.51 19 May 2010
* added use_request_uri_for_path to test MyApp to fix
test failures with Catalyst::Runtime 5.80024
Upstream changes:
0.39 Fri Mar 26 20:24:58 PDT 2010
- mysql: TEXT->LONGTEXT
- mysql: when reverse engineering, transform a default of
CURRENT_TIMESTAMP into the more common NOW()
- mysql: fix reverse-engineering of empty string default
Upstream changes:
0.13 2010-05-21 18:20:00
- Changing resolution of tests to not use seconds, RT #48385
- Changing comparison in tests to support Test::More 0.96, RT #57746
Upstream changes:
2010-08-11 Patrick Galbraith <patg@patg.net> (4.017)
* BUG #60085, Andreas Koenig's patch for DBI changes
* Updated documents
2010-07-10 Patrick Galbraith <patg@patg.net> (4.016)
* Disabled mysql_bind_type_guessing due to one performance issue
querying on a indexed character column unquoted will mean the index
is not used
* Fixed int types that should be bools
2010-07-09 Patrick Galbraith <patg@patg.net> (4.015)
* BUG #56664 fixed t/40blobs.t skip_all logic (W. Phillip Moore)
* BUG #57253 Fixed iteration past end of string (crash). (Chris Butler)
* Added a new parameter for old behavior- mysql_bind_comment_placeholders which
will make it possible to have placeholders bound for those who really
want that behavior.
* Fixed bind_type_guessing - always on now
2010-04-14 Patrick Galbraith <patg@patg.net> (4.014)
* BUG #30033 Fixed handling of comments to allow comments that contain characters
that might otherwise cause placeholder detection to not work properly
* BUG #53844, Fix for memory leak in stats. (Gregory Burmistrov)
* BUG #49719, Fix for handling of NULLs in prepared statements (Gert Pache)
* BUG #55627, Fix for testing failure due to strict mode (Yves)
* BUG #51784, Fix for mysqladmin on Windows in Makefile (Zeeshan Muhammad)
* BUG #41630, Typo in Makefile
* Had to define true and false in dbdimp.h. Didn't work out of the box on Linux
* Fix an old and very obscure bug that can lead to corruption of the database
free-page list when incremental_vacuum is used.
Changes 3.7.1:
* Added new commands SQLITE_DBSTATUS_SCHEMA_USED and SQLITE_DBSTATUS_STMT_USED
to the sqlite3_db_status() interface, in order to report out the amount of
memory used to hold the schema and prepared statements of a connection.
* Increase the maximum size of a database pages from 32KiB to 64KiB.
* Use the LIKE optimization even if the right-hand side string contains no
wildcards.
* Added the SQLITE_FCNTL_CHUNK_SIZE verb to the sqlite3_file_control()
interface for both unix and windows, to cause database files to grow in
large chunks in order to reduce disk fragmentation.
* Fixed a bug in the query planner that caused performance regresssions
relative to 3.6.23.1 on some complex joins.
* Fixed a typo in the OS/2 backend.
* Refactored the pager module.
* The SQLITE_MAX_PAGE_SIZE compile-time option is now silently ignored.
The maximum page size is hard-coded at 65536 bytes.
* script syntax error
* Fixed memory corruption issue introduced in 2.0.3 with replicating large rows
* cloneNodeFinish() references the proper column in sl_sequence
* Newer versions of flex have changed yyleng from an int to a size_t
instead of referencing the extern yyleng directly we use the function
yyget_leng() and have added a configure check to confirm that the version
of flex we use is not too old.
* Memory leak fixes
* Various documentation fixes
* cloneNodeFinish() called updateRelOid() that ws looking at wrong tab_id
sl_sequence but the column is named seq_id.
* Fixed mistyped variable name in ShouldSlonyVacuumTable
Upstream changes:
2.0001 Aug 22 12:03:00 2010 PDT
- Simply reading a hash or array element no longer causes autoviv-
ification. (Dereferencing it does still.) This makes DBM::Deep
comply with Perl's behaviour (RT#60391).
Makefile.PL is not groked by Perl's 5.12.1 ExtUtils::MakeMaker). As
a side effect fix PERL5_PACKLIST.
- While here add dependency on databases/p5-DBD-postgresql.
Bump PKGREVISION to 3.
to trigger/signal a rebuild for the transition 5.10.1 -> 5.12.1.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=..."), minus the packages updated after
the perl package update.
sno@ was right after all, obache@ kindly asked and he@ led the
way. Thanks!
Changes since version 2.11.10:
- [setup] Fixed output sanitizing in setup script, see PMASA-2010-4 for
more details.
- [core] Fixed various XSS issues, see PMASA-2010-5 for more details.
Upstream changes:
2.0000 Jul 18 14:30:00 2010 PDT
- THIS VERSION IS NOT FULLY COMPATIBLE WITH 1.002x.
- This version is practically identical to the previous dev
release. See 1.9999_01, below, for all the hype.
- Also, a memory leak caused by misuse of field hashes has
been fixed.
- perl 5.8.4 is now required.
1.9999_02 Jul 11 13:02:00 2010 PDT
(This is the second developer release for 2.0000.)
- Fixed a broken test
- Fixed compilation and overloading under perl 5.8.x
1.9999_01 Jun 27 14:22:00 2010 PDT
(This is the first developer release for 2.0000.)
- THIS VERSION CHANGES THE FILE FORMAT.
- Databases from DBM::Deep 1.0003 and higher can still
be opened.
- Newly-created databases automatically use the version 2.x
format (numbered 4 internally), which version 1.x
cannot open.
- The optimize method, since it copies everything to a new
database, upgrades it.
- There is a new db_version method.
- Support for perl 5.6 has been dropped. We now require 5.8. 5.6
users can still use version 1.0025. If anyone really needs 5.6
support in version 2.x, we can add it back again, but would pre-
fer not to. Bug fixes may be back-ported to 1.002x if requested.
- The File back end now supports Unicode. This is only supported
for new databases. Old databases in the DBM::Deep 1.0003 format
will have to be upgraded for this to work.
- New external_refs mode, which allows objects retrieved from the
database to hang on to the corresponding database entries, keep-
ing them alive, even after all references to them from the data-
base itself have been deleted.
- Numeric comparison of DBM::Deep objects now works. Different
objects used to compare equal. And there were uninitial-
ized warnings.
- Deletions now work properly in the DBI back end. Deleting an
array or hash referenced by two keys in the database used to
be a no-op.
pkgsrc changes:
- adjust dependencies according to META.yml
Upstream changes:
0.07001 2010-07-24 21:28:08
- put is_deferrable => 1 back into default attributes for belongs_to
- fix Postgres sequence detection for qualified sequences
- detect DOS line ends in table/column comments and convert to \n
- added use_moose option
- always mark pk columns is_nullable=0
- fix unique constraint names for SQLite (actual names break ->deploy)
- fix bug in qualify_objects that would add schema to relnames
- better type info for Informix, except for DATETIME precision and
INTERVAL support
- better type info for DB2
- fix some newly-introduced test bugs
- fix composite PKs getting marked is_auto_increment on SQLite
0.07000 2010-05-22 23:40:15
- added qualify_objects option to prepend db_schema to table names
- fix for negative numeric default values
- sequence is detected for Oracle
- fix for SQLite is_auto_increment detection when table is empty (hobbs)
- rescan now reloads all tables
- minor type info improvements for all DBs
- fix erroneous default_value for MySQL NOT NULL columns (RT#57225)
- remove is_deferrable => 1 from default for belongs_to rels
- better type info for Oracle
- preliminary Informix support
- unregister dropped sources on rescan
- added 'preserve_case' option with support for all DBs where it makes
sense; removed the MSSQL 'case_sensitive_collation' and the
Firebird/InterBase 'unquoted_ddl' options in favor of it.
- support CamelCase table names and column names (in case-preserving
mode) at the v7 naming level
- rewrite datetime default functions as \'current_timestamp' where
possible (except for Sybase ASE) to ease cross-deployment
- use column_info instead of select to get Oracle column list (RT#42281)
- match quotes in MySQL parser in more places (RT#42101)
- fix unique detection in DB2 for multiple schemas (RT#39622)
- fix column name collisions with methods (RT#49443)
- fix loading MySQL views on older MySQL versions (RT#47399)
0.06001 2010-04-10 01:31:12
- fix type info for MSSQL
- fix MSSQL collation detection on freetds tds version 8.0
0.06000 2010-04-06 01:12:25
- better type info for MySQL
- initial MySQL data type tests (jhannah)
- don't set result_namespace if it's 'Result'
- support for MSSQL databases with case sensitive collation, manually
overridable with 'case_sensitive_collation' option
- do not try to detect driver and rebless when used with a custom
'loader_class'
- suppress 'bad table or view' warnings for filtered tables/views
- croak if several tables reduce to an identical moniker (ribasushi)
- better type info for Sybase ASE
- better type info for Pg: sets sequence for serials, handles numerics
without precision
- better _tables_list for MSSQL
- pick up views in SQLite too
- better rel inflection using Lingua::EN::Inflect::Phrase
- cascade_delete and cascade_copy are turned off for has_many/might_have
by default, and belongs_to has on_delete => 'CASCADE', on_update =>
'CASCADE' and is_deferrable => 1 by default, overridable via
relationship_attrs
- added config_file option for loading loader options from a file
- set inflate_datetime => 1 for 'AS getdate()' computed columns in
Sybase
- Firebird support
- use introspection pragmas instead of regexes to introspect SQLite
(hobbs)
- generate POD for refs correctly from column_info
- fix tables list, fk introspection and type info for SQL Anywhere
Upstream changes:
Version 1.31, released August 16th, 2010
----------------------------------------------
[Bug fixes]
* Fix misbehaviour of DELETE/UPDATE for tables with only basic capabilities
and no matching where clause (reported by H.Merijn Brand and Drew ...)
* Fix some column identifier splits to respect quoted tables
[Improvements]
* Optimized some core routines between 25% and 50%.
0.43 1st August 2010
* Changes to build with BDB 5.1
- Dropped support for Server option when creating an environment.
* Documantation updates.
RT# 59202
* Fixed compilation error with MS Visual Studio 2005
RT# 59924
This problem results mysqld to exit on start up.
5.1/i386 5.1/amd64 5.99.38/i386 5.99.38/amd64
my_time_t int32_t int64_t int32_t int64_t
time_t int32_t int32_t int64_t int64_t
I confirmed to mysqld running on these four case except 5.99.38/i386.
Bump PKG_REVISION.
Please refer http://dev.mysql.com/doc/refman/5.1/en/news-5-1-49.html
for full changes.
* InnoDB Plugin has been upgraded to version 1.0.10. This version is
considered of General Availability (GA) quality.
In this release, the InnoDB Plugin is included in source and binary
distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64, ia64), and
generic Linux RPM packages. It also does not work for FreeBSD 6 and
HP-UX or for Linux on generic ia64.
Bugs fixed:
* Security Fix: After changing the values of the innodb_file_format or
innodb_file_per_table configuration parameters, DDL statements could
cause a server crash. (Bug#55039)
* Security Fix: Joins involving a table with with a unique SET column
could cause a server crash. (Bug#54575)
* Security Fix: Incorrect handling of NULL arguments could lead to a
crash for IN() or CASE operations when NULL arguments were either
passed explicitly as arguments (for IN()) or implicitly generated by
the WITH ROLLUP modifier (for IN() and CASE). (Bug#54477)
* Security Fix: A malformed argument to the BINLOG statement could
result in Valgrind warnings or a server crash. (Bug#54393)
* Security Fix: Use of TEMPORARY InnoDB tables with nullable columns
could cause a server crash. (Bug#54044)
* Security Fix: The server could crash if there were alternate reads
from two indexes on a table using the HANDLER interface. (Bug#54007)
* Security Fix: Using EXPLAIN with queries of the form SELECT
... UNION ... ORDER BY (SELECT ... WHERE ...) could cause a server
crash. (Bug#52711)
* Security Fix: LOAD DATA INFILE did not check for SQL errors and sent
an OK packet even when errors were already reported. Also, an assert
related to client-server protocol checking in debug servers
sometimes was raised when it should not have been. (Bug#52512)
* Fix a potential database corruption problem that can result if the same
database file is alternately written by version 3.7.0 and 3.6.23.1.
* Fix a possible performance regression caused by the introduction of automatic
indexing.
Pkgsrc changes:
- adjust dependencies
- set PERL5_MODULE_TYPE to Module::Install::Bundled
Upstream changes:
0.08123 2010-06-12 14:46 (UTC)
* Fixes
- Make sure Oracle identifier shortener applies to auto-generated
column names, so we stay within the 30-char limit (RT#58271)
- Oracle sequence detection now works across schemas
- Fix a Storage/$dbh leak introduced by the migration to
Try::Tiny (this is *not* a Try::Tiny bug)
- Fix corner case of count with group-by over a 1:1 join column
where the selector ends up with column name clashes
- POD fixes (RT#58247)
* Misc
- Test suite default on-disk database now checks for Win32
fail-conditions even when running on other OSes
0.08122 2010-06-03 17:41 (UTC)
* New Features
- Add DBIx::Class::FilterColumn for non-ref filtering
- ::Storage::DBI now correctly preserves a parent $dbh from
terminating children, even during interpreter-global
out-of-order destruction
- dbicadmin supports an -I option with the same semantics as
perl itself
- InflateColumn::DateTime support for MSSQL via DBD::Sybase
- Millisecond precision support for MSSQL datetimes for
InflateColumn::DateTime
- Oracle-specific hierarchical query syntax support:
CONNECT BY (NOCYCLE) / START WITH / ORDER SIBLINGS BY
- Support connecting using $ENV{DBI_DSN} and $ENV{DBI_DRIVER}
- current_source_alias method on ResultSet objects to
determine the alias to use in programatically assembled
search()es (originally added in 0.08100 but unmentioned)
- Rewrite/unification of all subselecting limit emulations
(RNO, Top, RowNum) to be much more robust wrt complex joined
resultsets
- MSSQL limits now don't require nearly as many applications of
the unsafe_subselect_ok attribute, due to optimized queries
- Support for Generic Subquery limit "emulation" - awfully slow
and inefficient but works on almost any db, and is preferred
to software limit emulation
- Sybase ASE driver now uses SET ROWCOUNT where possible, and
Generic Subquery otherwise for limit support instead of always
using software limit emulation
- create_ddl_dir (and derivatives) now attempt to create the given
$ddl_dir if it does not already exist
- deployment_statements now automatically supplies the current RDBMS
version to SQLT producer_args for MySQL, Pg, SQLite and Oracle
* Fixes
- Fix nasty potentially data-eating bug when deleting/updating
a limited resultset
- Fix find() to use result_class set on object
- Fix result_class setter behaviour to not mistakenly stuff attrs.
- Don't try and ensure_class_loaded an object. This doesn't work.
- Fix as_subselect_rs to not inject resultset class-wide where
conditions outside of the resulting subquery
- Fix count() failing with {for} resultset attribute (RT#56257)
- Fixed incorrect detection of Limit dialect on unconnected $schema
- update() on row not in_storage no longer throws an exception
if there are no dirty columns to update (fixes cascaded update
annoyances)
- update()/delete() on prefetching resultsets no longer results
in malformed SQL (some $rs attributes were erroneously left in)
- Fix dbicadmin to allow deploy() on non-versioned schema
- Fix dbicadmin to respect sql_dir on upgrade() (RT#57732)
- Update Schema::Versioned to respect hashref style of
connection_info
- Do not recreate the same related object twice during MultiCreate
(solves the problem of orphaned IC::FS files)
- Fully qualify xp_msver selector when using DBD::Sybase with
MSSQL (RT#57467)
- Fix ::DBI::Storage to always be able to present a full set of
connect() attributes to e.g. Schema::Versioned
- Fix Oracle auto-inc trigger detection of "INSERT OR UPDATE"-type
triggers
* Misc
- Reformatted Changelog \o/
- DBIC goes git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git
- Allow developers to skip optional dependency forcing when working
from a checkout
- Add a warning to load_namespaces if a class in ResultSet/ is not
a subclass of DBIx::Class::ResultSet
- All DBIC exception-handling switched to Try::Tiny
- All DBIC modules are now free of imports via namespace::clean
- Depend on optimized SQL::Abstract (faster SQL generation)
- Depend on new Class::Accessor::Grouped reintroducing optional use
of Class::XSAccessor (just install C::XSA and get lightning fast
column accessors)
0.08121 2010-04-11 18:43:00 (UTC)
- Support for Firebird RDBMS with DBD::InterBase and ODBC
- Add core support for INSERT RETURNING (for storages that
supports this syntax, currently PostgreSQL and Firebird)
- Fix spurious warnings on multiple UTF8Columns component loads
- DBIx::Class::UTF8Columns entered deprecated state
- DBIx::Class::InflateColumn::File entered deprecated state
- DBIx::Class::Optional::Dependencies left experimental state
- Add req_group_list to Opt::Deps (RT#55211)
- Add support for mysql-specific STRAIGHT_JOIN (RT#55579)
- Cascading delete/update are now wrapped in a transaction
for atomicity
- Fix accidental autovivification of ENV vars
- Fix update_all and delete_all to be wrapped in a transaction
- Fix multiple deficiencies when using MultiCreate with
data-encoder components (e.g. ::EncodedColumn)
- Fix regression where SQL files with comments were not
handled properly by ::Schema::Versioned.
- Fix regression on not properly throwing when $obj->relationship
is unresolvable
- Fix the join-optimiser to consider unqualified column names
whenever possible
- Fix an issue with multiple same-table joins confusing the join
optimizier
- Add has_relationship method to row objects
- Fix regression in set_column on PK-less objects
- Better error text on malformed/missing relationships
- Add POD about the significance of PK columns
- Fix for SQLite to ignore the (unsupported) { for => ... }
attribute
- Fix ambiguity in default directory handling of create_ddl_dir
(RT#54063)
- Support add_columns('+colname' => { ... }) to augment column
definitions.
Upstream changes:
Version 1.30, released August 1st, 2010
----------------------------------------------
[Bug fixes]
* remove blib directory from distfile
Version 1.29, released August 1st, 2010
----------------------------------------------
[Bug fixes]
* add some getters as documented in SQL::Statement::Structure
(fixes RT#59834, thanks John Wiersba)
* add missing import of function croak to SQL::Statement::Term::ColumnValue
* fix assignment of parser result (doesn't run with perl-5.13.3)
Upstream changes:
Changes in DBI 1.613 (svn r14271) 22nd July 2010
* Fixed Win32 prerequisite module from PathTools to File::Spec.
* Changed attribute headings and fixed references in DBI pod (Martin J.
Evans)
* Corrected typos in DBI::FAQ and DBI::ProxyServer (Ansgar Burchardt)
pkgsrc changes:
- adjust dependencies
Upstream changes:
# ----------------------------------------------------------
# 0.11006 2010-06-03
# ----------------------------------------------------------
* Fix Producer::Oracle varchar2 without size def (ORA-00906: missing right
parenthesis)
* Fix Producer::Oracle translate float and double to float instead of number
* Fix Producer::Oracle generation of too long unique constraint names
* Fix Producer::SQLite when generating VIEWs with add_drop_table => 1
* Fix Producer::MySQL not quoting index names when requested (RT#56173)
* Fix Producer::MySQL wrapping extra ()s around VIEW SELECT-ors (RT#56419)
* Fix Field::default_value to behave like a real accessor (allow undef as
an unsetting argument)
* Fix Mysql/Pg/SQLite/MSSQL producers to properly *not* quote numeric default
values (RT#57059)
* Producer::Oracle tests now use Test::Differences
* Prettify output of SQLite producer (less bogus newlines)
* Augment SQLite and Pg producers to accept a perl-formatted (%d.%03d%03d)
and regular no-leading-zero (X.X.X) *_version producer args
Upstream changes:
1.44 Fri 23 Jul 2010
- Upgrading to Module::Install::DSL 1.00 (ADAMK)
- Adding the per-table table_info method to get the columns (ADAMK)
- Adding tests for the per-table metadata methods (ADAMK)
1.43 Mon 10 May 2010
- Ensure 100% of tables and columns are quoted correctly (ADAMK)
pkgsrc changes:
- adjust dependencies
- clarify license
- remove upstream applied patch
Upstream changes:
2.65 2010-07-27
- take over maintainership from prior maintainers
Andy Wardley and Simon Matthews (Jens Rehsack)
Thanks to both guys for their great work so far
- improve connect to can reconnect after CLONE
- add support for keeping alive in threaded environment
- add ability to prepare/query with passing params to
$dbh->prepare
- add some neat functions to the iterator of th $sth
- add ability to fetch and store $dbh and $sth attributes
- reap DBI handles for new threads when used in threaded
environments and threads::variable::reap is available
- add test with two placeholders
pkgsrc changes:
- apply patches from RT#58813
- add license definition
Upstream changes:
1.05 Sat Apr10 01:00 2010
need to make DBD::SQLite to pre-req to get tests to succeed.
This shouldn't really be an undue burden
1.04 Mon Mar 31 22:25 2010
Add DBD::SQLite to build_requires meta so automated testing
won't fail
1.03 Mon Mar 29 13:00 2010
RT 3695 - SQLite support - Thanks RURBAN
RT 19833 - Don't Chomp blanks. The user can do that in their
script if they intended it.
NOTE!!! This may break your code if you were depending on
this behavior. Please open an RT ticket if you feel
this needs to be put back in.
Test suite to Test::More
databases/p5-YAML-MLDBM
This module is similar to MLDBM except that it stores data internally as
YAML, instead of Data::Dumper or Storable. By doing this, tied hash DBM
databases can be created that can be used seamlessly in Python or Ruby
applications. That's because those languages also have YAML and DBM
modules. As other languages get YAML support, YAML::MLDBM should be able
to be used with them as well.
This module is a wrapper around MLDBM, but you open a DBM file using the
new() method, instead of using a tie. new() will return a reference to
a tied hash.
You can also use YAML as a serialization method for MLDBM itself.
DBIx::Connector provides a simple interface for fast and safe DBI connection
and transaction management. Connecting to a database can be expensive; you
don't want your application to re-connect every time you need to run a query.
The efficient thing to do is to hang on to a database handle to maintain a
connection to the database in order to minimize that overhead.
DBIx::Connector lets you do that without having to worry about dropped or
corrupted connections.
* Added support for write-ahead logging.
* Query planner enhancement - automatic transient indices are created when
doing so reduces the estimated query time.
* Query planner enhancement - the ORDER BY becomes a no-op if the query also
contains a GROUP BY clause that forces the correct output order.
* Add the SQLITE_DBSTATUS_CACHE_USED verb for sqlite3_db_status().
* The logical database size is now stored in the database header so that bytes
can be appended to the end of the database file without corrupting it and so
that SQLite will work correctly on systems that lack support for ftruncate().
pkgsrc changes:
- add conflicts for p5-SQL-Statement<=1.27 and p5-DBI<=1.611
Upstream changes (since 1.28):
2010-07-06 0.30 H.Merijn Brand
* Text::CSV_XS now called with auto_diag
* Implement valid_attrs
* Next version will require DBI-1.612 or higher
This is a transition release
2010-07-04 0.29_03 H.Merijn Brand
* Remove leftover debug. Causes fails
2010-07-02 0.29_02 H.Merijn Brand
* More work to keep in sync with DBI development (Jens)
* Better diagnostics for missing modules
* More spell-check fixes
* Tests for ChopBlanks (now fixed in DBD::File)
* Tests changed to accept old and new DBI
* Statement handle attributes handled in new DBD::File
2010-06-11 0.29_01 H.Merijn Brand
* Prepare for DBD::File-0.39 (DBI-1.612+)
Should still work with older DBI versions
* Documentation updates (style, consistency, spell-checking)
* Test folder cleanup
* More tests for insert
* Tested RT#58039
2010-05-03 0.29 H.Merijn Brand
* Fix git URL in META.yml
* Add empty CLONE method to prevent warning when cloning threads
* Minimum perl 5.8.1
* Minimum Text::CSV_XS 0.71
* Support for f_encoding (requires DBI-1.611)
* Documentation updates
pkgsrc changes:
- require DBI-1.612 for testing
- add conflict for DBI<=1.612
Upstream changes:
Version 1.28, release July 15th, 2010
----------------------------------------------
[Improvements]
* Introduce new "capability" method for SQL::Statement and SQL::Eval::Table
+ Add capability for "insert_new_row" to allow DBD::DBM to fix PK
constrain on INSERT statements.
* Performance of IMPORT feature improved (thanks to Sven Probst, RT#57322)
[Bug fixes]
* expect every table object being derived from SQL::Eval::Table
* rewrite DELETE and UPDATE command based on table capabilities
* add abstract methods for all methods derived classes must override
(this means, open_table for SQL::Statement deriveds must be overridden
and all data access methods of tables - see SQL::Eval::Table for details)
* Tests are fixed to use TEMP TABLES explicitely when required
* check for invalid column names fixed
* Don't let depreciated parser structures stay alive in SQL::Statement when
reusing the Parser
[Documentation]
* Method documentation of SQL::Statement and SQL::Eval::Table are improved
* Add a Roadmap describing future plans for SQL::Statement (in addition to
DBD::File::Roadmap).
* POD spelling fixes provided by H.Merijn Brand and Pod::Spell::CommonMistakes
(thanks Tux)
* POD grammar fixes and reasonable sentences created by Martin Evans
[Things that may break your code]
* SQL::Statement 1.28 is expected not to work proper in combination with
DBI 1.611 and below
* SQL::Statement::ColumnValue expects now every table being derived from
SQL::Eval::Table
pkgsrc changes:
- bumping required API version to 1.612 (Meta-DBD API has changed)
Upstream changes:
Changes in DBI 1.612 (svn r14254) 14th July 2010
NOTE: This is a minor release for the DBI core but a major release for
DBD::File and drivers that depend on it, like DBD::DBM and DBD::CSV.
This is also the first release where the bulk of the development work has
been done by other people. I'd like to thank (in no particular order)
Jens Rehsack, Martin J. Evans, and H.Merijn Brand for all their contributions.
Fixed DBD::File's {ChopBlank} handling (it stripped \s instead of space
only as documented in DBI) (H.Merijn Brand)
Fixed DBD::DBM breakage with SQL::Statement (Jens Rehsack, fixes RT#56561)
Fixed DBD::File file handle leak (Jens Rehsack)
Fixed problems in 50dbm.t when running tests with multiple
dbms (Martin J. Evans)
Fixed DBD::DBM bugs found during tests (Jens Rehsack)
Fixed DBD::File doesn't find files without extensions under some
circumstances (Jens Rehsack, H.Merijn Brand, fixes RT#59038)
Changed Makefile.PL to modernize with CONFLICTS, recommended dependencies
and resources (Jens Rehsack)
Changed DBI::ProfileDumper to rename any existing profile file by
appending .prev, instead of overwriting it.
Changed DBI::ProfileDumper::Apache to work in more configurations
including vhosts using PerlOptions +Parent.
Add driver_prefix method to DBI (Jens Rehsack)
Added more tests to 50dbm_simple.t to prove optimizations in
DBI::SQL::Nano and SQL::Statement (Jens Rehsack)
Updated tests to cover optional installed SQL::Statement (Jens Rehsack)
Synchronize API between SQL::Statement and DBI::SQL::Nano (Jens Rehsack)
Merged some optimizations from SQL::Statement into DBI::SQL::Nano
(Jens Rehsack)
Added basic test for DBD::File (H.Merijn Brand, Jens Rehsack)
Extract dealing with Perl SQL engines from DBD::File into
DBI::DBD::SqlEngine for better subclassing of 3rd party non-db DBDs
(Jens Rehsack)
Updated and clarified documentation for finish method (Tim Bunce).
Changes to DBD::File for better English and hopefully better
explanation (Martin J. Evans)
Update documentation of DBD::DBM to cover current implementation,
tried to explain some things better and changes most examples to
preferred style of Merijn and myself (Jens Rehsack)
Added developer documentation (including a roadmap of future plans)
for DBD::File
* Replication Manager sites can specify one or more possible client-to-client
peers.
* Added resource management feature in all Berkeley DB APIs to automatically
manage cursor and database handles by closing them when they are not required,
if they are not yet closed.
* Added a SQL interface to the Berkeley DB library.
* Added hash databases support to the DB->compact interface.
* Renamed the "db_sql" utility to "db_sql_codegen".
* Added transactional support in db_sql_codegen utility.
* Added the feature read-your-writes consistency that allows client application
to check, or wait for a specific transaction to be replicated from the master
before reading database.
* Added DB log verification feature, accessible via the API and a new utility.
* Added support for applications to assign master/client role explicitly at any
time. Replication Manager can now be configured not to initiate elections.
* Enhanced the DB->compact method so that it can reassign metadata and root
pages from subdatabases to lower numbered pages while compacting a database
file that contains multiple databases.
* Added system diagnostic messages that are ON by default.
* Added the feature to assign a priority level to transactions.
* Added a feature by which the Replication Manager application clients now
automatically request any missing information, even when there is no master
transaction activity.
* Added support for sharing logs across mixed-endian systems.
* Added an option to specify the first and last pages to the db_dump utility.
You can do this by providing -F and -L flags to the db_dump -d option.
* Added Intel Performance Primitive (IPP) AES encryption support.
Upstream changes:
revision 1.67 2010-05-31 14:21 (UTC)
----------------------------
- Fix SQL::Test failure when first chunk is an unrecognized
literal
- Generic -not operator tests
- More columns-bindtype assertion checks
revision 1.66 2010-04-27 02:44 (UTC)
----------------------------
- Optimized the quoting mechanism, winning nearly 10%
speedup on repeatable sql generation
revision 1.65 2010-04-11 19:59 (UTC)
----------------------------
- Rerelease last version to not include .svn files
and grab MANIFEST.SKIP from DBIx::Class so it
won't happen again
revision 1.64 2010-04-11 16:58 (UTC)
----------------------------
- Fix multiple generic op handling regressions by
reverting the auto-equality assumption (turned out
to be a very very bad idea)
revision 1.63 2010-03-24 09:56 (UTC)
----------------------------
- Add ILIKE to the core list of comparision ops
=== 1.3.1 / 2010-07-09
* Enhancements
* Custom collations may be defined using SQLite3::Database#collation
* Bugfixes
* Statements returning 0 columns are automatically stepped. [RF #28308]
* SQLite3::Database#encoding works on 1.8 and 1.9
Bugfixes:
* compile: multiple fixes isnan and isinf defines to make rrdtool compile
with gcc on solaris (with --disable-nls)
* handle gettext/libintl like any other feature, do not try to supply
our own ... rrdtool can work fine without it
* rrd_client: fix potential segfaults
* rrd_client: resolve synmlinks properly
* compile: fix libtool and libtoolize names for OSX compiles
* compile: fix for HAVE_BROKEN_MS_ASYNC (old linux kernels)
* rrd_xport: fix --daemon handling
* rrd_client: explicitly close connection on error
* rrd_update: fix memory leak for COMPUTE datasources
* rrd_daemon: fix segfault when specifying a relative path (-j option)
* compile: make rrdtool compile with gcc 4.5
* portability: use %lld (long long int) for time_t *printf
* compile: link pangocairo and not pango since we do use pangocairo actually
* compile: re-integrate intl into compile dependency so that hosts with
old (or no) gettext can get access to the included copy.
* rrd_cached: exit with status !=0 on invalid cli
Enhancements:
* updated build files and instructions for win32 port by Chris Larsen
* legal: Relicense the RRDCacheD client interface under the MIT license
* legal: Updted FLOSS Exception for latest PHP license
* rrd_cached: better help output
Bug fixes release.
2010-04-27 Mikio Hirabayashi <hirarin@gmail.com>
* tcbdb.c (tcbdboutlist): a bug related to reorganizing tree was fixed.
- Release: 1.4.45
2010-04-23 Mikio Hirabayashi <hirarin@gmail.com>
* tcbdb.c (tcbdbrangefwm): a bug related to empty list was fixed.
* tcadb.c (tcadbmulopen): a bug related to handling table indices was fixed.
- Release: 1.4.44
Upstream changes:
1.0025 Jun 6 12:46:00 2010 PDT
(This version is compatible with 1.0024)
- Fixed t/39_singletons.t to work on Windows.
1.0024 May 30 14:25:00 2010 PDT
(This version is compatible with 1.0023)
- Stale references (objects blessed into DBM::Deep::Null), which
have always supposed to act like undef, now compare equal to
undef, "" and 0. $stale_ref eq "" used to return false, even
though "$stale_ref" was the empty string.
- If you assign a stale reference to a database location,
DBM::Deep now warns and assigns undef, instead of dying with
obscure error messages.
- Using a stale reference as a hash or array ref now causes an
error with a more helpful message.
Changes since 0.6.1:
* fix contrib/word_count build. (CASSANDRA-992)
* split CommitLogExecutorService into BatchCommitLogExecutorService and
PeriodicCommitLogExecutorService (CASSANDRA-1014)
* add latency histograms to CFSMBean (CASSANDRA-1024)
* make resolving timestamp ties deterministic by using value bytes
as a tiebreaker (CASSANDRA-1039)
* Add option to turn off Hinted Handoff (CASSANDRA-894)
* fix windows startup (CASSANDRA-948)
* make concurrent_reads, concurrent_writes configurable at runtime via JMX
(CASSANDRA-1060)
* disable GCInspector on non-Sun JVMs (CASSANDRA-1061)
* fix tombstone handling in sstable rows with no other data (CASSANDRA-1063)
* fix size of row in spanned index entries (CASSANDRA-1056)
* install json2sstable, sstable2json, and sstablekeys to Debian package
* StreamingService.StreamDestinations wouldn't empty itself after streaming
finished (CASSANDRA-1076)
* added Collections.shuffle(splits) before returning the splits in
ColumnFamilyInputFormat (CASSANDRA-1096)
* do not recalculate cache capacity post-compaction if it's been manually
modified (CASSANDRA-1079)
* better defaults for flush sorter + writer executor queue sizes
(CASSANDRA-1100)
* windows scripts for SSTableImport/Export (CASSANDRA-1051)
* windows script for nodetool (CASSANDRA-1113)
* expose PhiConvictThreshold (CASSANDRA-1053)
* make repair of RF==1 a no-op (CASSANDRA-1090)
* improve default JVM GC options (CASSANDRA-1014)
* fix SlicePredicate serialization inside Hadoop jobs (CASSANDRA-1049)
Changes:
* Add index length support for MySQL. #1852 [Emili Parreno, Pratik Naik]
* find_or_create_by_attr(value, ...) works when attr is protected.
#4457 [Santiago Pastorino, Marc-Andr\xc3\xa9 Lafortune]
* JSON supports a custom root option: to_json(:root => 'custom') #4515
[Jatinder Singh]
* Destroy uses optimistic locking. If lock_version on the record
you're destroying doesn't match lock_version in the database, a
StaleObjectError is raised. #1966 [Curtis Hawthorne]
* To prefix the table names of all models in a module, define
self.table_name_pr efix on the module. #4032 [Andrew White]
* Association inverses for belongs_to, has_one, and
has_many. Optimization to re duce database queries. #3533 [Murray
Steele]
* MySQL: add_ and change_column support positioning. #3286 [Ben Marini]
* Reset your Active Record counter caches with the reset_counter_cache
class method. #1211 [Mike Breen, Gabe da Silveira]
Changes:
### 1.3.0 / 2010-06-06
* Enhancements
* Complete rewrite of C-based adapter from SWIG to hand-crafted one
[tenderlove]
See API_CHANGES document for details.
This closes: Bug #27300, Bug #27241, Patch #16020
* Improved UTF, Unicode, M17N, all that handling and proper BLOB
handling [tenderlove, nurse]
* Added support for type translations [tenderlove]
@db.translator.add_translator('sometime') do |type, thing|
'output' # this will be returned as value for that column
end
* Experimental
* Added API to access and load extensions. [kashif]
These functions maps directly into SQLite3 own enable_load_extension()
and load_extension() C-API functions. See SQLite3::Database API
documentation for details.
This closes: Patches #9178
* Bugfixes
* Corrected gem dependencies (runtime and development)
* Fixed threaded tests [Alexey Borzenkov]
* Removed GitHub gemspec
* Fixed "No definition for" warnings from RDoc
* Generate zip and tgz files for releases
* Added Luis Lavena as gem Author (maintainer)
* Prevent mkmf interfere with Mighty Snow Leopard
* Allow extension compilation search for common lib paths [kashif]
(lookup /usr/local, /opt/local and /usr)
* Corrected extension compilation under MSVC [romuloceccon]
* Define load_extension functionality based on availability [tenderlove]
* Deprecation notices for Database#query. Fixes RF #28192
For full changes, refer http://dev.mysql.com/doc/refman/5.0/en/news-5-0-91.html.
Here is security related changes.
* Security Fix: The server failed to check the table name argument of
a COM_FIELD_LIST command packet for validity and compliance to
acceptable table name standards. This could be exploited to bypass
almost all forms of checks for privileges and table-level grants by
providing a specially crafted table name argument to COM_FIELD_LIST.
In MySQL 5.0 and above, this allowed an authenticated user with
SELECT privileges on one table to obtain the field definitions of
any table in all other databases and potentially of other MySQL
instances accessible from the server's file system.
Additionally, for MySQL version 5.1 and above, an authenticated user
with DELETE or SELECT privileges on one table could delete or read
content from any other table in all databases on this server, and
potentially of other MySQL instances accessible from the server's
file system. (Bug#53371, CVE-2010-1848)
* Security Fix: The server was susceptible to a buffer-overflow attack
due to a failure to perform bounds checking on the table name
argument of a COM_FIELD_LIST command packet. By sending long data
for the table name, a buffer is overflown, which could be exploited
by an authenticated user to inject malicious code. (Bug#53237,
CVE-2010-1850)
* Security Fix: The server could be tricked into reading packets
indefinitely if it received a packet larger than the maximum size of
one packet. (Bug#50974, CVE-2010-1849)
* Support for Berkeley DB 5.0.
* Drop support for Python 3.0.
* Now you can use TMPDIR env variable to override default
test directory ("/tmp").
* Versioning of C API. If you use the code from C, please
check the bsddb_api->api_version number against
PYBSDDB_API_VERSION macro.
* In C code, the bsddb_api->dbsequence_type component is always available,
even if the Berkeley DB version used doesn't support sequences. In that
case, the component will be NULL.
* In C code, "DBSequenceObject_Check()" macro always exists, even if the
Berkeley DB version used doesn't suport sequences. In that case, the test
macro always returns "false".
* For a long time, the API has been accesible via C using "_bsddb.api" or
"_pybsddb.api". If you are using Python >=2.7, you acquire access to that
API via the new Capsule protocol (see "bsddb.h"). If you use the C API and
upgrade to Python 2.7 and up, you must update the access code (see
"bsddb.h"). The Capsule protocol is not supported in Python 3.0, but
pybsddb 5.0.x doesn't support Python 3.0 anymore.
* Capsule support was buggy. The string passed in to PyCapsule_New() must
outlive the capsule.
* Solve an "Overflow" warning in the testsuite running under python 2.3.
* When doing a complete full-matrix test, any warning will be considered
an error.
data. The software is distributed in source code form, and developers can
compile and link the source code into a single library for inclusion
directly in their applications.
Developers may choose to store data in any of several different storage
structures to satisfy the requirements of a particular application. In
database terminology, these storage structures and the code that operates on
them are called access methods. The library includes support for the
following access methods:
* B+tree: Stores keys in sorted order, using either a programmer-supplied
ordering function or a default function that does lexicographical
ordering of keys. Applications may perform equality or range searches.
* Hashing: Stores records in a hash table for fast searches based on
strict equality. Extended Linear Hashing modifies the hash function
used by the table as new records are inserted, in order to keep buckets
underfull in the steady state.
* Fixed and Variable-Length Records: Stores fixed- or variable-length
records in sequential order. Record numbers may be immutable or
mutable, i.e., permitting new records to be inserted between existing
records or requiring that new records be added only at the end of the
database.
* The log file format changed in 11gR2.
* Replication Manager sites can specify one or more possible client-to-client
peers.
* Added resource management feature in all Berkeley DB APIs to automatically
manage cursor and database handles by closing them when they are not
required, if they are not yet closed.
* Added a SQL interface to the Berkeley DB library. The interface is based on -
and a drop-in-replacement for - the SQLite API. It can be accessed via a
command line utility, a C API, or existing APIs built for SQLite.
* Added hash databases support to the DB->compact interface.
* Renamed the "db_sql" utility to "db_sql_codegen". This utility is not built
by default. To build this utility, enter --enable-sql_codegen as an argument
to configure.
* Added transactional support in db_sql_codegen utility. Specify TRANSACTIONAL
or NONTRANSACTIONAL in hint comments in SQL statement, db_sql_codegen
enable/disable transaction in generated code accordingly.
* Added the feature read-your-writes consistency that allows client application
to check, or wait for a specific transaction to be replicated from the master
before reading database.
* Added DB log verification feature, accessible via the API and a new utility.
This feature can help debugging and analysis.
* Added support for applications to assign master/client role explicitly at any
time. Replication Manager can now be configured not to initiate elections.
* more...
0.9.11
-----
Allow passing SASL interaction options
This adds a hash parameter "options" to LDAP::Conn.sasl_bind, which
can take :authzid, :authcid, and :realm (and corresponding strings),
for SASL authentication.
Also, refactored the rb_scan_args inside rb_ldap_conn_sasl_bind to use
C's case fallthrough, leading to less code repetition.
Sun Apr 25 2010 version 0.99991 released
* detect HAVE_LONG_LONG for builds with unixODBC
* UTF-8 coding/decoding fix for range 0x80..0xBF
Thu Feb 18 2010 version 0.9999 released
* integrated Bosko Ivanisevic's fixes in ext/utf8/extconf.rb
and test/test.rb and test/utf8/test.rb
For full changes, see http://dev.mysql.com/doc/refman/5.1/en/news-5-1-47.html.
Here is important changes:
InnoDB Plugin Notes:
* InnoDB Plugin has been upgraded to version 1.0.8. This version
is considered of General Availability (GA) quality. InnoDB
Plugin Change History, may contain information in addition to
those changes reported here.
In this release, the InnoDB Plugin is included in source and
binary distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64,
ia64), and generic Linux RPM packages. It also does not work for
FreeBSD 6 and HP-UX or for Linux on generic ia64.
Functionality added or changed:
* InnoDB stores redo log records in a hash table during
recovery. On 64-bit systems, this hash table was 1/8 of the
buffer pool size. To reduce memory usage, the dimension of the
hash table was reduced to 1/64 of the buffer pool size (or 1/128
on 32-bit systems). (Bug#53122)
Security fixed:
* Security Fix: The server failed to check the table name argument
of a COM_FIELD_LIST command packet for validity and compliance
to acceptable table name standards. This could be exploited to
bypass almost all forms of checks for privileges and table-level
grants by providing a specially crafted table name argument to
COM_FIELD_LIST.
In MySQL 5.0 and above, this allowed an authenticated user with
SELECT privileges on one table to obtain the field definitions
of any table in all other databases and potentially of other
MySQL instances accessible from the server's file system.
Additionally, for MySQL version 5.1 and above, an authenticated
user with DELETE or SELECT privileges on one table could delete or
read content from any other table in all databases on this server,
and potentially of other MySQL instances accessible from the
server's file system. (Bug#53371, CVE-2010-1848)
* Security Fix: The server was susceptible to a buffer-overflow
attack due to a failure to perform bounds checking on the table
name argument of a COM_FIELD_LIST command packet. By sending
long data for the table name, a buffer is overflown, which could
be exploited by an authenticated user to inject malicious
code. (Bug#53237, CVE-2010-1850)
* Security Fix: The server could be tricked into reading packets
indefinitely if it received a packet larger than the maximum
size of one packet. (Bug#50974, CVE-2010-1849)
Upstream changes:
1.0023 May 9 14:33:00 2010 PDT
(This version is compatible with 1.0022)
- The DBI back end no longer dies with ?<80><98>Use of uninitialized value
$_ in lc?<80><99> in perl 5.12.0. Thanks to Ansgar Burchardt for finding
and fixing this problem.
1.0022 Apr 25 18:40:00 2010 PDT
(This version is compatible with 1.0021)
- Singleton support has been re-enabled in the File back end.
- t/43_transaction_maximum.t was still failing on some systems
(see http://www.cpantesters.org/cpan/report/7151810), so now we
try to detect the maximum number of files we can open.
1.0021 Apr 18 18:28:00 2010 PDT
(This version is compatible with 1.0020)
- Correct spelling mistakes in the documentation (thanks to Gregor
Herrmann for the corrections and to Ansgar Burchardt for passing
them on) (RT#56520)
- MANIFEST now lists the test libs so they get included in the
distribution (RT#56512)
- It no longer crashes in perl 5.6.2.
1.0020 Feb 16 22:00:00 2010 EST
(This version is compatible with 1.0016)
- Fixed t/43_transaction_maximum.t so that it doesn't error out on systems
which cannot fork > 255 children at one time.
- Improved code coverage
- Added t/96_virtual_functions.t which helps describe what actually
needs to be overridden in a new plugin.
1.0019_003 Feb 16 22:00:00 2010 EST
(This is the third developer release for 1.0020.)
(This version is compatible with 1.0016)
- Fixed problem where "./Build test" wouldn't actually -do- anything.
- (No-one apparently tried to install this till Steven Lembark. Thanks!)
- Fixed speed regression with keys in the File backend.
- Introduced in 1.0019_002 to fix#50541
- Thanks, SPROUT!
- (RT #53575) Recursion failure in STORE (Thanks, SPROUT)
- Merged the rest of the fixes from 1.0015 and 1.0016
- Thanks to our new co-maintainer, SPROUT! :)
- Had to turn off singleton support in the File backend because the caching
was causing havoc with transactions. Turning on fatal warnings does give
apparently important information.
- Oh - forgot to mention that fatal warnings are now on in all files.
1.0019_002 Jan 05 22:30:00 2010 EST
(This is the second developer release for 1.0020.)
(This version is compatible with 1.0014)
- Fixed bug where attempting to store a value tied to something other than
DBM::Deep would leave the file flocked.
- Added support for DBD::SQLite
- Build.PL has been extended to support sqlite vs. mysql
- Storage::DBI now detects between the two DBDs
- (RT #51888) Applied POD patch (Thanks, FWIE!)
- (RT #44981) Added VERSION to ::Array, ::Engine, and ::Hash
- Removed extraneous slashes from POD links (Thanks ilmari!)
- (RT #50541) Fixed bug in clear() for hashes in the File backend.
- This has caused a regression in speed for clear() when clearing
large hashes using running with the File backend. ->clear() (on my
machine) now takes ( N / 40 ) ** (1.66) seconds. So, clearing 4000
keys (as is the test in t/03_bighash.t) would take ~2070 seconds.
- (RT #40782) Fixed bug when handling a key of '0' (Thanks Sterling!)
- (RT #48031) Fixed bug with localized $, (Thanks, SPROUT!)
1.0019_001 Dec 31 22:00:00 2009 EST
(This is the first developer release for 1.0020.)
(This version is compatible with 1.0014)
- DBM::Deep has been refactored to allow for multiple engines. There are two
engines built so far:
- File (the original engine)
- DBI (an engine based on DBI)
- The DBI engine has only been tested on MySQL and isn't transactional.
- InnoDB sucks horribly. When run in a sufficient isolation mode, it
creates deadlocks.
- A custom Build.PL has been written to allow for running tests under
CPAN.pm against the various engines.
- This also allows running the long tests under CPAN.pm
- This has meant a ton of refactoring. Hopefullly, this refactoring will
allow finding some of the niggly bugs more easily. Those tests have not
been enabled yet. That's the next developer release.
- Hopefully, this multi-engine support will allow deprecation of the file
format in the future.
* Only use lo_import_with_oid if Postgres libraries are 8.4 or better
Changes 2.17.0:
* Do not automatically ROLLBACK on a failed pg_cancel
* Added support for new lo_import_with_oid function.
* Don't limit stored user name to \w in tests
* Allow tests to support versions back to Postgres 7.4
* Fix the "quiet log" query in the status server.
* Call Stored Procedures in EnterpriseDB in an anonymous
block to prevent errors with out/inout parameters.
* Fix an error when working with packages on EnterpriseDB in 'postgres' mode.
* Prevent a crash if the user cancels a restore operation.
* Fix the refresh of a dropped function.
* Fix a crash bug seen when closing the debugger parameter dialog on OSX.
* Fix to only show Storage value if the value is different from the type's
default value.
* Fix uncalled attempt to "change" array data types in dlgColumn.
* Fix a crash that could occur if viewing a table with no rows in the Edit Grid.
* Fix a crash occuring when a function with a parameter with a default is
selected.
* Don't offer debugging options to non-superusers on Postgres Plus Advanced
Server < 8.4 which doesn't have support for user debugging.
* Fix the saving and reverse engineering of parameters for database, table,
and function.
* Specify the schema of the table/function to restore if pg_restore's release
is 8.2 or later.
* Fix the reverse engineering of a rule.
* Fix the status server window on Mac OS X.
* Fix the recent files, by notifying each frmQuery to update their recent files.
Same support for macros and favourites.
* Fix the canvas resizing with really big table.
* Add the missing RULEs for VIEWs in SQL pane.
* More...
* Enforce restrictions in plperl using an opmask applied to the whole
interpreter, instead of using "Safe.pm"
* Prevent PL/Tcl from executing untrustworthy code from pltcl_modules
* Fix data corruption during WAL replay of ALTER ... SET TABLESPACE
* Fix possible crash if a cache reset message is received during
rebuild of a relcache entry
* Apply per-function GUC settings while running the language
validator for the function
* Do constraint exclusion for inherited "UPDATE" and "DELETE" target
tables when constraint_exclusion = partition
* Do not allow an unprivileged user to reset superuser-only parameter
settings
* Avoid possible crash during backend shutdown if shutdown occurs
when a CONTEXT addition would be made to log entries
* Fix erroneous handling of %r parameter in recovery_end_command
* Ensure the archiver process responds to changes in archive_command
as soon as possible
* Fix pl/pgsql's CASE statement to not fail when the case expression
is a query that returns no rows
* Update pl/perl's "ppport.h" for modern Perl versions
* Fix assorted memory leaks in pl/python
* Handle empty-string connect parameters properly in ecpg
* Prevent infinite recursion in psql when expanding a variable that
refers to itself
* Fix psql's \copy to not add spaces around a dot within \copy
(select ...)
* Avoid formatting failure in psql when running in a locale context
that doesn't match the client_encoding
* Fix unnecessary "GIN indexes do not support whole-index scans"
errors for unsatisfiable queries using "contrib/intarray" operators
* Ensure that "contrib/pgstattuple" functions respond to cancel
interrupts promptly
* Make server startup deal properly with the case that shmget()
returns EINVAL for an existing shared memory segment
* Avoid possible crashes in syslogger process on Windows
* Deal more robustly with incomplete time zone information in the
Windows registry
* Update the set of known Windows time zone names
* Update time zone data files to tzdata release 2010j for DST law
changes in Argentina, Australian Antarctic, Bangladesh, Mexico,
Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; also
historical corrections for Taiwan.
Also, add PKST (Pakistan Summer Time) to the default set of
timezone abbreviations.
* Enforce restrictions in plperl using an opmask applied to the whole
interpreter, instead of using "Safe.pm"
* Prevent PL/Tcl from executing untrustworthy code from pltcl_modules
* Fix possible crash if a cache reset message is received during
rebuild of a relcache entry
* Apply per-function GUC settings while running the language
validator for the function
* Do not allow an unprivileged user to reset superuser-only parameter
settings
* Avoid possible crash during backend shutdown if shutdown occurs
when a CONTEXT addition would be made to log entries
* Ensure the archiver process responds to changes in archive_command
as soon as possible
* Update pl/perl's "ppport.h" for modern Perl versions
* Fix assorted memory leaks in pl/python
* Prevent infinite recursion in psql when expanding a variable that
refers to itself
* Fix psql's \copy to not add spaces around a dot within \copy
(select ...)
* Fix unnecessary "GIN indexes do not support whole-index scans"
errors for unsatisfiable queries using "contrib/intarray" operators
* Ensure that "contrib/pgstattuple" functions respond to cancel
interrupts promptly
* Make server startup deal properly with the case that shmget()
returns EINVAL for an existing shared memory segment
* Avoid possible crashes in syslogger process on Windows
* Deal more robustly with incomplete time zone information in the
Windows registry
* Update the set of known Windows time zone names
* Update time zone data files to tzdata release 2010j for DST law
changes in Argentina, Australian Antarctic, Bangladesh, Mexico,
Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; also
historical corrections for Taiwan.
Also, add PKST (Pakistan Summer Time) to the default set of
timezone abbreviations.
* Enforce restrictions in plperl using an opmask applied to the whole
interpreter, instead of using "Safe.pm"
* Prevent PL/Tcl from executing untrustworthy code from pltcl_modules
* Fix possible crash if a cache reset message is received during
rebuild of a relcache entry
* Do not allow an unprivileged user to reset superuser-only parameter
settings
* Avoid possible crash during backend shutdown if shutdown occurs
when a CONTEXT addition would be made to log entries
* Update pl/perl's "ppport.h" for modern Perl versions
* Fix assorted memory leaks in pl/python
* Prevent infinite recursion in psql when expanding a variable that
refers to itself
* Fix psql's \copy to not add spaces around a dot within \copy
(select ...)
* Ensure that "contrib/pgstattuple" functions respond to cancel
interrupts promptly
* Make server startup deal properly with the case that shmget()
returns EINVAL for an existing shared memory segment
* Avoid possible crashes in syslogger process on Windows
* Deal more robustly with incomplete time zone information in the
Windows registry
* Update the set of known Windows time zone names
* Update time zone data files to tzdata release 2010j for DST law
changes in Argentina, Australian Antarctic, Bangladesh, Mexico,
Morocco, Pakistan, Palestine, Russia, Syria, Tunisia; also
historical corrections for Taiwan.
Also, add PKST (Pakistan Summer Time) to the default set of
timezone abbreviations.
This module does not currently offer fetch method that is
available in the RRDs module. It does however create RRD files
with a sensible set of default RRA (Round Robin Archive)
definitions, and can dynamically add new data source names to an
existing RRD file.
This module is ideal for quick and simple storage of data within
an RRD file if you do not need to, nor want to, bother defining
custom RRA definitions.
Upstream changes:
Version 1.27, release May 06th, 2010
----------------------------------------------
[Bug fixes]
* use originally given table name for open_table() on SELECT, too
(all other command still use the originally given name)
* warn/die -> carp/croak
* fix delete_one_row & update_one_row ability using
[Documentation]
* Apply spelling fix patch from Ansgar Burchardt (RT#56475)
pkgsrc changes:
- Update comment
- Add license definition
- Switch to Module::Build
Upstream changes since 2.01
2.04 (08 Mar 2010, by Alexandr Ciornii)
Compatibility with old EU::MM.
2.03 (27 Feb 2010, by Alexandr Ciornii)
Error in test fixed.
2.02 (19 Feb 2010, by Alexandr Ciornii)
New tests added.
Distribution upgraded
Upstream changes:
NOTE: minimum perl version is now 5.8.1 (as announced in DBI 1.607)
Fixed selectcol_arrayref MaxRows attribute to count rows not values
thanks to Vernon Lyon.
Fixed DBI->trace(0, *STDERR); (H.Merijn Brand)
which tried to open a file named "*main::STDERR" in perl-5.10.x
Fixes in DBD::DBM for use under threads (Jens Rehsack)
Changed "Issuing rollback() due to DESTROY without explicit disconnect"
warning to not be issued if ReadOnly set for that dbh.
Added f_lock and f_encoding support to DBD::File (H.Merijn Brand)
Added ChildCallbacks => { ... } to Callbacks as a way to
specify Callbacks for child handles.
With tests added by David E. Wheeler.
Added DBI::sql_type_cast($value, $type, $flags) to cast a string value
to an SQL type. e.g. SQL_INTEGER effectively does $value += 0;
Has other options plus an internal interface for drivers.
Documentation changes:
Small fixes in the documentation of DBD::DBM (H.Merijn Brand)
Documented specification of type casting behaviour for bind_col()
based on DBI::sql_type_cast() and two new bind_col attributes
StrictlyTyped and DiscardString. Thanks to Martin Evans.
Document fetchrow_hashref() behaviour for functions,
aliases and duplicate names (H.Merijn Brand)
Updated DBI::Profile and DBD::File docs to fix pod nits
thanks to Frank Wiegand.
Corrected typos in Gopher documentation reported by Jan Krynicky.
Documented the Callbacks attribute thanks to David E. Wheeler.
Corrected the Timeout examples as per rt 50621 (Martin J. Evans).
Removed some internal broken links in the pod (Martin J. Evans)
Added Note to column_info for drivers which do not
support it (Martin J. Evans)
Updated dbipport.h to Devel::PPPort 3.19 (H.Merijn Brand)
with a modern version of MySQL. Also, fix some DESTDIR issues.
5.1.6
Functionality added or changed:
* Providing an empty string as the catalog argument to SQLTables()
will return an empty result set. A catalog must have a name.
* Remove use of "old" SQLLEN/SQLULEN types aliases. They are not
supported in unixODBC 2.2.13 and later 64-bit builds. Removed
SQLROWCOUNT, SQLROWSETSIZE, SQLTRANSID, SQLROWOFFSET.
* Connection parameters can be specified individually instead of
using OPTIONS bitflags. (See connection parameters documentation)
* Edit controls for INITSTMT and CHARSET DSN options are added to the native
Windows GUI. (Bug #40932)
* Length/Indicator pointer is now stored and used internally as pointer to
SQLLEN and not to SQLINTEGER. Using SQLINTEGER pointers as
StrLen_or_IndPtr parameter of SQLBindParameter/SQLBindCol may cause crash
on 64bit platforms.
* Query log is not overwritten, but appended instead. (Bug #44965)
* Fixed tab order in Windows datasource config dialog. (Bug #42905)
Bugs fixed:
* Add support for data-at-execution with positioned insert/update
(Bug #37649)
* Output string length from SQLDriverConnect() includes NULL-term
(Bug #38949)
* SQLGetInfo() returns 0 for SQL_CATALOG_USAGE info (Bug #39560)
* SQLDriverConnect() may truncate output string erroneously
(Bug #37278)
* SQLTables() doesn't properly handle empty strings to list catalogs
and tables. (Bug #39561)
* Calling SQLDriverConnect() with no output buffer will crash if not
prompting. (Bug #40316)
* SQLTables() doesn't return the catalog name if the table is given
and the catalog argument is NULL. (Bug #39957)
* Driver crashes when attempting to retrieve data in a character set
not compiled into libmysql. (Bug #39831)
* SQLGetTypeInfo() doesn't return any rows SQL_TIMESTAMP on an ODBC v2
connection. (Bug #30626)
* Positioned update with SQL_C_NUMERIC loses prec/scale values
(Bug #39961)
* ADO adUseServer cursor is lost after updating adLongVarWChar field
(Bug #26950)
* Calling SQLDescribeCol() with a NULL buffer and non-zero buffer
length causes a crash. (Bug #41942)
* NULL parameters don't work correctly with ADO. (Bug #41256)
* Unable to retrieve null DECIMAL fields in ADO. (Bug #41081)
* Fix positioned update using data-at-execution, bind offsets and
row-wise binding. (Bug #36071)
* SQLConfigDataSource may fail with: Cannot find driver (Bug #41796)
* FLAG_NO_BIGINT still returns bigint for SQLDescribeCol()
(Bug #17679)
* Random access violation exceptions (0xC0000005) in ASP scripts in the
SQLSetConnectAttrW. (Bug #44971)
* Binding SQL_C_BIT to an integer column didn't work. (Bug #39644)
* Inserting a new record using SQLSetPos if the table is from different than
current catalog. (Bug #41946)
Includes changes from Connector/ODBC 3.51.27.
Built using MySQL 5.1.34sp1.
----
5.1.5 (18-Aug-2008)
Functionality added or changed:
* Added FLAG_NO_BINARY_RESULT connection option to always handle
binary function results as character data. (Bug #29402)
Bugs fixed:
* Some catalog functions used fixed-sized buffers for handling
arguments that could be overrun, and misinterpreted some arguments
as patterns when they should be treated as identifiers. (Bug #36275)
* SQLDriverConnect() returned SQL_ERROR when the user cancelled
the dialog box instead of SQL_NO_DATA. (Bug #36293)
* System DSN lookup (using ODBC_BOTH_DSN) fails on Windows XP.
(Bug #36203)
* SQLProcedures() followed by SQLFreeStmt() crashes (Bug #36069)
* ADO adUseServer cursor is lost after updating adLongVarWChar field
(Bug #26950)
* SQL_TYPE_TIMESTAMP and SQL_TYPE_TIME parameters were incorrectly
included when parameters were expanded. (Bug #37342)
* DSN-less connection prompting cannot lookup driver entry
(Bug #37254)
Includes changes from Connector/ODBC 3.51.26.
Built using MySQL 5.0.60sp1.
----
5.1.4 (15-Apr-2008)
Bugs fixed:
* SQLGetDiagRec() sometimes returned SQL_SUCCESS but no error
message. (Bug #33910)
* Driver installer (myodbc-installer.exe) fails to create a new DSN
(Bug #35776)
* Get wrong result with decimal(8,2) field type (Bug #35920)
Includes changes from Connector/ODBC 3.51.25.
Built using MySQL 5.0.56sp1.
----
5.1.3 (26-Mar-2008)
Functionality added or changed:
* Added SSLVERIFY connection option to verify server certificate. By default
certificate is not verified now. (Bug #34648)
* Database list height is autoadjusted in Windows GUI. (Bug #33918)
Bugs fixed:
* Recordset-based update fails if blob field is queried. (Bug #19065)
* Descriptor records were not cleared correctly when calling
SQLFreeStmt(SQL_UNBIND). (Bug #34271)
* The driver incorrectly reported that the SQL standard CAST() and
CONVERT() functions were supported. (Bug #33808)
* Unresolved symbols "min" and "max" in libmyodbc3.so w/gcc 4.2.
(Bug #34256)
* Notorious #DELETED problem when linking tables in Access and BIGINT PK
(Bug #24535)
* MyODBC 51/Access unable to use DBEngine.RegisterDatabase to create a DSN
(Bug #33825)
* Unable to use surrogate pairs into with unicode column. (Bug #34672)
* SQLGetData w/SQL_C_WCHAR gives incorrect data. (Bug #34429)
Includes changes from Connector/ODBC 3.51.24.
Built using MySQL 5.0.52.
----
5.1.2 (12-Feb-2008)
Functionality added or changed:
* SQLForeignKeys uses INFORMATION_SCHEMA when it is available on the server,
which allows more complete information to be returned.
* Disabled MYSQL_OPT_SSL_VERIFY_SERVER_CERT when using an SSL connection.
* Explicit descriptors are implemented. (Bug #32064)
* Changed SQL_ATTR_PARAMSET_SIZE to return an error until support for it
is implemented.
Bugs fixed:
* Tried to use the already-entered database when connecting to get list of
databases in Windows setup library. (Bug #33615)
* SQLForeignKeys returned an empty string for the schema columns instead of
a NULL. (Bug #19923)
* SQLGetInfo() reported characters for SQL_SPECIAL_CHARACTERS that were
not encoded correctly. (Bug #33130)
* Adding or updating a row using SQLSetPos() on a result set with aliased
columns would fail. (Bug #6157)
* Changing the DSN name when editing a DSN left behind the DSN
under the old name in addition to creating the new entry. Fixed for
native Windows GUI. (Bug #31165, fixed for Qt GUI in 3.51.23)
* Numeric values (such as OPTIONS or PORT) were not read correctly
from a connection string if they were not the last parameter. (Bug #33822)
* The SSLCIPHER option was saved incorrectly on Windows. (Bug #33897)
* The cursor position was incorrect after rows were deleted from a
static cursor. (Bug #33388)
* Dynamic cursors on statements with parameters were not supported.
(Bug #11846)
* FLAG_COLUMN_SIZE_S32 did not limit the octet length or display size
reported for fields, causing problems with Microsoft Visual
FoxPro. (Bug #30890)
* Retrieving SQL_C_WCHAR data with SQLGetData() could crash due to
incorrect handling of the buffer length. (Bug #32684)
Includes changes from Connector/ODBC 3.51.23.
Built using MySQL 5.0.52.
----
5.1.1 (12-Dec-2007)
Functionality added or changed:
* Added MSI installer for Windows 64-bit (Bug #31510)
* Implemented support for SQLCancel(). (Bug #15601)
* Added wrappers for missing ODBC driver manager installer functions.
This makes it possible to use the driver with unixODBC 2.2.11, which
is the version shipped with Debian and Ubuntu. (Bug #32685)
* Disallow 'SET NAMES' in initial statement and in executed statements.
* Replaced the internal library which handles creation and loading
of DSN information. The new library, which was originally a part of
Connector/ODBC 5.0, supports Unicode option values.
* Implemented native Windows setup library
* Removed monitor (myodbc3m) and dsn-editor (myodbc3c).
* Replaced myodbc3i (now myodbc-installer) with Connector/ODBC 5.0
version.
* Added support for SQL_NUMERIC_STRUCT (Bug #3028, #24920).
* Removed non-threadsafe configuration of the driver. The driver is
now always built against the threadsafe version of libmysql.
Bugs fixed:
* SQL statements were limited to 64k. (Bug #30983)
* Diagnostics were not correctly cleared on connection and
environment handles.
* SQLCopyDesc() did not correctly copy all records.
* Freeing a statement resulted in a memory leak due to descriptor
records not being freed.. (Bug #31115)
* SQL_ODBC_SQL_CONFORMANCE was not handled by SQLGetInfo().
* NULL pointers passed to SQLGetInfo() could result in a crash.
* Passwords with ';' were not handled correctly. (Bug #16178)
* Binding of columns between calling prepare and execute caused premature
statement execution. (Bug #29239)
* ADO could not open a recordset that has a DECIMAL field (Bug #31720)
* SQLError() incorrectly cleared the error information, making it
unavailable from subsequent calls to SQLGetDiagRec().
* ADO was unable to open record set using dynamic cursor. (Bug #32014)
* SQLSetConnectAttr() did not clear previous errors, possibly confusing
SQLError().
* SQLDescribeColW returned UTF-8 column as SQL_VARCHAR instead of
SQL_WVARCHAR. (Bug #32161)
* Fixed SQL_ATTR_PARAM_BIND_OFFSET, and fixed row offsets to work
with updatable cursors.
* SQLSetPos w/SQL_DELETE advances dynamic cursor incorrectly. (Bug #29765)
* Recordset Update() fails in 5.1 ODBC connector when using adUseClient
cursor. (Bug #26985)
* MyODBC 5/ ADO Not possible to update a client side cursor. (Bug #27961)
* Intermixing of SQLGetData() using SQL_C_CHAR and SQL_C_WCHAR on the same
field value was incorrect. (Bug #28617)
* SQLNativeSql() didn't properly handle the output length pointer.
(Bug #10128 & Bug #31049)
Includes changes from Connector/ODBC 3.51.21 and 3.51.22.
Built using MySQL 5.0.52.
----
5.1.0 (8-Sep-2007)
Functionality added or changed:
* Added support for SQL_C_WCHAR.
* Added support for Unicode functions (SQLConnectW, etc).
* Added descriptor support (SQLGetDescField, SQLGetDescRec, etc)
----
3.51.27 (20-Nov-2008)
Bugs fixed:
* Cannot use ssl (Bug #29955)
* Enable auto reconnect doesn't work (Bug #37179)
* Add read and write timeouts on the connection (Bug #40407)
----
3.51.26 (7-Jul-2008)
Bugs fixed:
* Access Violation in myodbc3.dll (Bug #30770)
* Truncation of "SHOW CREATE TABLE" result (Bug #24131)
* Added a new connection option FLAG_NO_BINARY_RESULT. Fixed
field type charset 63 problem. (Bug #29402)
2.3.0
* Try and rationalise the way the connection process find the driver
version and supported functions
* Sort out problem in isql with blank lines
* Stop libthread from being used under AIX
* Move the GUI parts off into a new project
http://sourceforge.net/projects/unixodbc-gui-qt/
* Strip out the GUI parts. I have also removed the spec files
as they will need redoing,
* Move the Test parts off into a new project
http://sourceforge.net/projects/unixodbc-test/
* Add interface into odbcinstQ to allow for a dialog if SQLDriverConnect
is called without a DSN= (as the MS spec)
* Allow the setting of a default Threading level in the ODBC section
of odbcinst.ini
* Change double format string in Postgre7.1 driver
* Add missing CR to output of odbcinst
* add fixes to MiniSQL driver
* Add missing .y in nn driver, now I need to get it to work
* Assoured bux fixes and format problems, thanks Tom
* SQLBindCol on metadata calls was incorrectly going via the cursor lib if it
* fix isql problem with nested definitions.
was enabled
* Add configure option to enable building of driver config libs
* Shift build to using config.h, the compile lines were so big it was hard to
see warnings
* Fix bug in isql when using -b option.
* Check attribute values when setting connection and statement attrs
* Check for valid pointers in SQLGetInfo(W) and SQLGetFunctions
* Add extra checks for states in SQLCopyDesc
* Add --enable-stricterror option to allow compliance with the error reporting
definition, driver errors don't have the unixODBC prefix
* Check for statements in the NEED_DATA state when calling SQLEndTran
* Extra error check for SQLPutData
* Check handle type in SQLEndTran
* Prevent seg fault if there are no driver error functions
* the -n option to isql was not working correctly
* Stripped out all the bespoke LDTL configure stull, not just what libtoolize
provides
* Fix problem where ansi_to_unicode_alloc didn't leave space for the NULL
and could cause memory corruption
* Add the ODBC 3.80 additions that MS have produced. I am sure I remember
the standard being given to XOpen, what do I know :-)
* Change the file open mode for the ini file from w to w+ just in case the
original open failed but the file did exist
* Fix configure problem preventing the CHAR encoding from being passed
* Remove white spave from ini write, not all drivers use unixODBC ini functions
and can handle the spaces
* Update config.guess to current GNU version including support for AIX6
* Create SVN repository at sourceforge
* Add cast to fix problem in SQLSetConnectOption
* Fix SQLINTEGER<->SQLLEN conversion broblem in SQLNativeSQL
* Fix bug that stopped setting SQL_ATTR_CONCURRENCY to SQL_CONCUR_VALUES
* Change minor version number because of the SQLLEN change
* Remove unintended trailing white space from log generation
pycassa is a Cassandra library with the following features:
1. Auto-failover single or thread-local connections
2. A simplified version of the thrift interface
3. A method to map an existing class to a Cassandra ColumnFamily.
4. Support for SuperColumns
Changes since 0.5.6:
0.6.0
=====
- orm
- Unit of work internals have been rewritten. Units of work
with large numbers of objects interdependent objects
can now be flushed without recursion overflows
as there is no longer reliance upon recursive calls
[ticket:1081]. The number of internal structures now stays
constant for a particular session state, regardless of
how many relationships are present on mappings. The flow
of events now corresponds to a linear list of steps,
generated by the mappers and relationships based on actual
work to be done, filtered through a single topological sort
for correct ordering. Flush actions are assembled using
far fewer steps and less memory. [ticket:1742]
- Along with the UOW rewrite, this also removes an issue
introduced in 0.6beta3 regarding topological cycle detection
for units of work with long dependency cycles. We now use
an algorithm written by Guido (thanks Guido!).
- one-to-many relationships now maintain a list of positive
parent-child associations within the flush, preventing
previous parents marked as deleted from cascading a
delete or NULL foreign key set on those child objects,
despite the end-user not removing the child from the old
association. [ticket:1764]
- A collection lazy load will switch off default
eagerloading on the reverse many-to-one side, since
that loading is by definition unnecessary. [ticket:1495]
- Session.refresh() now does an equivalent expire()
on the given instance first, so that the "refresh-expire"
cascade is propagated. Previously, refresh() was
not affected in any way by the presence of "refresh-expire"
cascade. This is a change in behavior versus that
of 0.6beta2, where the "lockmode" flag passed to refresh()
would cause a version check to occur. Since the instance
is first expired, refresh() always upgrades the object
to the most recent version.
- The 'refresh-expire' cascade, when reaching a pending object,
will expunge the object if the cascade also includes
"delete-orphan", or will simply detach it otherwise.
[ticket:1754]
- id(obj) is no longer used internally within topological.py,
as the sorting functions now require hashable objects
only. [ticket:1756]
- The ORM will set the docstring of all generated descriptors
to None by default. This can be overridden using 'doc'
(or if using Sphinx, attribute docstrings work too).
- Added kw argument 'doc' to all mapper property callables
as well as Column(). Will assemble the string 'doc' as
the '__doc__' attribute on the descriptor.
- Usage of version_id_col on a backend that supports
cursor.rowcount for execute() but not executemany() now works
when a delete is issued (already worked for saves, since those
don't use executemany()). For a backend that doesn't support
cursor.rowcount at all, a warning is emitted the same
as with saves. [ticket:1761]
- The ORM now short-term caches the "compiled" form of
insert() and update() constructs when flushing lists of
objects of all the same class, thereby avoiding redundant
compilation per individual INSERT/UPDATE within an
individual flush() call.
- internal getattr(), setattr(), getcommitted() methods
on ColumnProperty, CompositeProperty, RelationshipProperty
have been underscored (i.e. are private), signature has
changed.
- engines
- The C extension now also works with DBAPIs which use custom
sequences as row (and not only tuples). [ticket:1757]
- sql
- Restored some bind-labeling logic from 0.5 which ensures
that tables with column names that overlap another column
of the form "<tablename>_<columnname>" won't produce
errors if column._label is used as a bind name during
an UPDATE. Test coverage which wasn't present in 0.5
has been added. [ticket:1755]
- somejoin.select(fold_equivalents=True) is no longer
deprecated, and will eventually be rolled into a more
comprehensive version of the feature for [ticket:1729].
- the Numeric type raises an *enormous* warning when expected
to convert floats to Decimal from a DBAPI that returns floats.
This includes SQLite, Sybase, MS-SQL. [ticket:1759]
- Fixed an error in expression typing which caused an endless
loop for expressions with two NULL types.
- Fixed bug in execution_options() feature whereby the existing
Transaction and other state information from the parent
connection would not be propagated to the sub-connection.
- Added new 'compiled_cache' execution option. A dictionary
where Compiled objects will be cached when the Connection
compiles a clause expression into a dialect- and parameter-
specific Compiled object. It is the user's responsibility to
manage the size of this dictionary, which will have keys
corresponding to the dialect, clause element, the column
names within the VALUES or SET clause of an INSERT or UPDATE,
as well as the "batch" mode for an INSERT or UPDATE statement.
- Added get_pk_constraint() to reflection.Inspector, similar
to get_primary_keys() except returns a dict that includes the
name of the constraint, for supported backends (PG so far).
[ticket:1769]
- Table.create() and Table.drop() no longer apply metadata-
level create/drop events. [ticket:1771]
- ext
- the compiler extension now allows @compiles decorators
on base classes that extend to child classes, @compiles
decorators on child classes that aren't broken by a
@compiles decorator on the base class.
- Declarative will raise an informative error message
if a non-mapped class attribute is referenced in the
string-based relationship() arguments.
- Further reworked the "mixin" logic in declarative to
additionally allow __mapper_args__ as a @classproperty
on a mixin, such as to dynamically assign polymorphic_identity.
- postgresql
- Postgresql now reflects sequence names associated with
SERIAL columns correctly, after the name of of the sequence
has been changed. Thanks to Kumar McMillan for the patch.
[ticket:1071]
- Repaired missing import in psycopg2._PGNumeric type when
unknown numeric is received.
- psycopg2/pg8000 dialects now aware of REAL[], FLOAT[],
DOUBLE_PRECISION[], NUMERIC[] return types without
raising an exception.
- Postgresql reflects the name of primary key constraints,
if one exists. [ticket:1769]
- oracle
- Now using cx_oracle output converters so that the
DBAPI returns natively the kinds of values we prefer:
- NUMBER values with positive precision + scale convert
to cx_oracle.STRING and then to Decimal. This
allows perfect precision for the Numeric type when
using cx_oracle. [ticket:1759]
- STRING/FIXED_CHAR now convert to unicode natively.
SQLAlchemy's String types then don't need to
apply any kind of conversions.
- firebird
- The functionality of result.rowcount can be disabled on a
per-engine basis by setting 'enable_rowcount=False'
on create_engine(). Normally, cursor.rowcount is called
after any UPDATE or DELETE statement unconditionally,
because the cursor is then closed and Firebird requires
an open cursor in order to get a rowcount. This
call is slightly expensive however so it can be disabled.
To re-enable on a per-execution basis, the
'enable_rowcount=True' execution option may be used.
- examples
- Updated attribute_shard.py example to use a more robust
method of searching a Query for binary expressions which
compare columns against literal values.
0.6beta3
========
- orm
- Major feature: Added new "subquery" loading capability to
relationship(). This is an eager loading option which
generates a second SELECT for each collection represented
in a query, across all parents at once. The query
re-issues the original end-user query wrapped in a subquery,
applies joins out to the target collection, and loads
all those collections fully in one result, similar to
"joined" eager loading but using all inner joins and not
re-fetching full parent rows repeatedly (as most DBAPIs seem
to do, even if columns are skipped). Subquery loading is
available at mapper config level using "lazy='subquery'" and
at the query options level using "subqueryload(props..)",
"subqueryload_all(props...)". [ticket:1675]
- To accomodate the fact that there are now two kinds of eager
loading available, the new names for eagerload() and
eagerload_all() are joinedload() and joinedload_all(). The
old names will remain as synonyms for the foreseeable future.
- The "lazy" flag on the relationship() function now accepts
a string argument for all kinds of loading: "select", "joined",
"subquery", "noload" and "dynamic", where the default is now
"select". The old values of True/
False/None still retain their usual meanings and will remain
as synonyms for the foreseeable future.
- Added with_hint() method to Query() construct. This calls
directly down to select().with_hint() and also accepts
entities as well as tables and aliases. See with_hint() in the
SQL section below. [ticket:921]
- Fixed bug in Query whereby calling q.join(prop).from_self(...).
join(prop) would fail to render the second join outside the
subquery, when joining on the same criterion as was on the
inside.
- Fixed bug in Query whereby the usage of aliased() constructs
would fail if the underlying table (but not the actual alias)
were referenced inside the subquery generated by
q.from_self() or q.select_from().
- Fixed bug which affected all eagerload() and similar options
such that "remote" eager loads, i.e. eagerloads off of a lazy
load such as query(A).options(eagerload(A.b, B.c))
wouldn't eagerload anything, but using eagerload("b.c") would
work fine.
- Query gains an add_columns(*columns) method which is a multi-
version of add_column(col). add_column(col) is future
deprecated.
- Query.join() will detect if the end result will be
"FROM A JOIN A", and will raise an error if so.
- Query.join(Cls.propname, from_joinpoint=True) will check more
carefully that "Cls" is compatible with the current joinpoint,
and act the same way as Query.join("propname", from_joinpoint=True)
in that regard.
- sql
- Added with_hint() method to select() construct. Specify
a table/alias, hint text, and optional dialect name, and
"hints" will be rendered in the appropriate place in the
statement. Works for Oracle, Sybase, MySQL. [ticket:921]
- Fixed bug introduced in 0.6beta2 where column labels would
render inside of column expressions already assigned a label.
[ticket:1747]
- postgresql
- The psycopg2 dialect will log NOTICE messages via the
"sqlalchemy.dialects.postgresql" logger name.
[ticket:877]
- the TIME and TIMESTAMP types are now availble from the
postgresql dialect directly, which add the PG-specific
argument 'precision' to both. 'precision' and
'timezone' are correctly reflected for both TIME and
TIMEZONE types. [ticket:997]
- mysql
- No longer guessing that TINYINT(1) should be BOOLEAN
when reflecting - TINYINT(1) is returned. Use Boolean/
BOOLEAN in table definition to get boolean conversion
behavior. [ticket:1752]
- oracle
- The Oracle dialect will issue VARCHAR type definitions
using character counts, i.e. VARCHAR2(50 CHAR), so that
the column is sized in terms of characters and not bytes.
Column reflection of character types will also use
ALL_TAB_COLUMNS.CHAR_LENGTH instead of
ALL_TAB_COLUMNS.DATA_LENGTH. Both of these behaviors take
effect when the server version is 9 or higher - for
version 8, the old behaviors are used. [ticket:1744]
- declarative
- Using a mixin won't break if the mixin implements an
unpredictable __getattribute__(), i.e. Zope interfaces.
[ticket:1746]
- Using @classdecorator and similar on mixins to define
__tablename__, __table_args__, etc. now works if
the method references attributes on the ultimate
subclass. [ticket:1749]
- relationships and columns with foreign keys aren't
allowed on declarative mixins, sorry. [ticket:1751]
- ext
- The sqlalchemy.orm.shard module now becomes an extension,
sqlalchemy.ext.horizontal_shard. The old import
works with a deprecation warning.
0.6beta2
========
- py3k
- Improved the installation/test setup regarding Python 3,
now that Distribute runs on Py3k. distribute_setup.py
is now included. See README.py3k for Python 3 installation/
testing instructions.
- orm
- The official name for the relation() function is now
relationship(), to eliminate confusion over the relational
algebra term. relation() however will remain available
in equal capacity for the foreseeable future. [ticket:1740]
- Added "version_id_generator" argument to Mapper, this is a
callable that, given the current value of the "version_id_col",
returns the next version number. Can be used for alternate
versioning schemes such as uuid, timestamps. [ticket:1692]
- added "lockmode" kw argument to Session.refresh(), will
pass through the string value to Query the same as
in with_lockmode(), will also do version check for a
version_id_col-enabled mapping.
- Fixed bug whereby calling query(A).join(A.bs).add_entity(B)
in a joined inheritance scenario would double-add B as a
target and produce an invalid query. [ticket:1188]
- Fixed bug in session.rollback() which involved not removing
formerly "pending" objects from the session before
re-integrating "deleted" objects, typically occured with
natural primary keys. If there was a primary key conflict
between them, the attach of the deleted would fail
internally. The formerly "pending" objects are now expunged
first. [ticket:1674]
- Removed a lot of logging that nobody really cares about,
logging that remains will respond to live changes in the
log level. No significant overhead is added. [ticket:1719]
- Fixed bug in session.merge() which prevented dict-like
collections from merging.
- session.merge() works with relations that specifically
don't include "merge" in their cascade options - the target
is ignored completely.
- session.merge() will not expire existing scalar attributes
on an existing target if the target has a value for that
attribute, even if the incoming merged doesn't have
a value for the attribute. This prevents unnecessary loads
on existing items. Will still mark the attr as expired
if the destination doesn't have the attr, though, which
fulfills some contracts of deferred cols. [ticket:1681]
- The "allow_null_pks" flag is now called "allow_partial_pks",
defaults to True, acts like it did in 0.5 again. Except,
it also is implemented within merge() such that a SELECT
won't be issued for an incoming instance with partially
NULL primary key if the flag is False. [ticket:1680]
- Fixed bug in 0.6-reworked "many-to-one" optimizations
such that a many-to-one that is against a non-primary key
column on the remote table (i.e. foreign key against a
UNIQUE column) will pull the "old" value in from the
database during a change, since if it's in the session
we will need it for proper history/backref accounting,
and we can't pull from the local identity map on a
non-primary key column. [ticket:1737]
- fixed internal error which would occur if calling has()
or similar complex expression on a single-table inheritance
relation(). [ticket:1731]
- query.one() no longer applies LIMIT to the query, this to
ensure that it fully counts all object identities present
in the result, even in the case where joins may conceal
multiple identities for two or more rows. As a bonus,
one() can now also be called with a query that issued
from_statement() to start with since it no longer modifies
the query. [ticket:1688]
- query.get() now returns None if queried for an identifier
that is present in the identity map with a different class
than the one requested, i.e. when using polymorphic loading.
[ticket:1727]
- A major fix in query.join(), when the "on" clause is an
attribute of an aliased() construct, but there is already
an existing join made out to a compatible target, query properly
joins to the right aliased() construct instead of sticking
onto the right side of the existing join. [ticket:1706]
- Slight improvement to the fix for [ticket:1362] to not issue
needless updates of the primary key column during a so-called
"row switch" operation, i.e. add + delete of two objects
with the same PK.
- Now uses sqlalchemy.orm.exc.DetachedInstanceError when an
attribute load or refresh action fails due to object
being detached from any Session. UnboundExecutionError
is specific to engines bound to sessions and statements.
- Query called in the context of an expression will render
disambiguating labels in all cases. Note that this does
not apply to the existing .statement and .subquery()
accessor/method, which still honors the .with_labels()
setting that defaults to False.
- Query.union() retains disambiguating labels within the
returned statement, thus avoiding various SQL composition
errors which can result from column name conflicts.
[ticket:1676]
- Fixed bug in attribute history that inadvertently invoked
__eq__ on mapped instances.
- Some internal streamlining of object loading grants a
small speedup for large results, estimates are around
10-15%. Gave the "state" internals a good solid
cleanup with less complexity, datamembers,
method calls, blank dictionary creates.
- Documentation clarification for query.delete()
[ticket:1689]
- Fixed cascade bug in many-to-one relation() when attribute
was set to None, introduced in r6711 (cascade deleted
items into session during add()).
- Calling query.order_by() or query.distinct() before calling
query.select_from(), query.with_polymorphic(), or
query.from_statement() raises an exception now instead of
silently dropping those criterion. [ticket:1736]
- query.scalar() now raises an exception if more than one
row is returned. All other behavior remains the same.
[ticket:1735]
- Fixed bug which caused "row switch" logic, that is an
INSERT and DELETE replaced by an UPDATE, to fail when
version_id_col was in use. [ticket:1692]
- sql
- join() will now simulate a NATURAL JOIN by default. Meaning,
if the left side is a join, it will attempt to join the right
side to the rightmost side of the left first, and not raise
any exceptions about ambiguous join conditions if successful
even if there are further join targets across the rest of
the left. [ticket:1714]
- The most common result processors conversion function were
moved to the new "processors" module. Dialect authors are
encouraged to use those functions whenever they correspond
to their needs instead of implementing custom ones.
- SchemaType and subclasses Boolean, Enum are now serializable,
including their ddl listener and other event callables.
[ticket:1694] [ticket:1698]
- Some platforms will now interpret certain literal values
as non-bind parameters, rendered literally into the SQL
statement. This to support strict SQL-92 rules that are
enforced by some platforms including MS-SQL and Sybase.
In this model, bind parameters aren't allowed in the
columns clause of a SELECT, nor are certain ambiguous
expressions like "?=?". When this mode is enabled, the base
compiler will render the binds as inline literals, but only across
strings and numeric values. Other types such as dates
will raise an error, unless the dialect subclass defines
a literal rendering function for those. The bind parameter
must have an embedded literal value already or an error
is raised (i.e. won't work with straight bindparam('x')).
Dialects can also expand upon the areas where binds are not
accepted, such as within argument lists of functions
(which don't work on MS-SQL when native SQL binding is used).
- Added "unicode_errors" parameter to String, Unicode, etc.
Behaves like the 'errors' keyword argument to
the standard library's string.decode() functions. This flag
requires that `convert_unicode` is set to `"force"` - otherwise,
SQLAlchemy is not guaranteed to handle the task of unicode
conversion. Note that this flag adds significant performance
overhead to row-fetching operations for backends that already
return unicode objects natively (which most DBAPIs do). This
flag should only be used as an absolute last resort for reading
strings from a column with varied or corrupted encodings,
which only applies to databases that accept invalid encodings
in the first place (i.e. MySQL. *not* PG, Sqlite, etc.)
- Added math negation operator support, -x.
- FunctionElement subclasses are now directly executable the
same way any func.foo() construct is, with automatic
SELECT being applied when passed to execute().
- The "type" and "bind" keyword arguments of a func.foo()
construct are now local to "func." constructs and are
not part of the FunctionElement base class, allowing
a "type" to be handled in a custom constructor or
class-level variable.
- Restored the keys() method to ResultProxy.
- The type/expression system now does a more complete job
of determining the return type from an expression
as well as the adaptation of the Python operator into
a SQL operator, based on the full left/right/operator
of the given expression. In particular
the date/time/interval system created for Postgresql
EXTRACT in [ticket:1647] has now been generalized into
the type system. The previous behavior which often
occured of an expression "column + literal" forcing
the type of "literal" to be the same as that of "column"
will now usually not occur - the type of
"literal" is first derived from the Python type of the
literal, assuming standard native Python types + date
types, before falling back to that of the known type
on the other side of the expression. If the
"fallback" type is compatible (i.e. CHAR from String),
the literal side will use that. TypeDecorator
types override this by default to coerce the "literal"
side unconditionally, which can be changed by implementing
the coerce_compared_value() method. Also part of
[ticket:1683].
- Made sqlalchemy.sql.expressions.Executable part of public
API, used for any expression construct that can be sent to
execute(). FunctionElement now inherits Executable so that
it gains execution_options(), which are also propagated
to the select() that's generated within execute().
Executable in turn subclasses _Generative which marks
any ClauseElement that supports the @_generative
decorator - these may also become "public" for the benefit
of the compiler extension at some point.
- A change to the solution for [ticket:1579] - an end-user
defined bind parameter name that directly conflicts with
a column-named bind generated directly from the SET or
VALUES clause of an update/insert generates a compile error.
This reduces call counts and eliminates some cases where
undesirable name conflicts could still occur.
- Column() requires a type if it has no foreign keys (this is
not new). An error is now raised if a Column() has no type
and no foreign keys. [ticket:1705]
- the "scale" argument of the Numeric() type is honored when
coercing a returned floating point value into a string
on its way to Decimal - this allows accuracy to function
on SQLite, MySQL. [ticket:1717]
- the copy() method of Column now copies over uninitialized
"on table attach" events. Helps with the new declarative
"mixin" capability.
- engines
- Added an optional C extension to speed up the sql layer by
reimplementing RowProxy and the most common result processors.
The actual speedups will depend heavily on your DBAPI and
the mix of datatypes used in your tables, and can vary from
a 30% improvement to more than 200%. It also provides a modest
(~15-20%) indirect improvement to ORM speed for large queries.
Note that it is *not* built/installed by default.
See README for installation instructions.
- the execution sequence pulls all rowcount/last inserted ID
info from the cursor before commit() is called on the
DBAPI connection in an "autocommit" scenario. This helps
mxodbc with rowcount and is probably a good idea overall.
- Opened up logging a bit such that isEnabledFor() is called
more often, so that changes to the log level for engine/pool
will be reflected on next connect. This adds a small
amount of method call overhead. It's negligible and will make
life a lot easier for all those situations when logging
just happens to be configured after create_engine() is called.
[ticket:1719]
- The assert_unicode flag is deprecated. SQLAlchemy will raise
a warning in all cases where it is asked to encode a non-unicode
Python string, as well as when a Unicode or UnicodeType type
is explicitly passed a bytestring. The String type will do nothing
for DBAPIs that already accept Python unicode objects.
- Bind parameters are sent as a tuple instead of a list. Some
backend drivers will not accept bind parameters as a list.
- threadlocal engine wasn't properly closing the connection
upon close() - fixed that.
- Transaction object doesn't rollback or commit if it isn't
"active", allows more accurate nesting of begin/rollback/commit.
- Python unicode objects as binds result in the Unicode type,
not string, thus eliminating a certain class of unicode errors
on drivers that don't support unicode binds.
- Added "logging_name" argument to create_engine(), Pool() constructor
as well as "pool_logging_name" argument to create_engine() which
filters down to that of Pool. Issues the given string name
within the "name" field of logging messages instead of the default
hex identifier string. [ticket:1555]
- The visit_pool() method of Dialect is removed, and replaced with
on_connect(). This method returns a callable which receives
the raw DBAPI connection after each one is created. The callable
is assembled into a first_connect/connect pool listener by the
connection strategy if non-None. Provides a simpler interface
for dialects.
- StaticPool now initializes, disposes and recreates without
opening a new connection - the connection is only opened when
first requested. dispose() also works on AssertionPool now.
[ticket:1728]
- metadata
- Added the ability to strip schema information when using
"tometadata" by passing "schema=None" as an argument. If schema
is not specified then the table's schema is retained.
[ticket: 1673]
- declarative
- DeclarativeMeta exclusively uses cls.__dict__ (not dict_)
as the source of class information; _as_declarative exclusively
uses the dict_ passed to it as the source of class information
(which when using DeclarativeMeta is cls.__dict__). This should
in theory make it easier for custom metaclasses to modify
the state passed into _as_declarative.
- declarative now accepts mixin classes directly, as a means
to provide common functional and column-based elements on
all subclasses, as well as a means to propagate a fixed
set of __table_args__ or __mapper_args__ to subclasses.
For custom combinations of __table_args__/__mapper_args__ from
an inherited mixin to local, descriptors can now be used.
New details are all up in the Declarative documentation.
Thanks to Chris Withers for putting up with my strife
on this. [ticket:1707]
- the __mapper_args__ dict is copied when propagating to a subclass,
and is taken straight off the class __dict__ to avoid any
propagation from the parent. mapper inheritance already
propagates the things you want from the parent mapper.
[ticket:1393]
- An exception is raised when a single-table subclass specifies
a column that is already present on the base class.
[ticket:1732]
- mysql
- Fixed reflection bug whereby when COLLATE was present,
nullable flag and server defaults would not be reflected.
[ticket:1655]
- Fixed reflection of TINYINT(1) "boolean" columns defined with
integer flags like UNSIGNED.
- Further fixes for the mysql-connector dialect. [ticket:1668]
- Composite PK table on InnoDB where the "autoincrement" column
isn't first will emit an explicit "KEY" phrase within
CREATE TABLE thereby avoiding errors, [ticket:1496]
- Added reflection/create table support for a wide range
of MySQL keywords. [ticket:1634]
- Fixed import error which could occur reflecting tables on
a Windows host [ticket:1580]
- mssql
- Re-established support for the pymssql dialect.
- Various fixes for implicit returning, reflection,
etc. - the MS-SQL dialects aren't quite complete
in 0.6 yet (but are close)
- Added basic support for mxODBC [ticket:1710].
- Removed the text_as_varchar option.
- oracle
- "out" parameters require a type that is supported by
cx_oracle. An error will be raised if no cx_oracle
type can be found.
- Oracle 'DATE' now does not perform any result processing,
as the DATE type in Oracle stores full date+time objects,
that's what you'll get. Note that the generic types.Date
type *will* still call value.date() on incoming values,
however. When reflecting a table, the reflected type
will be 'DATE'.
- Added preliminary support for Oracle's WITH_UNICODE
mode. At the very least this establishes initial
support for cx_Oracle with Python 3. When WITH_UNICODE
mode is used in Python 2.xx, a large and scary warning
is emitted asking that the user seriously consider
the usage of this difficult mode of operation.
[ticket:1670]
- The except_() method now renders as MINUS on Oracle,
which is more or less equivalent on that platform.
[ticket:1712]
- Added support for rendering and reflecting
TIMESTAMP WITH TIME ZONE, i.e. TIMESTAMP(timezone=True).
[ticket:651]
- Oracle INTERVAL type can now be reflected.
- sqlite
- Added "native_datetime=True" flag to create_engine().
This will cause the DATE and TIMESTAMP types to skip
all bind parameter and result row processing, under
the assumption that PARSE_DECLTYPES has been enabled
on the connection. Note that this is not entirely
compatible with the "func.current_date()", which
will be returned as a string. [ticket:1685]
- sybase
- Implemented a preliminary working dialect for Sybase,
with sub-implementations for Python-Sybase as well
as Pyodbc. Handles table
creates/drops and basic round trip functionality.
Does not yet include reflection or comprehensive
support of unicode/special expressions/etc.
- examples
- Changed the beaker cache example a bit to have a separate
RelationCache option for lazyload caching. This object
does a lookup among any number of potential attributes
more efficiently by grouping several into a common structure.
Both FromCache and RelationCache are simpler individually.
- documentation
- Major cleanup work in the docs to link class, function, and
method names into the API docs. [ticket:1700/1702/1703]
0.6beta1
========
- Major Release
- For the full set of feature descriptions, see
http://www.sqlalchemy.org/trac/wiki/06Migration .
This document is a work in progress.
- All bug fixes and feature enhancements from the most
recent 0.5 version and below are also included within 0.6.
- Platforms targeted now include Python 2.4/2.5/2.6, Python
3.1, Jython2.5.
- orm
- Changes to query.update() and query.delete():
- the 'expire' option on query.update() has been renamed to
'fetch', thus matching that of query.delete().
'expire' is deprecated and issues a warning.
- query.update() and query.delete() both default to
'evaluate' for the synchronize strategy.
- the 'synchronize' strategy for update() and delete()
raises an error on failure. There is no implicit fallback
onto "fetch". Failure of evaluation is based on the
structure of criteria, so success/failure is deterministic
based on code structure.
- Enhancements on many-to-one relations:
- many-to-one relations now fire off a lazyload in fewer
cases, including in most cases will not fetch the "old"
value when a new one is replaced.
- many-to-one relation to a joined-table subclass now uses
get() for a simple load (known as the "use_get"
condition), i.e. Related->Sub(Base), without the need to
redefine the primaryjoin condition in terms of the base
table. [ticket:1186]
- specifying a foreign key with a declarative column, i.e.
ForeignKey(MyRelatedClass.id) doesn't break the "use_get"
condition from taking place [ticket:1492]
- relation(), eagerload(), and eagerload_all() now feature
an option called "innerjoin". Specify `True` or `False` to
control whether an eager join is constructed as an INNER
or OUTER join. Default is `False` as always. The mapper
options will override whichever setting is specified on
relation(). Should generally be set for many-to-one, not
nullable foreign key relations to allow improved join
performance. [ticket:1544]
- the behavior of eagerloading such that the main query is
wrapped in a subquery when LIMIT/OFFSET are present now
makes an exception for the case when all eager loads are
many-to-one joins. In those cases, the eager joins are
against the parent table directly along with the
limit/offset without the extra overhead of a subquery,
since a many-to-one join does not add rows to the result.
- Enhancements / Changes on Session.merge():
- the "dont_load=True" flag on Session.merge() is deprecated
and is now "load=False".
- Session.merge() is performance optimized, using half the
call counts for "load=False" mode compared to 0.5 and
significantly fewer SQL queries in the case of collections
for "load=True" mode.
- merge() will not issue a needless merge of attributes if the
given instance is the same instance which is already present.
- merge() now also merges the "options" associated with a given
state, i.e. those passed through query.options() which follow
along with an instance, such as options to eagerly- or
lazyily- load various attributes. This is essential for
the construction of highly integrated caching schemes. This
is a subtle behavioral change vs. 0.5.
- A bug was fixed regarding the serialization of the "loader
path" present on an instance's state, which is also necessary
when combining the usage of merge() with serialized state
and associated options that should be preserved.
- The all new merge() is showcased in a new comprehensive
example of how to integrate Beaker with SQLAlchemy. See
the notes in the "examples" note below.
- Primary key values can now be changed on a joined-table inheritance
object, and ON UPDATE CASCADE will be taken into account when
the flush happens. Set the new "passive_updates" flag to False
on mapper() when using SQLite or MySQL/MyISAM. [ticket:1362]
- flush() now detects when a primary key column was updated by
an ON UPDATE CASCADE operation from another primary key, and
can then locate the row for a subsequent UPDATE on the new PK
value. This occurs when a relation() is there to establish
the relationship as well as passive_updates=True. [ticket:1671]
- the "save-update" cascade will now cascade the pending *removed*
values from a scalar or collection attribute into the new session
during an add() operation. This so that the flush() operation
will also delete or modify rows of those disconnected items.
- Using a "dynamic" loader with a "secondary" table now produces
a query where the "secondary" table is *not* aliased. This
allows the secondary Table object to be used in the "order_by"
attribute of the relation(), and also allows it to be used
in filter criterion against the dynamic relation.
[ticket:1531]
- relation() with uselist=False will emit a warning when
an eager or lazy load locates more than one valid value for
the row. This may be due to primaryjoin/secondaryjoin
conditions which aren't appropriate for an eager LEFT OUTER
JOIN or for other conditions. [ticket:1643]
- an explicit check occurs when a synonym() is used with
map_column=True, when a ColumnProperty (deferred or otherwise)
exists separately in the properties dictionary sent to mapper
with the same keyname. Instead of silently replacing
the existing property (and possible options on that property),
an error is raised. [ticket:1633]
- a "dynamic" loader sets up its query criterion at construction
time so that the actual query is returned from non-cloning
accessors like "statement".
- the "named tuple" objects returned when iterating a
Query() are now pickleable.
- mapping to a select() construct now requires that you
make an alias() out of it distinctly. This to eliminate
confusion over such issues as [ticket:1542]
- query.join() has been reworked to provide more consistent
behavior and more flexibility (includes [ticket:1537])
- query.select_from() accepts multiple clauses to produce
multiple comma separated entries within the FROM clause.
Useful when selecting from multiple-homed join() clauses.
- query.select_from() also accepts mapped classes, aliased()
constructs, and mappers as arguments. In particular this
helps when querying from multiple joined-table classes to ensure
the full join gets rendered.
- query.get() can be used with a mapping to an outer join
where one or more of the primary key values are None.
[ticket:1135]
- query.from_self(), query.union(), others which do a
"SELECT * from (SELECT...)" type of nesting will do
a better job translating column expressions within the subquery
to the columns clause of the outer query. This is
potentially backwards incompatible with 0.5, in that this
may break queries with literal expressions that do not have labels
applied (i.e. literal('foo'), etc.)
[ticket:1568]
- relation primaryjoin and secondaryjoin now check that they
are column-expressions, not just clause elements. this prohibits
things like FROM expressions being placed there directly.
[ticket:1622]
- `expression.null()` is fully understood the same way
None is when comparing an object/collection-referencing
attribute within query.filter(), filter_by(), etc.
[ticket:1415]
- added "make_transient()" helper function which transforms a
persistent/ detached instance into a transient one (i.e.
deletes the instance_key and removes from any session.)
[ticket:1052]
- the allow_null_pks flag on mapper() is deprecated, and
the feature is turned "on" by default. This means that
a row which has a non-null value for any of its primary key
columns will be considered an identity. The need for this
scenario typically only occurs when mapping to an outer join.
[ticket:1339]
- the mechanics of "backref" have been fully merged into the
finer grained "back_populates" system, and take place entirely
within the _generate_backref() method of RelationProperty. This
makes the initialization procedure of RelationProperty
simpler and allows easier propagation of settings (such as from
subclasses of RelationProperty) into the reverse reference.
The internal BackRef() is gone and backref() returns a plain
tuple that is understood by RelationProperty.
- The version_id_col feature on mapper() will raise a warning when
used with dialects that don't support "rowcount" adequately.
[ticket:1569]
- added "execution_options()" to Query, to so options can be
passed to the resulting statement. Currently only
Select-statements have these options, and the only option
used is "stream_results", and the only dialect which knows
"stream_results" is psycopg2.
- Query.yield_per() will set the "stream_results" statement
option automatically.
- Deprecated or removed:
* 'allow_null_pks' flag on mapper() is deprecated. It does
nothing now and the setting is "on" in all cases.
* 'transactional' flag on sessionmaker() and others is
removed. Use 'autocommit=True' to indicate 'transactional=False'.
* 'polymorphic_fetch' argument on mapper() is removed.
Loading can be controlled using the 'with_polymorphic'
option.
* 'select_table' argument on mapper() is removed. Use
'with_polymorphic=("*", <some selectable>)' for this
functionality.
* 'proxy' argument on synonym() is removed. This flag
did nothing throughout 0.5, as the "proxy generation"
behavior is now automatic.
* Passing a single list of elements to eagerload(),
eagerload_all(), contains_eager(), lazyload(),
defer(), and undefer() instead of multiple positional
*args is deprecated.
* Passing a single list of elements to query.order_by(),
query.group_by(), query.join(), or query.outerjoin()
instead of multiple positional *args is deprecated.
* query.iterate_instances() is removed. Use query.instances().
* Query.query_from_parent() is removed. Use the
sqlalchemy.orm.with_parent() function to produce a
"parent" clause, or alternatively query.with_parent().
* query._from_self() is removed, use query.from_self()
instead.
* the "comparator" argument to composite() is removed.
Use "comparator_factory".
* RelationProperty._get_join() is removed.
* the 'echo_uow' flag on Session is removed. Use
logging on the "sqlalchemy.orm.unitofwork" name.
* session.clear() is removed. use session.expunge_all().
* session.save(), session.update(), session.save_or_update()
are removed. Use session.add() and session.add_all().
* the "objects" flag on session.flush() remains deprecated.
* the "dont_load=True" flag on session.merge() is deprecated
in favor of "load=False".
* ScopedSession.mapper remains deprecated. See the
usage recipe at
http://www.sqlalchemy.org/trac/wiki/UsageRecipes/SessionAwareMapper
* passing an InstanceState (internal SQLAlchemy state object) to
attributes.init_collection() or attributes.get_history() is
deprecated. These functions are public API and normally
expect a regular mapped object instance.
* the 'engine' parameter to declarative_base() is removed.
Use the 'bind' keyword argument.
- sql
- the "autocommit" flag on select() and text() as well
as select().autocommit() are deprecated - now call
.execution_options(autocommit=True) on either of those
constructs, also available directly on Connection and orm.Query.
- the autoincrement flag on column now indicates the column
which should be linked to cursor.lastrowid, if that method
is used. See the API docs for details.
- an executemany() now requires that all bound parameter
sets require that all keys are present which are
present in the first bound parameter set. The structure
and behavior of an insert/update statement is very much
determined by the first parameter set, including which
defaults are going to fire off, and a minimum of
guesswork is performed with all the rest so that performance
is not impacted. For this reason defaults would otherwise
silently "fail" for missing parameters, so this is now guarded
against. [ticket:1566]
- returning() support is native to insert(), update(),
delete(). Implementations of varying levels of
functionality exist for Postgresql, Firebird, MSSQL and
Oracle. returning() can be called explicitly with column
expressions which are then returned in the resultset,
usually via fetchone() or first().
insert() constructs will also use RETURNING implicitly to
get newly generated primary key values, if the database
version in use supports it (a version number check is
performed). This occurs if no end-user returning() was
specified.
- union(), intersect(), except() and other "compound" types
of statements have more consistent behavior w.r.t.
parenthesizing. Each compound element embedded within
another will now be grouped with parenthesis - previously,
the first compound element in the list would not be grouped,
as SQLite doesn't like a statement to start with
parenthesis. However, Postgresql in particular has
precedence rules regarding INTERSECT, and it is
more consistent for parenthesis to be applied equally
to all sub-elements. So now, the workaround for SQLite
is also what the workaround for PG was previously -
when nesting compound elements, the first one usually needs
".alias().select()" called on it to wrap it inside
of a subquery. [ticket:1665]
- insert() and update() constructs can now embed bindparam()
objects using names that match the keys of columns. These
bind parameters will circumvent the usual route to those
keys showing up in the VALUES or SET clause of the generated
SQL. [ticket:1579]
- the Binary type now returns data as a Python string
(or a "bytes" type in Python 3), instead of the built-
in "buffer" type. This allows symmetric round trips
of binary data. [ticket:1524]
- Added a tuple_() construct, allows sets of expressions
to be compared to another set, typically with IN against
composite primary keys or similar. Also accepts an
IN with multiple columns. The "scalar select can
have only one column" error message is removed - will
rely upon the database to report problems with
col mismatch.
- User-defined "default" and "onupdate" callables which
accept a context should now call upon
"context.current_parameters" to get at the dictionary
of bind parameters currently being processed. This
dict is available in the same way regardless of
single-execute or executemany-style statement execution.
- multi-part schema names, i.e. with dots such as
"dbo.master", are now rendered in select() labels
with underscores for dots, i.e. "dbo_master_table_column".
This is a "friendly" label that behaves better
in result sets. [ticket:1428]
- removed needless "counter" behavior with select()
labelnames that match a column name in the table,
i.e. generates "tablename_id" for "id", instead of
"tablename_id_1" in an attempt to avoid naming
conflicts, when the table has a column actually
named "tablename_id" - this is because
the labeling logic is always applied to all columns
so a naming conflict will never occur.
- calling expr.in_([]), i.e. with an empty list, emits a warning
before issuing the usual "expr != expr" clause. The
"expr != expr" can be very expensive, and it's preferred
that the user not issue in_() if the list is empty,
instead simply not querying, or modifying the criterion
as appropriate for more complex situations.
[ticket:1628]
- Added "execution_options()" to select()/text(), which set the
default options for the Connection. See the note in "engines".
- Deprecated or removed:
* "scalar" flag on select() is removed, use
select.as_scalar().
* "shortname" attribute on bindparam() is removed.
* postgres_returning, firebird_returning flags on
insert(), update(), delete() are deprecated, use
the new returning() method.
* fold_equivalents flag on join is deprecated (will remain
until [ticket:1131] is implemented)
- engines
- transaction isolation level may be specified with
create_engine(... isolation_level="..."); available on
postgresql and sqlite. [ticket:443]
- Connection has execution_options(), generative method
which accepts keywords that affect how the statement
is executed w.r.t. the DBAPI. Currently supports
"stream_results", causes psycopg2 to use a server
side cursor for that statement, as well as
"autocommit", which is the new location for the "autocommit"
option from select() and text(). select() and
text() also have .execution_options() as well as
ORM Query().
- fixed the import for entrypoint-driven dialects to
not rely upon silly tb_info trick to determine import
error status. [ticket:1630]
- added first() method to ResultProxy, returns first row and
closes result set immediately.
- RowProxy objects are now pickleable, i.e. the object returned
by result.fetchone(), result.fetchall() etc.
- RowProxy no longer has a close() method, as the row no longer
maintains a reference to the parent. Call close() on
the parent ResultProxy instead, or use autoclose.
- ResultProxy internals have been overhauled to greatly reduce
method call counts when fetching columns. Can provide a large
speed improvement (up to more than 100%) when fetching large
result sets. The improvement is larger when fetching columns
that have no type-level processing applied and when using
results as tuples (instead of as dictionaries). Many
thanks to Elixir's Gaëtan de Menten for this dramatic
improvement ! [ticket:1586]
- Databases which rely upon postfetch of "last inserted id"
to get at a generated sequence value (i.e. MySQL, MS-SQL)
now work correctly when there is a composite primary key
where the "autoincrement" column is not the first primary
key column in the table.
- the last_inserted_ids() method has been renamed to the
descriptor "inserted_primary_key".
- setting echo=False on create_engine() now sets the loglevel
to WARN instead of NOTSET. This so that logging can be
disabled for a particular engine even if logging
for "sqlalchemy.engine" is enabled overall. Note that the
default setting of "echo" is `None`. [ticket:1554]
- ConnectionProxy now has wrapper methods for all transaction
lifecycle events, including begin(), rollback(), commit()
begin_nested(), begin_prepared(), prepare(), release_savepoint(),
etc.
- Connection pool logging now uses both INFO and DEBUG
log levels for logging. INFO is for major events such
as invalidated connections, DEBUG for all the acquire/return
logging. `echo_pool` can be False, None, True or "debug"
the same way as `echo` works.
- All pyodbc-dialects now support extra pyodbc-specific
kw arguments 'ansi', 'unicode_results', 'autocommit'.
[ticket:1621]
- the "threadlocal" engine has been rewritten and simplified
and now supports SAVEPOINT operations.
- deprecated or removed
* result.last_inserted_ids() is deprecated. Use
result.inserted_primary_key
* dialect.get_default_schema_name(connection) is now
public via dialect.default_schema_name.
* the "connection" argument from engine.transaction() and
engine.run_callable() is removed - Connection itself
now has those methods. All four methods accept
*args and **kwargs which are passed to the given callable,
as well as the operating connection.
- schema
- the `__contains__()` method of `MetaData` now accepts
strings or `Table` objects as arguments. If given
a `Table`, the argument is converted to `table.key` first,
i.e. "[schemaname.]<tablename>" [ticket:1541]
- deprecated MetaData.connect() and
ThreadLocalMetaData.connect() have been removed - send
the "bind" attribute to bind a metadata.
- deprecated metadata.table_iterator() method removed (use
sorted_tables)
- deprecated PassiveDefault - use DefaultClause.
- the "metadata" argument is removed from DefaultGenerator
and subclasses, but remains locally present on Sequence,
which is a standalone construct in DDL.
- Removed public mutability from Index and Constraint
objects:
- ForeignKeyConstraint.append_element()
- Index.append_column()
- UniqueConstraint.append_column()
- PrimaryKeyConstraint.add()
- PrimaryKeyConstraint.remove()
These should be constructed declaratively (i.e. in one
construction).
- The "start" and "increment" attributes on Sequence now
generate "START WITH" and "INCREMENT BY" by default,
on Oracle and Postgresql. Firebird doesn't support
these keywords right now. [ticket:1545]
- UniqueConstraint, Index, PrimaryKeyConstraint all accept
lists of column names or column objects as arguments.
- Other removed things:
- Table.key (no idea what this was for)
- Table.primary_key is not assignable - use
table.append_constraint(PrimaryKeyConstraint(...))
- Column.bind (get via column.table.bind)
- Column.metadata (get via column.table.metadata)
- Column.sequence (use column.default)
- ForeignKey(constraint=some_parent) (is now private _constraint)
- The use_alter flag on ForeignKey is now a shortcut option
for operations that can be hand-constructed using the
DDL() event system. A side effect of this refactor is
that ForeignKeyConstraint objects with use_alter=True
will *not* be emitted on SQLite, which does not support
ALTER for foreign keys.
- ForeignKey and ForeignKeyConstraint objects now correctly
copy() all their public keyword arguments. [ticket:1605]
- Reflection/Inspection
- Table reflection has been expanded and generalized into
a new API called "sqlalchemy.engine.reflection.Inspector".
The Inspector object provides fine-grained information about
a wide variety of schema information, with room for expansion,
including table names, column names, view definitions, sequences,
indexes, etc.
- Views are now reflectable as ordinary Table objects. The same
Table constructor is used, with the caveat that "effective"
primary and foreign key constraints aren't part of the reflection
results; these have to be specified explicitly if desired.
- The existing autoload=True system now uses Inspector underneath
so that each dialect need only return "raw" data about tables
and other objects - Inspector is the single place that information
is compiled into Table objects so that consistency is at a maximum.
- DDL
- the DDL system has been greatly expanded. the DDL() class
now extends the more generic DDLElement(), which forms the basis
of many new constructs:
- CreateTable()
- DropTable()
- AddConstraint()
- DropConstraint()
- CreateIndex()
- DropIndex()
- CreateSequence()
- DropSequence()
These support "on" and "execute-at()" just like plain DDL()
does. User-defined DDLElement subclasses can be created and
linked to a compiler using the sqlalchemy.ext.compiler extension.
- The signature of the "on" callable passed to DDL() and
DDLElement() is revised as follows:
"ddl" - the DDLElement object itself.
"event" - the string event name.
"target" - previously "schema_item", the Table or
MetaData object triggering the event.
"connection" - the Connection object in use for the operation.
**kw - keyword arguments. In the case of MetaData before/after
create/drop, the list of Table objects for which
CREATE/DROP DDL is to be issued is passed as the kw
argument "tables". This is necessary for metadata-level
DDL that is dependent on the presence of specific tables.
- the "schema_item" attribute of DDL has been renamed to
"target".
- dialect refactor
- Dialect modules are now broken into database dialects
plus DBAPI implementations. Connect URLs are now
preferred to be specified using dialect+driver://...,
i.e. "mysql+mysqldb://scott:tiger@localhost/test". See
the 0.6 documentation for examples.
- the setuptools entrypoint for external dialects is now
called "sqlalchemy.dialects".
- the "owner" keyword argument is removed from Table. Use
"schema" to represent any namespaces to be prepended to
the table name.
- server_version_info becomes a static attribute.
- dialects receive an initialize() event on initial
connection to determine connection properties.
- dialects receive a visit_pool event have an opportunity
to establish pool listeners.
- cached TypeEngine classes are cached per-dialect class
instead of per-dialect.
- new UserDefinedType should be used as a base class for
new types, which preserves the 0.5 behavior of
get_col_spec().
- The result_processor() method of all type classes now
accepts a second argument "coltype", which is the DBAPI
type argument from cursor.description. This argument
can help some types decide on the most efficient processing
of result values.
- Deprecated Dialect.get_params() removed.
- Dialect.get_rowcount() has been renamed to a descriptor
"rowcount", and calls cursor.rowcount directly. Dialects
which need to hardwire a rowcount in for certain calls
should override the method to provide different behavior.
- DefaultRunner and subclasses have been removed. The job
of this object has been simplified and moved into
ExecutionContext. Dialects which support sequences should
add a `fire_sequence()` method to their execution context
implementation. [ticket:1566]
- Functions and operators generated by the compiler now use
(almost) regular dispatch functions of the form
"visit_<opname>" and "visit_<funcname>_fn" to provide
customed processing. This replaces the need to copy the
"functions" and "operators" dictionaries in compiler
subclasses with straightforward visitor methods, and also
allows compiler subclasses complete control over
rendering, as the full _Function or _BinaryExpression
object is passed in.
- postgresql
- New dialects: pg8000, zxjdbc, and pypostgresql
on py3k.
- The "postgres" dialect is now named "postgresql" !
Connection strings look like:
postgresql://scott:tiger@localhost/test
postgresql+pg8000://scott:tiger@localhost/test
The "postgres" name remains for backwards compatiblity
in the following ways:
- There is a "postgres.py" dummy dialect which
allows old URLs to work, i.e.
postgres://scott:tiger@localhost/test
- The "postgres" name can be imported from the old
"databases" module, i.e. "from
sqlalchemy.databases import postgres" as well as
"dialects", "from sqlalchemy.dialects.postgres
import base as pg", will send a deprecation
warning.
- Special expression arguments are now named
"postgresql_returning" and "postgresql_where", but
the older "postgres_returning" and
"postgres_where" names still work with a
deprecation warning.
- "postgresql_where" now accepts SQL expressions which
can also include literals, which will be quoted as needed.
- The psycopg2 dialect now uses psycopg2's "unicode extension"
on all new connections, which allows all String/Text/etc.
types to skip the need to post-process bytestrings into
unicode (an expensive step due to its volume). Other
dialects which return unicode natively (pg8000, zxjdbc)
also skip unicode post-processing.
- Added new ENUM type, which exists as a schema-level
construct and extends the generic Enum type. Automatically
associates itself with tables and their parent metadata
to issue the appropriate CREATE TYPE/DROP TYPE
commands as needed, supports unicode labels, supports
reflection. [ticket:1511]
- INTERVAL supports an optional "precision" argument
corresponding to the argument that PG accepts.
- using new dialect.initialize() feature to set up
version-dependent behavior.
- somewhat better support for % signs in table/column names;
psycopg2 can't handle a bind parameter name of
%(foobar)s however and SQLA doesn't want to add overhead
just to treat that one non-existent use case.
[ticket:1279]
- Inserting NULL into a primary key + foreign key column
will allow the "not null constraint" error to raise,
not an attempt to execute a nonexistent "col_id_seq"
sequence. [ticket:1516]
- autoincrement SELECT statements, i.e. those which
select from a procedure that modifies rows, now work
with server-side cursor mode (the named cursor isn't
used for such statements.)
- postgresql dialect can properly detect pg "devel" version
strings, i.e. "8.5devel" [ticket:1636]
- The psycopg2 now respects the statement option
"stream_results". This option overrides the connection setting
"server_side_cursors". If true, server side cursors will be
used for the statement. If false, they will not be used, even
if "server_side_cursors" is true on the
connection. [ticket:1619]
- mysql
- New dialects: oursql, a new native dialect,
MySQL Connector/Python, a native Python port of MySQLdb,
and of course zxjdbc on Jython.
- VARCHAR/NVARCHAR will not render without a length, raises
an error before passing to MySQL. Doesn't impact
CAST since VARCHAR is not allowed in MySQL CAST anyway,
the dialect renders CHAR/NCHAR in those cases.
- all the _detect_XXX() functions now run once underneath
dialect.initialize()
- somewhat better support for % signs in table/column names;
MySQLdb can't handle % signs in SQL when executemany() is used,
and SQLA doesn't want to add overhead just to treat that one
non-existent use case. [ticket:1279]
- the BINARY and MSBinary types now generate "BINARY" in all
cases. Omitting the "length" parameter will generate
"BINARY" with no length. Use BLOB to generate an unlengthed
binary column.
- the "quoting='quoted'" argument to MSEnum/ENUM is deprecated.
It's best to rely upon the automatic quoting.
- ENUM now subclasses the new generic Enum type, and also handles
unicode values implicitly, if the given labelnames are unicode
objects.
- a column of type TIMESTAMP now defaults to NULL if
"nullable=False" is not passed to Column(), and no default
is present. This is now consistent with all other types,
and in the case of TIMESTAMP explictly renders "NULL"
due to MySQL's "switching" of default nullability
for TIMESTAMP columns. [ticket:1539]
- oracle
- unit tests pass 100% with cx_oracle !
- support for cx_Oracle's "native unicode" mode which does
not require NLS_LANG to be set. Use the latest 5.0.2 or
later of cx_oracle.
- an NCLOB type is added to the base types.
- use_ansi=False won't leak into the FROM/WHERE clause of
a statement that's selecting from a subquery that also
uses JOIN/OUTERJOIN.
- added native INTERVAL type to the dialect. This supports
only the DAY TO SECOND interval type so far due to lack
of support in cx_oracle for YEAR TO MONTH. [ticket:1467]
- usage of the CHAR type results in cx_oracle's
FIXED_CHAR dbapi type being bound to statements.
- the Oracle dialect now features NUMBER which intends
to act justlike Oracle's NUMBER type. It is the primary
numeric type returned by table reflection and attempts
to return Decimal()/float/int based on the precision/scale
parameters. [ticket:885]
- func.char_length is a generic function for LENGTH
- ForeignKey() which includes onupdate=<value> will emit a
warning, not emit ON UPDATE CASCADE which is unsupported
by oracle
- the keys() method of RowProxy() now returns the result
column names *normalized* to be SQLAlchemy case
insensitive names. This means they will be lower case for
case insensitive names, whereas the DBAPI would normally
return them as UPPERCASE names. This allows row keys() to
be compatible with further SQLAlchemy operations.
- using new dialect.initialize() feature to set up
version-dependent behavior.
- using types.BigInteger with Oracle will generate
NUMBER(19) [ticket:1125]
- "case sensitivity" feature will detect an all-lowercase
case-sensitive column name during reflect and add
"quote=True" to the generated Column, so that proper
quoting is maintained.
- firebird
- the keys() method of RowProxy() now returns the result
column names *normalized* to be SQLAlchemy case
insensitive names. This means they will be lower case for
case insensitive names, whereas the DBAPI would normally
return them as UPPERCASE names. This allows row keys() to
be compatible with further SQLAlchemy operations.
- using new dialect.initialize() feature to set up
version-dependent behavior.
- "case sensitivity" feature will detect an all-lowercase
case-sensitive column name during reflect and add
"quote=True" to the generated Column, so that proper
quoting is maintained.
- mssql
- MSSQL + Pyodbc + FreeTDS now works for the most part,
with possible exceptions regarding binary data as well as
unicode schema identifiers.
- the "has_window_funcs" flag is removed. LIMIT/OFFSET
usage will use ROW NUMBER as always, and if on an older
version of SQL Server, the operation fails. The behavior
is exactly the same except the error is raised by SQL
server instead of the dialect, and no flag setting is
required to enable it.
- the "auto_identity_insert" flag is removed. This feature
always takes effect when an INSERT statement overrides a
column that is known to have a sequence on it. As with
"has_window_funcs", if the underlying driver doesn't
support this, then you can't do this operation in any
case, so there's no point in having a flag.
- using new dialect.initialize() feature to set up
version-dependent behavior.
- removed references to sequence which is no longer used.
implicit identities in mssql work the same as implicit
sequences on any other dialects. Explicit sequences are
enabled through the use of "default=Sequence()". See
the MSSQL dialect documentation for more information.
- sqlite
- DATE, TIME and DATETIME types can now take optional storage_format
and regexp argument. storage_format can be used to store those types
using a custom string format. regexp allows to use a custom regular
expression to match string values from the database.
- Time and DateTime types now use by a default a stricter regular
expression to match strings from the database. Use the regexp
argument if you are using data stored in a legacy format.
- __legacy_microseconds__ on SQLite Time and DateTime types is not
supported anymore. You should use the storage_format argument
instead.
- Date, Time and DateTime types are now stricter in what they accept as
bind parameters: Date type only accepts date objects (and datetime
ones, because they inherit from date), Time only accepts time
objects, and DateTime only accepts date and datetime objects.
- Table() supports a keyword argument "sqlite_autoincrement", which
applies the SQLite keyword "AUTOINCREMENT" to the single integer
primary key column when generating DDL. Will prevent generation of
a separate PRIMARY KEY constraint. [ticket:1016]
- new dialects
- postgresql+pg8000
- postgresql+pypostgresql (partial)
- postgresql+zxjdbc
- mysql+pyodbc
- mysql+zxjdbc
- types
- The construction of types within dialects has been totally
overhauled. Dialects now define publically available types
as UPPERCASE names exclusively, and internal implementation
types using underscore identifiers (i.e. are private).
The system by which types are expressed in SQL and DDL
has been moved to the compiler system. This has the
effect that there are much fewer type objects within
most dialects. A detailed document on this architecture
for dialect authors is in
lib/sqlalchemy/dialects/type_migration_guidelines.txt .
- Types no longer make any guesses as to default
parameters. In particular, Numeric, Float, NUMERIC,
FLOAT, DECIMAL don't generate any length or scale unless
specified.
- types.Binary is renamed to types.LargeBinary, it only
produces BLOB, BYTEA, or a similar "long binary" type.
New base BINARY and VARBINARY
types have been added to access these MySQL/MS-SQL specific
types in an agnostic way [ticket:1664].
- String/Text/Unicode types now skip the unicode() check
on each result column value if the dialect has
detected the DBAPI as returning Python unicode objects
natively. This check is issued on first connect
using "SELECT CAST 'some text' AS VARCHAR(10)" or
equivalent, then checking if the returned object
is a Python unicode. This allows vast performance
increases for native-unicode DBAPIs, including
pysqlite/sqlite3, psycopg2, and pg8000.
- Most types result processors have been checked for possible speed
improvements. Specifically, the following generic types have been
optimized, resulting in varying speed improvements:
Unicode, PickleType, Interval, TypeDecorator, Binary.
Also the following dbapi-specific implementations have been improved:
Time, Date and DateTime on Sqlite, ARRAY on Postgresql,
Time on MySQL, Numeric(as_decimal=False) on MySQL, oursql and
pypostgresql, DateTime on cx_oracle and LOB-based types on cx_oracle.
- Reflection of types now returns the exact UPPERCASE
type within types.py, or the UPPERCASE type within
the dialect itself if the type is not a standard SQL
type. This means reflection now returns more accurate
information about reflected types.
- Added a new Enum generic type. Enum is a schema-aware object
to support databases which require specific DDL in order to
use enum or equivalent; in the case of PG it handles the
details of `CREATE TYPE`, and on other databases without
native enum support will by generate VARCHAR + an inline CHECK
constraint to enforce the enum.
[ticket:1109] [ticket:1511]
- The Interval type includes a "native" flag which controls
if native INTERVAL types (postgresql + oracle) are selected
if available, or not. "day_precision" and "second_precision"
arguments are also added which propagate as appropriately
to these native types. Related to [ticket:1467].
- The Boolean type, when used on a backend that doesn't
have native boolean support, will generate a CHECK
constraint "col IN (0, 1)" along with the int/smallint-
based column type. This can be switched off if
desired with create_constraint=False.
Note that MySQL has no native boolean *or* CHECK constraint
support so this feature isn't available on that platform.
[ticket:1589]
- PickleType now uses == for comparison of values when
mutable=True, unless the "comparator" argument with a
comparsion function is specified to the type. Objects
being pickled will be compared based on identity (which
defeats the purpose of mutable=True) if __eq__() is not
overridden or a comparison function is not provided.
- The default "precision" and "scale" arguments of Numeric
and Float have been removed and now default to None.
NUMERIC and FLOAT will be rendered with no numeric
arguments by default unless these values are provided.
- AbstractType.get_search_list() is removed - the games
that was used for are no longer necessary.
- Added a generic BigInteger type, compiles to
BIGINT or NUMBER(19). [ticket:1125]
-ext
- sqlsoup has been overhauled to explicitly support an 0.5 style
session, using autocommit=False, autoflush=True. Default
behavior of SQLSoup now requires the usual usage of commit()
and rollback(), which have been added to its interface. An
explcit Session or scoped_session can be passed to the
constructor, allowing these arguments to be overridden.
- sqlsoup db.<sometable>.update() and delete() now call
query(cls).update() and delete(), respectively.
- sqlsoup now has execute() and connection(), which call upon
the Session methods of those names, ensuring that the bind is
in terms of the SqlSoup object's bind.
- sqlsoup objects no longer have the 'query' attribute - it's
not needed for sqlsoup's usage paradigm and it gets in the
way of a column that is actually named 'query'.
- The signature of the proxy_factory callable passed to
association_proxy is now (lazy_collection, creator,
value_attr, association_proxy), adding a fourth argument
that is the parent AssociationProxy argument. Allows
serializability and subclassing of the built in collections.
[ticket:1259]
- association_proxy now has basic comparator methods .any(),
.has(), .contains(), ==, !=, thanks to Scott Torborg.
[ticket:1372]
- examples
- The "query_cache" examples have been removed, and are replaced
with a fully comprehensive approach that combines the usage of
Beaker with SQLAlchemy. New query options are used to indicate
the caching characteristics of a particular Query, which
can also be invoked deep within an object graph when lazily
loading related objects. See /examples/beaker_caching/README.
0.5.9
=====
- sql
- Fixed erroneous self_group() call in expression package.
[ticket:1661]
0.5.8
=====
- sql
- The copy() method on Column now supports uninitialized,
unnamed Column objects. This allows easy creation of
declarative helpers which place common columns on multiple
subclasses.
- Default generators like Sequence() translate correctly
across a copy() operation.
- Sequence() and other DefaultGenerator objects are accepted
as the value for the "default" and "onupdate" keyword
arguments of Column, in addition to being accepted
positionally.
- Fixed a column arithmetic bug that affected column
correspondence for cloned selectables which contain
free-standing column expressions. This bug is
generally only noticeable when exercising newer
ORM behavior only availble in 0.6 via [ticket:1568],
but is more correct at the SQL expression level
as well. [ticket:1617]
- postgresql
- The extract() function, which was slightly improved in
0.5.7, needed a lot more work to generate the correct
typecast (the typecasts appear to be necessary in PG's
EXTRACT quite a lot of the time). The typecast is
now generated using a rule dictionary based
on PG's documentation for date/time/interval arithmetic.
It also accepts text() constructs again, which was broken
in 0.5.7. [ticket:1647]
- firebird
- Recognize more errors as disconnections. [ticket:1646]
0.5.7
=====
- orm
- contains_eager() now works with the automatically
generated subquery that results when you say
"query(Parent).join(Parent.somejoinedsubclass)", i.e.
when Parent joins to a joined-table-inheritance subclass.
Previously contains_eager() would erroneously add the
subclass table to the query separately producing a
cartesian product. An example is in the ticket
description. [ticket:1543]
- query.options() now only propagate to loaded objects
for potential further sub-loads only for options where
such behavior is relevant, keeping
various unserializable options like those generated
by contains_eager() out of individual instance states.
[ticket:1553]
- Session.execute() now locates table- and
mapper-specific binds based on a passed
in expression which is an insert()/update()/delete()
construct. [ticket:1054]
- Session.merge() now properly overwrites a many-to-one or
uselist=False attribute to None if the attribute
is also None in the given object to be merged.
- Fixed a needless select which would occur when merging
transient objects that contained a null primary key
identifier. [ticket:1618]
- Mutable collection passed to the "extension" attribute
of relation(), column_property() etc. will not be mutated
or shared among multiple instrumentation calls, preventing
duplicate extensions, such as backref populators,
from being inserted into the list.
[ticket:1585]
- Fixed the call to get_committed_value() on CompositeProperty.
[ticket:1504]
- Fixed bug where Query would crash if a join() with no clear
"left" side were called when a non-mapped column entity
appeared in the columns list. [ticket:1602]
- Fixed bug whereby composite columns wouldn't load properly
when configured on a joined-table subclass, introduced in
version 0.5.6 as a result of the fix for [ticket:1480].
[ticket:1616] thx to Scott Torborg.
- The "use get" behavior of many-to-one relations, i.e. that a
lazy load will fallback to the possibly cached query.get()
value, now works across join conditions where the two compared
types are not exactly the same class, but share the same
"affinity" - i.e. Integer and SmallInteger. Also allows
combinations of reflected and non-reflected types to work
with 0.5 style type reflection, such as PGText/Text (note 0.6
reflects types as their generic versions). [ticket:1556]
- Fixed bug in query.update() when passing Cls.attribute
as keys in the value dict and using synchronize_session='expire'
('fetch' in 0.6). [ticket:1436]
- sql
- Fixed bug in two-phase transaction whereby commit() method
didn't set the full state which allows subsequent close()
call to succeed. [ticket:1603]
- Fixed the "numeric" paramstyle, which apparently is the
default paramstyle used by Informixdb.
- Repeat expressions in the columns clause of a select
are deduped based on the identity of each clause element,
not the actual string. This allows positional
elements to render correctly even if they all render
identically, such as "qmark" style bind parameters.
[ticket:1574]
- The cursor associated with connection pool connections
(i.e. _CursorFairy) now proxies `__iter__()` to the
underlying cursor correctly. [ticket:1632]
- types now support an "affinity comparison" operation, i.e.
that an Integer/SmallInteger are "compatible", or
a Text/String, PickleType/Binary, etc. Part of
[ticket:1556].
- Fixed bug preventing alias() of an alias() from being
cloned or adapted (occurs frequently in ORM operations).
[ticket:1641]
- sqlite
- sqlite dialect properly generates CREATE INDEX for a table
that is in an alternate schema. [ticket:1439]
- postgresql
- Added support for reflecting the DOUBLE PRECISION type,
via a new postgres.PGDoublePrecision object.
This is postgresql.DOUBLE_PRECISION in 0.6.
[ticket:1085]
- Added support for reflecting the INTERVAL YEAR TO MONTH
and INTERVAL DAY TO SECOND syntaxes of the INTERVAL
type. [ticket:460]
- Corrected the "has_sequence" query to take current schema,
or explicit sequence-stated schema, into account.
[ticket:1576]
- Fixed the behavior of extract() to apply operator
precedence rules to the "::" operator when applying
the "timestamp" cast - ensures proper parenthesization.
[ticket:1611]
- mssql
- Changed the name of TrustedConnection to
Trusted_Connection when constructing pyodbc connect
arguments [ticket:1561]
- oracle
- The "table_names" dialect function, used by MetaData
.reflect(), omits "index overflow tables", a system
table generated by Oracle when "index only tables"
with overflow are used. These tables aren't accessible
via SQL and can't be reflected. [ticket:1637]
- ext
- A column can be added to a joined-table declarative
superclass after the class has been constructed
(i.e. via class-level attribute assignment), and
the column will be propagated down to
subclasses. [ticket:1570] This is the reverse
situation as that of [ticket:1523], fixed in 0.5.6.
- Fixed a slight inaccuracy in the sharding example.
Comparing equivalence of columns in the ORM is best
accomplished using col1.shares_lineage(col2).
[ticket:1491]
- Removed unused `load()` method from ShardedQuery.
[ticket:1606]
libcassandra is a C++ client API for Apache Cassandra. The standard
front-end (in the sense of "language binding") for writing C++ programs
that use Cassandra.
This module provides an interface the to Cassandra distributed database.
It uses the Thrift interface. This is changing rapidly and supports
version 0.5.0 of Cassandra.
Cassandra is a widely deployed distributed structured database system.
Like Dynamo, Cassandra is eventually consistent. Like BigTable, Cassandra
provides a ColumnFamily-based data model richer than typical key/value
systems.
* Correctly save the position of a pgFrame, per a report from Andreas Laggner
and Dan Halbert.
* Fix the reverse engineering of a function, per a report from Kieran McCusker.
* Fix the xmlTextWriterEndDocument check when saving a favorite.
* Fix an SQL error when changing a parameter for a database, role/user and
a function.
* Fix the display of a type with a specific typmod.
* Select the server choosen with the /s command-line argument.
* Fix the call to the Slony-I storenode function.
* Fix display of the date/time chooser.
* PostgreSQL 8.4 has been released; slonik needs to explicitly recognize it
* Add in slonikconfdump.sh tool, which generates a slonik script to duplicate
the configuration of a Slony-I cluster
* Significant fixes to documentation to reflect 2.0 changes
* Add "OMIT COPY" option to the Slonik "SUBSCRIBE SET" command
* Document process for Slony-I 2.0 upgrade using OMIT COPY option
* Fix to race condition where file descriptor copies were being made at
the wrong time in the scheduler
* Modify "testseqnames" regression test to create a whole bunch of
sequences to validate that things don't break down with either lots of
them, or where IDs are large numbers
* Change minimum debugging level to -1 to allow suppressing logging
* Bug 92 - compression of event numbers had a bug where events >
2^31-1 would overflow the "int" value
* Autovacuum handling changes in PostgreSQL 8.4 - we pull metadata
from pg_class.reloptions, instead of pg_autovacuum
* logswitch fix resolving a potential data loss + statement blocking bug...
* Add LOG_NAME_SUFFIX to altperl tools
Collection.
The Perl 5 module AnyEvent::BDB is an AnyEvent user. Loading it
will install the necessary magic to seamlessly integrate BDB into
AnyEvent, i.e. you no longer need to concern yourself with calling
BDB::poll_cb or any of that stuff.
* PostgreSQL 8.4 compatibility
* Fix - config dump was failing on string entries that were NULL
* Fix - REPAIR CONFIG could have collisions where, when we
load a schema, one entry in sl_table already has an OID value
that incorrectly matches a value that another update is trying to fix.
* Updated release notes to indicate that 2.0 only supports PostgreSQL 8.3+
* Change to configure.ac to allow it to run on autoconf 2.63; there was
something unsuitable about SLONREL_VERSION processing
* Fixes to Makefile for admin guide
* Various fixes to admin guide material
* Added an extra test to Schema name test that validates that things
can operate properly even if the DB lacks a "public" schema
* Fixed bug in tools/start_slon.sh
* Fixed pathname substitutions in a couple of altperl scripts
* Add a test which validates that the cluster schema name is valid;
pgAdminIII allowed setting up cluster names that slonik would refuse
to connect to.
* Revised regression tests to use SYNC/WAIT FOR EVENT instead of
queries that try to coordinate sl_status information with rather
less determinacy...
* Cleanup thread was generating spurious error messages due to
misinterpreting PG return codes. Rectified this, and added a
test in to make sure we're exercising the logic
* Add new configuration parameter ssl_renegotiation_limit to control
how often we do session key renegotiation for an SSL connection
* Fix possible deadlock during backend startup
* Fix possible crashes due to not handling errors during relcache
reload cleanly
* Fix possible crash due to use of dangling pointer to a cached plan
* Fix possible crash due to overenthusiastic invalidation of cached
plan for "ROLLBACK"
* Fix possible crashes when trying to recover from a failure in
subtransaction start
* Fix server memory leak associated with use of savepoints and a
client encoding different from server's encoding
* Fix incorrect WAL data emitted during end-of-recovery cleanup of a
GIST index page split
* Fix bug in WAL redo cleanup method for GIN indexes
* Fix incorrect comparison of scan key in GIN index search
* Make substring() for bit types treat any negative length as meaning
"all the rest of the string"
The previous coding treated only -1 that way, and would produce an
invalid result value for other negative values, possibly leading to
a crash (CVE-2010-0442).
* Fix integer-to-bit-string conversions to handle the first
fractional byte correctly when the output bit width is wider than
the given integer by something other than a multiple of 8 bits
* Fix some cases of pathologically slow regular expression matching
* Fix bug occurring when trying to inline a SQL function that returns
a set of a composite type that contains dropped columns
* Fix bug with trying to update a field of an element of a
composite-type array column
* Avoid failure when "EXPLAIN" has to print a FieldStore or
assignment ArrayRef expression
These cases can arise now that "EXPLAIN VERBOSE" tries to print
plan node target lists.
* Avoid an unnecessary coercion failure in some cases where an
undecorated literal string appears in a subquery within
"UNION"/"INTERSECT"/"EXCEPT"
This fixes a regression for some cases that worked before 8.4.
* Avoid undesirable rowtype compatibility check failures in some
cases where a whole-row Var has a rowtype that contains dropped
columns
* Fix the STOP WAL LOCATION entry in backup history files to report
the next WAL segment's name when the end location is exactly at a
segment boundary
* Always pass the catalog ID to an option validator function
specified in "CREATE FOREIGN DATA WRAPPER"
* Fix some more cases of temporary-file leakage
* Add support for doing FULL JOIN ON FALSE
* Improve constraint exclusion processing of boolean-variable cases,
in particular make it possible to exclude a partition that has a
"bool_column = false" constraint
* Prevent treating an INOUT cast as representing binary compatibility
* Include column name in the message when warning about inability to
grant or revoke column-level privileges
This is more useful than before and helps to prevent confusion when
a "REVOKE" generates multiple messages, which formerly appeared to
be duplicates.
* When reading "pg_hba.conf" and related files, do not treat
@something as a file inclusion request if the @ appears inside
quote marks; also, never treat @ by itself as a file inclusion
request
* Prevent infinite loop on some platforms if a directory is named as
an inclusion target in "pg_hba.conf" and related files
* Fix possible infinite loop if SSL_read or SSL_write fails without
setting errno
This is reportedly possible with some Windows versions of openssl.
* Disallow GSSAPI authentication on local connections, since it
requires a hostname to function correctly
* Protect ecpg against applications freeing strings unexpectedly
* Make ecpg report the proper SQLSTATE if the connection disappears
* Fix translation of cell contents in psql \d output
* Fix psql's numericlocale option to not format strings it shouldn't
in latex and troff output formats
* Fix a small per-query memory leak in psql
* Make psql return the correct exit status (3) when ON_ERROR_STOP and
--single-transaction are both specified and an error occurs during
the implied "COMMIT"
* Fix pg_dump's output of permissions for foreign servers
* Fix possible crash in parallel pg_restore due to out-of-range
dependency IDs
* Fix plpgsql failure in one case where a composite column is set to NULL
* Fix possible failure when calling PL/Perl functions from PL/PerlU
or vice versa
* Add volatile markings in PL/Python to avoid possible
compiler-specific misbehavior
* Ensure PL/Tcl initializes the Tcl interpreter fully
The only known symptom of this oversight is that the Tcl clock
command misbehaves if using Tcl 8.5 or later.
* Prevent ExecutorEnd from being run on portals created within a
failed transaction or subtransaction
This is known to cause issues when using "contrib/auto_explain".
* Prevent crash in "contrib/dblink" when too many key columns are
specified to a dblink_build_sql_* function
* Allow zero-dimensional arrays in "contrib/ltree" operations
* Fix assorted crashes in "contrib/xml2" caused by sloppy memory
management
* Make building of "contrib/xml2" more robust on Windows
* Fix race condition in Windows signal handling
One known symptom of this bug is that rows in pg_listener could be
dropped under heavy load.
* Make the configure script report failure if the C compiler does not
provide a working 64-bit integer datatype
This case has been broken for some time, and no longer seems worth
supporting, so just reject it at configure time instead.
* Update time zone data files to tzdata release 2010e for DST law
changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
* Add new configuration parameter ssl_renegotiation_limit to control
how often we do session key renegotiation for an SSL connection
* Fix possible deadlock during backend startup
* Fix possible crashes due to not handling errors during relcache
reload cleanly
* Fix possible crash due to use of dangling pointer to a cached plan
* Fix possible crashes when trying to recover from a failure in
subtransaction start
* Fix server memory leak associated with use of savepoints and a
client encoding different from server's encoding
* Fix incorrect WAL data emitted during end-of-recovery cleanup of a
GIST index page split
* Make substring() for bit types treat any negative length as meaning
"all the rest of the string"
The previous coding treated only -1 that way, and would produce an
invalid result value for other negative values, possibly leading to
a crash (CVE-2010-0442).
* Fix integer-to-bit-string conversions to handle the first
fractional byte correctly when the output bit width is wider than
the given integer by something other than a multiple of 8 bits
* Fix some cases of pathologically slow regular expression matching
* Fix assorted crashes in xml processing caused by sloppy memory
management
* Fix bug with trying to update a field of an element of a
composite-type array column
* Fix the STOP WAL LOCATION entry in backup history files to report
the next WAL segment's name when the end location is exactly at a
segment boundary
* Fix some more cases of temporary-file leakage
This corrects a problem introduced in the previous minor release.
One case that failed is when a plpgsql function returning set is
called within another function's exception handler.
* Improve constraint exclusion processing of boolean-variable cases,
in particular make it possible to exclude a partition that has a
"bool_column = false" constraint
* When reading "pg_hba.conf" and related files, do not treat
@something as a file inclusion request if the @ appears inside
quote marks; also, never treat @ by itself as a file inclusion
request
* Prevent infinite loop on some platforms if a directory is named as
an inclusion target in "pg_hba.conf" and related files
* Fix possible infinite loop if SSL_read or SSL_write fails without
setting errno
This is reportedly possible with some Windows versions of openssl.
* Disallow GSSAPI authentication on local connections, since it
requires a hostname to function correctly
* Make ecpg report the proper SQLSTATE if the connection disappears
* Fix psql's numericlocale option to not format strings it shouldn't
in latex and troff output formats
* Make psql return the correct exit status (3) when ON_ERROR_STOP and
--single-transaction are both specified and an error occurs during
the implied "COMMIT"
* Fix plpgsql failure in one case where a composite column is set to NULL
* Fix possible failure when calling PL/Perl functions from PL/PerlU
or vice versa
* Add volatile markings in PL/Python to avoid possible
compiler-specific misbehavior
* Ensure PL/Tcl initializes the Tcl interpreter fully
The only known symptom of this oversight is that the Tcl clock
command misbehaves if using Tcl 8.5 or later.
* Prevent crash in "contrib/dblink" when too many key columns are
specified to a dblink_build_sql_* function
* Allow zero-dimensional arrays in "contrib/ltree" operations
* Fix assorted crashes in "contrib/xml2" caused by sloppy memory
management
* Make building of "contrib/xml2" more robust on Windows
* Fix race condition in Windows signal handling
One known symptom of this bug is that rows in pg_listener could be
dropped under heavy load.
* Update time zone data files to tzdata release 2010e for DST law
changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
* Add new configuration parameter ssl_renegotiation_limit to control
how often we do session key renegotiation for an SSL connection
* Fix possible deadlock during backend startup
* Fix possible crashes due to not handling errors during relcache
reload cleanly
* Fix possible crashes when trying to recover from a failure in
subtransaction start
* Fix server memory leak associated with use of savepoints and a
client encoding different from server's encoding
* Fix incorrect WAL data emitted during end-of-recovery cleanup of a
GIST index page split
* Make substring() for bit types treat any negative length as meaning
"all the rest of the string"
The previous coding treated only -1 that way, and would produce an
invalid result value for other negative values, possibly leading to
a crash (CVE-2010-0442).
* Fix integer-to-bit-string conversions to handle the first
fractional byte correctly when the output bit width is wider than
the given integer by something other than a multiple of 8 bits
* Fix some cases of pathologically slow regular expression matching
* Fix the STOP WAL LOCATION entry in backup history files to report
the next WAL segment's name when the end location is exactly at a
segment boundary
* Fix some more cases of temporary-file leakage
* Improve constraint exclusion processing of boolean-variable cases,
in particular make it possible to exclude a partition that has a
"bool_column = false" constraint
* When reading "pg_hba.conf" and related files, do not treat
@something as a file inclusion request if the @ appears inside
quote marks; also, never treat @ by itself as a file inclusion
request
* Prevent infinite loop on some platforms if a directory is named as
an inclusion target in "pg_hba.conf" and related files
* Fix possible infinite loop if SSL_read or SSL_write fails without
setting errno
This is reportedly possible with some Windows versions of openssl.
* Fix psql's numericlocale option to not format strings it shouldn't
in latex and troff output formats
* Make psql return the correct exit status (3) when ON_ERROR_STOP and
--single-transaction are both specified and an error occurs during
the implied "COMMIT"
* Fix plpgsql failure in one case where a composite column is set to NULL
* Fix possible failure when calling PL/Perl functions from PL/PerlU
or vice versa
* Add volatile markings in PL/Python to avoid possible
compiler-specific misbehavior
* Ensure PL/Tcl initializes the Tcl interpreter fully
The only known symptom of this oversight is that the Tcl clock
command misbehaves if using Tcl 8.5 or later.
* Prevent crash in "contrib/dblink" when too many key columns are
specified to a dblink_build_sql_* function
* Fix assorted crashes in "contrib/xml2" caused by sloppy memory
management
* Make building of "contrib/xml2" more robust on Windows
* Fix race condition in Windows signal handling
One known symptom of this bug is that rows in pg_listener could be
dropped under heavy load.
* Update time zone data files to tzdata release 2010e for DST law
changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
(approval to update during freeze by agc@)
- 0.39 | 2010-01-11
- Dropped (database postgres) procs
- pg-lo-get-connection
- pg-get-client-data
- pg-set-client-data!
These were pre-announced in Guile-PG 0.38 (2009-06-22) NEWS.
- Proc `(database postgres) pg-parameter-status' no longer takes keyword
This was pre-announced in Guile-PG 0.38 (2009-06-22) NEWS.
- Maintenance uses autoconf 2.65, automake 1.11, libtool 2.2.6b
- 0.38 | 2009-06-22
- Support for PostgreSQL 7.3 and earlier dropped
Sorry, this was not pre-announced. Note that the subsequent
version, i.e. PostgreSQL 7.4, was released 2003-11-17, over five
years ago.
- Dropped (database postgres) proc: pg-get-connection
This was pre-announced in 0.37 (2008-05-24) NEWS.
- External rep no longer includes "serial number"
- Connection
- Result
These were pre-announced in 0.37 (2008-05-24) NEWS.
- Planned retirement
- pg-lo-get-connection
- pg-get-client-data
- pg-set-client-data!
These (database postgres) procs provide or rely on associations
that can better be expressed using normal Scheme facilities such
as object properties, hash tables, etc, and thus are deemed a
redundant maintenance burden; they WILL BE REMOVED by 2009-12-31.
- Proc `(database postgres) pg-parameter-status' takes symbol `parm'
These are equivalent:
(pg-parameter-status CONN #:session_authorization)
(pg-parameter-status CONN 'session_authorization)
Note, however, that support for keyword `parm' is a misfeature,
and WILL BE REMOVED by 2009-12-31.
- Proc `(database postgres-qcons) sql-quote' more standards compliant
Previously, this did single-quote escaping by inserting a
backslash character prior to every single-quote. The result is
acceptable by PostgreSQL, but is not standards compliant. Now,
it does the escaping by doubling each single-quote, which is
standards compliant and less prone to trigger warnings from the
more recent PostgreSQL versions (8.2 and later).
bef: (sql-quote "a'b") => "'a\\'b'"
now: (sql-quote "a'b") => "'a''b'"
- Changes to `pgtable-manager' (and thus `pgtable-worker')
- Support for DEFAULT
You can now use the keyword #:DEFAULT to specify DEFAULT as the
value to insert into a table, or to update a column. Indeed, for
column values, any keyword now expands to its name (sans `#:').
- #:insert-values no longer filters "serial"
Previously, columns with "serial" type were filtered, so that it
was possible to #:insert-values specifying only values for the
other columns. Now, such usage raises a "column count mismatch"
error; you must explicitly use #:DEFAULT. For example, given a
table with column types "text", "serial", "text":
bef: (W #:insert-values "foo" "bar") => ok
now: (W #:insert-values "foo" "bar") => error
(W #:insert-values "foo" #:DEFAULT "bar") => ok
Although technically speaking the new behavior is incompatible,
the previous behavior was never documented (secret misfeature),
so the impact on your code is likely to be zero (no worries).
- Connection object xrep omits "port" if "host" is a socket dir
When the connection is Unix-domain (i.e., the "host" is a string
that begins with slash that names a directory), the concept of
"port" makes no sense.
- Manual table-of-contents moved forward
It used to be (strangely but perhaps following some outdated
convention) at the end of the document.
- New (database postgres) procs
- pg-mblen
While we wait for Guile to go multibyte (and stay there), this
is a small building-block that eases "mostly ignorant" string
processing.
- pg-server-version
This returns an integer representation of the server version of
a connection, or `#f' if the connection is closed.
- New (database postgres-resx) proc: object<-result
This is useful for `SELECT EXPR;' where the result tuple
consists of one row and one column.
- Maintenance uses autoconf 2.63, automake 1.11, libtool 2.2.6
pkgsrc changes:
- Add license definition
Upstream changes:
1.12 - Tue Feb 23 16:44:10 2010
Promote to a full release from the latest development cycle.
1.011 - 2009-08-17 Tim Adye <T.J.Adye@rl.ac.uk>
* Palm/Datebook.pm: add support for the newer-format Palm Calendar
databases.
1.11_01 - Sat Jan 2 12:16:38 2010
Tim Adye <T.J.Adye@rl.ac.uk>: Palm/Datebook.pm: add support
for time zone entries.
1.009 - 2007-07-30 brian d foy <bdfoy@cpan.org>
* cleaned up the pod coverage test.
* add License and Author stuff to the distro
1.006 - 2007-01-15 brian d foy <bdfoy@cpan.org>
* chromatic sent me some changes living in another distro
(p5-Palm-1.004_000). It catches up 1.003_000 for all of the
changes since November 2002 listed in this file.
1.005 - 2007-01-13 brian d foy <bdfoy@cpan.org>
* Cleansed the dist to make it installable by CPAN tools.
It just needs a version without a _ in it.
(http://rt.cpan.org/Ticket/Display.html?id=12837)
Upstream changes:
1.42 Tue 16 Mar 2010
- Signficantly expanded documentation on the per-table class
and the methods created for it (Breno G. de Oliveira)
pkgsrc changes:
- Adjust dependencies
Upstream changes:
2010-03-16 0.28 H.Merijn Brand
* Remove t/00_minimumversion.t from distribution
* Dropped YAML spec to 1.0
* Sync up with SQL::Statement 1.25
NOTE: Internals of both modules changed. They will change again for
SQL::Statement 2.0
2010-02-17 0.27 H.Merijn Brand
* Upped copyright to 2010
* Doc-fix typo in link (Detlef Pilzecker)
* Doc-fix small typo's
2009-11-10 0.26 H.Merijn Brand
* Adjustments for windows (RT#50544)
* Mark all non-\w chars illegal in field and table names
* Fix field types after execute (RT#51090, vgdoqd)
* Fix for NULL joins. Requires SQL::Statement 1.23 (RT#43010, JBAZIK)
pkgsrc changes:
- Adjust dependencies (mark fullfilled by perl CORE)
Upstream changes:
Version 1.25, release March 15th, 2010
----------------------------------------------
[Bug fixes]
* Keep org_table_names with schema information to allow derived
table classes to handle as it seems reasonable there
* Separate columns with "\0" in multi-column aggregation to be able to
difference between ('1','1foo') and ('11','foo')
[Misc]
* More resources added to META.yml
Version 1.24, release March 15th, 2010
----------------------------------------------
[Misc]
* Ignore *.rej in MANIFEST.SKIP (fixes RT #52081 reported by
Lars Thegler)
[Bug fixes]
* Add missing import of _INSTANCE in SQL::Statement::Function::NumericEval
fixes RT #52356 - reported by Detlef Pilzecker)
* Fix wrongly discarded DISTINCT clause (RT#53186)
[Improvements]
* Fix parsing errors of plain numbers (RT#16931)
* Fix parsing errors of nested calculation / functions (RT#16931, RT#52356)
* Rewrite result calculation of aggregation functions (simplify code,
speed up)
* Upgrade Makefile.PL (patch from Alexandr Ciornii) to handle different
EU::MM versions and abilities properly
* Update documentation to show how 'column_defs' and SQL::Statement::Term
instances shall be used
* Introduce SQL::Dialect::Role providing ini-style data access to
SQL::Dialects (patch from Michael Schwern)
[Things that may break your code]
* SQL::Parser now didn't deliver a struct containing 'column_names',
'computed_columns' and 'set_functions' - it's combined into one member
'column_defs'.
* Minimum required perl version is now 5.8 - upcoming next version of DBI
requires perl 5.8, too - and I could simplify some code that's why
Version 1.23, release November 20th, 2009
----------------------------------------------
[Misc]
* Applied patch from Marc Espie which fixes several orthographic
errors in SQL::Statement::Syntax documentation.
* Added a fixed version of test reported via RT #34121
[Bug fixes]
* Fix an issue in UPDATE command which 'shift's the values from
the list of parameters which causes there're no more parameters
left after first row get's updated (Fixes RT #50788)
* Fix aggregate function handling of new code since 1.21_01
* Correct handling of DISTINCT in aggregate functions
[Improvements]
* Add support for tables/columns starting with '_' for CSV and AnyData,
which is usually forbidden by ANSI SQL
* Add support for inserting multiple lines with one statement
(fixes RT #31730)
* Handle ANSI 'IS NULL' and CVS/AnyData 'IS NULL' different
[Things that may break your code]
* row_value now expects up to two arguments
pkgsrc changes:
- Add license definition
Upstream changes:
0.42 13th March 2010
* Added $db->Env method to retrieve the environment object from a
database object.
* Get the tied interface to use truncate in the CLEAR method if
using a new enough version of Berkeley DB.
2010-01-01 Mikio Hirabayashi <hirarin@gmail.com>
* ttserver.c (proc): a bug related to initialization of the skeleton was fixed.
* tculog.c (tculogadbaddint, tculogadbadddouble): efficiency of zero was improved.
* tcrmgr.c (runput, procput): addint and adddouble were added.
- Release: 1.1.40
2010-01-26 Mikio Hirabayashi <hirarin@gmail.com>
* tcutil.c (tcmapout): a useless condition was fixed.
* tchdb.h, tcbdb.h: some members have volatile flag now.
- Release: 1.4.43
2010-01-01 Mikio Hirabayashi <hirarin@gmail.com>
* tchdb.c (tchdbnew, tchdbsetmutex): a useless lock object was removed.
* tcutil.c (tcsysinfo): CPU information was added.
* tchmgr.c (runput, procput): addint and adddouble ouput the result now.
* tcbmgr.c (runput, procput): addint and adddouble ouput the result now.
* tcfmgr.c (runput, procput): addint and adddouble ouput the result now.
- Release: 1.4.42
* Added the secure_delete pragma
* Added the sqlite3_compileoption_used() and sqlite3_compileoption_get()
interfaces as well as the compile_options pragma and the
sqlite_compileoption_used() and sqlite_compileoption_get() SQL functions.
* Added the sqlite3_log() interface together with the SQLITE_CONFIG_LOG verb
to sqlite3_config(). The ".log" command is added to the Command Line Interface
* Improvements to FTS3
* Improvements and bug-fixes in support for SQLITE_OMIT_FLOATING_POINT
* The integrity_check pragma is enhanced to detect out-of-order rowids
* The ".genfkey" operator has been removed from the Command Line Interface
* Updates to the co-hosted Lemon LALR(1) parser generator. (These updates did not affect SQLite.)
* Various minor bug fixes and performance enhancements
Bug Fixes
* #410, update embedded bbox when applying ST_SetPoint,
ST_AddPoint ST_RemovePoint to a linestring
(Paul Ramsey)
* #411, allow dumping tables with invalid geometries
(Sandro Santilli, for Regione Toscana-SIGTA)
* #414, include geography_columns view when running upgrade scripts
(Paul Ramsey)
* #419, allow support for multilinestring in ST_Line_Substring
(Paul Ramsey, for Lidwala Consulting Engineers)
* #421, fix computed string length in ST_AsGML()
(Olivier Courtin)
* #441, fix GML generation with heterogeneous collections
(Olivier Courtin)
* #443, incorrect coordinate reversal in GML 3 generation
(Olivier Courtin)
* #450, wrong area calculation for geography features that cross
the date line
(Paul Ramsey)
* Ensure support for upcoming 9.0 PgSQL release
(Paul Ramsey)
(2 versions); packaged for wip by Aleksey Cheusov.
libdbi implements a database-independent abstraction layer in C, similar to
the DBI/DBD layer in Perl. Writing one generic set of code, programmers can
leverage the power of multiple databases and multiple simultaneous database
connections by using this framework.
Upstream changes:
0.11 1 Dec 2009
* fix order by logic to check for cxc-m2m param (still a TODO item)
* refactor tests to put Root methods in their own controller
pkgsrc changes:
- Adjust dependencies
Upstream changes:
0.40 Wed Feb 3 23:12:16 EST 2010
- fix Replicated trait deps
0.39 Mon Feb 1 10:08:51 EST 2010
- better 'on_connect_do' parsing in Helper
0.38 Fri Jan 15 06:41:24 EST 2010
- re-add the 'storage' proxy method
0.37 Thu Jan 14 10:20:43 EST 2010
- support single replicant hashref from config
0.36 Thu Jan 14 09:21:10 EST 2010
- upgrading a schema to use_namespaces=1 will also turn on
components=InflateColumn::DateTime (the default.)
0.35 Sun Dec 27 04:50:53 EST 2009
- forgot to edit Changes on last upload
0.34 Sun Dec 27 03:49:34 EST 2009
- move schema proxying into SchemaProxy trait which is off by default
0.33 Sat Dec 26 08:04:49 EST 2009
- fix test failure in 05testapp.t when env var not set (RT#53101)
0.32 Wed Dec 23 01:22:06 EST 2009
- Move documentation on setting up authentication into its own section
for clarity.
- Other misc documentation enhancements to make the docs more clear
about the important things to know.
- Convert Authentication Plugin configuration example to new style.
- Support Coderefs in loader options for helper
(patch from Ozum Eldogan ozum@ozum.net)
pkgsrc changes:
- Adjust dependencies
Upstream changes:
0.48 29 Jan 2009
* fix bug with create() introduced in 0.47.
* remove explicit dep on Class::C3 per RT54097
0.47 15 Jan 2009
* fix tutorial per RT#53396
* fix bug in base Controller->fetch() where multiple PKs where one value is null were slipping
through. Reported by Adam Mackler.
0.46 20 Nov 2009
* tweek Model::File _find to avoid multiple loops over the same list of root dirs.
* tweek Model::File->search to read() each object like fetch() does.
* add dep on Sort::SQL 0.07 to avoid sql injection (RT#51777)
Upstream changes:
1.41 Tue 9 Mar 2010
- Added the root ->connected method to allow for some
light introspection in unusual situations (such as
knowing if it's safe to spawn an off-the-books
->connect'tion, or to detect if we are in a transaction).
- Added documentation for the ->connect method, with suitably
strident warnings about the dangers of deadlocking.
pkgsrc changes:
- Add license definition
- Adjust dependency (Test::More 0.88 is satisfied by available lang/perl5)
Upstream changes:
1.0016 Feb 05 22:10:00 2010 PST
- (This version is compatible with 1.0015)
- New caveat in the docs explaining stale references (RT#42129)
- All included modules now have the same version in META.yml, so
the CPAN shell will no longer try to downgrade.
- Fixed bug in clear() for hashes (RT#50541)
pgsql's Makefile.shlib are patched around. ('make test' passes on
netbsd-5/i386 with postgresql84.)
This is a major release adding a significant number of new features including:
* New "geography" type for managing geodetic (lat/lon) data
* Performance-enhanced distance calculations
* GML and KML format readers
* Improved shape loading GUI
* And more!
Release Notes
Important Changes
* =~ operator now indicates bounding box equality, not feature equality
* GEOS 3.1 is now the minimum accepted version of GEOS
* GEOS 3.2 is needed if you want to use enhanced buffering features and ST_HausdorffDistance
* GEOS, LibXML2, and Proj4 are now mandatory dependencies
New Features
* Added Hausdorff distance calculations (#209) (Vincent Picavet)
* Added parameters argument to ST_Buffer operation to support one-sided buffering and other buffering styles (Sandro Santilli)
* Performance improvements to ST_Distance (Nicklas Avén)
* Addition of other Distance related visualization and analysis functions (Nicklas Avén)
* ST_ClosestPoint
* ST_DFullyWithin
* ST_LongestLine
* ST_MaxDistance
* ST_ShortestLine
* KML, GML input via ST_GeomFromGML and ST_GeomFromKML (Olivier Courtin)
* Extract homogeneous collection with ST_CollectionExtract (Paul Ramsey)
* Add measure values to existing linestring with ST_AddMeasure (Paul Ramsey)
* History table implementation in utils (George Silva)
* Win32 support and improvement of core shp2pgsql-gui (Mark Cave-Ayland)
* In place 'make check' support (Paul Ramsey)
* Geography type and supporting functions
o Spherical algorithms from Dave Skea
o Object/index implementation from Paul Ramsey
o Selectivitiy implementation from Mark Cave-Ayland
o Serializations (KML, GML, JSON) from Olivier Courtin
o ST_Area, ST_Distance, ST_DWithin, ST_GeogFromText, ST_GeogFromWKB, ST_Intersects, ST_Covers, ST_Buffer
* Documentation updates and improvements (Regina Obe, Kevin Neufeld)
* Testing and quality control (Regina Obe)
* PostGIS 1.5 support PostgreSQL 8.5 trunk (Guillaume Lelarge)
* Many, many other changes
* Suppoer mysql4 and mysql5 (but not mysql51 because of API change).
* Install supporting files.
Changes for 0.9.8
-----------------
* Created a conditional for mysql_shutdown to check for the existance
of SHUTDOWN_DEFAULT in order to work with older mysql client libraries
* Changed requirement for qpopmenu.h to qpopupmenu.h in include/CProperties.h
and src/CTableTools.cpp
* Added /usr/share/qt3 to the list of places to look for qt3 (fixes Debian
problems)
Notes for 0.9.7
----------------
This is a development release. Henceforth, version numbers will follow the Linux
kernel standard wherein odd numbered releases (such as 0.9.7) refer to
development releases and even numbered releases (such as 0.9.8) refer to stable
releases.
Users connecting to or using MySQL 5 libraries should be using this release.
Users still connecting only to MySQL 4 or lower servers should continue using
version 0.9.4. This is an issue which will be addressed by version 0.9.8 and,
if that version is available at the time you read this, that version should be
used instead.
Changes for 0.9.7
-----------------
* Changed the call to mysql_shutdown to include SHUTDOWN_DEFAULT as required
by MySQL >= 5 client libraries in CMySQL.cpp
* Repaired default_table assignment in CQueryWindow.cpp
embedded server (by PKG_OPTION).
For release MySQL 5.1 specific information please refer:
http://dev.mysql.com/doc/refman/5.1/en/mysql-nutshell.html
MySQL is a SQL (Structured Query Language) database server. SQL is the
most popular database language in the world. MySQL is a client-server
implementation that consists of a server daemon `mysqld' and many
different client programs/libraries.
The main goals of MySQL are speed and robustness.
The base upon which MySQL is built is a set of routines that have been
used in a highly demanding production environment for many years. While
MySQL is still in development it already offers a rich and highly useful
function set.
The official way to pronounce 'MySQL' is 'My Ess Que Ell' (Not MY-SEQUEL).
This package contains the MySQL server programs and libraries including
embedded server (by PKG_OPTION).
For release MySQL 5.1 specific information please refer:
http://dev.mysql.com/doc/refman/5.1/en/mysql-nutshell.html
MySQL is a SQL (Structured Query Language) database server. SQL is the
most popular database language in the world. MySQL is a client-server
implementation that consists of a server daemon `mysqld' and many
different client programs/libraries.
The main goals of MySQL are speed and robustness.
The base upon which MySQL is built is a set of routines that have been
used in a highly demanding production environment for many years. While
MySQL is still in development it already offers a rich and highly useful
function set.
The official way to pronounce 'MySQL' is 'My Ess Que Ell' (Not MY-SEQUEL).
This package contains the MySQL client programs and libraries.
pkgsrc changes:
- Adjust dependencies
Upstream changes:
0.08120 2010-02-24 08:58:00 (UTC)
- Make sure possibly overwritten deployment_statements methods in
schemas get called on $schema->deploy
- Fix count() with group_by aliased-function resultsets
- with_deferred_fk_checks() Oracle support
- Massive refactor and cleanup of primary key handling
- Fixed regression losing custom result_class (really this time)
(RT#54697)
- Fixed regression in DBIC SQLT::Parser failing with a classname
(as opposed to a schema object)
- Changes to Storage::DBI::Oracle to accomodate changes in latest
SQL::Translator (quote handling)
- Make sure deployment_statements is per-storage overridable
- Fix dbicadmin's (lack of) POD
Upstream changes:
# ----------------------------------------------------------
# 0.11005 2010-02-24
# ----------------------------------------------------------
* Fix Parser::DBI::Oracle reading too many tables (RT#49413)
* Fix Parser::MySQL tripping up on PRIMARY KEY ... USING (currently value is ignored) (RT#50468)
* Fix runaway debug trace (RT#52276)
* Fix Parser::PostgreSQL choking on commit; statements in DDL (#RT52277)
* Producer::Oracle now respects quote_field|table_names, and
no longer does name munging of reserved table names
* Producer::Oracle now correctly outputs databse-unique index names
PHP's oracle extension removed from PHP version 5.1.0 and this extension
was kept for php4 package.
Since php4 package removed, this package is stale now.
Maybe php-oci8 could be used instead of this package.
pkgsrc changes:
- Add license definition
- Adjust dependencies
Upstream changes:
1.08 February 3rd, 2010
- Fix bug to allow DBI in startup.pl etc again
Bug report from Adam Prime, patch from Lubomir Rintel
https://rt.cpan.org/Public/Bug/Display.html?id=36346
Upstream changes:
0.17 20 Feb 2010
* fix a bug affecting generated postamble code in RDBO classes.
Reported by Adam Mackler.
* map RDBO column remarks() to RHTMLO field description().
pkgsrc changes:
- Adjust dependencies
Upstream changes:
0.05003 2010-02-20 05:19:51
- support for custom_column_info, datetime_timezone and datetime_locale
(rbo)
- improve parsing of SQLite tables when a column definition
spans multiple lines (hobbs)
- fix missing trailing _id stripping for some relationship
names (rbuels)
- fixed accessor POD bug, was not dereferencing scalar refs
before printing (rbuels)