Peter Rabbitson [Wed, 9 Mar 2011 10:21:36 +0000]
Overhaul populate code - fix \[] support and exotic values (arrays, etc.)
In addition cleanup populate() error messages a bit
Rafael Kitover [Sun, 23 Jan 2011 12:03:13 +0000]
Comprehensive MSAccess support over both DBD::ODBC and DBD::ADO
Peter Rabbitson [Wed, 30 Mar 2011 11:11:28 +0000]
Fix/clarify Oracle decision whether to use WhereJoins
Remove the suggestion that 8i supports ANSI but is slow - leave it
as a test only (the docs are confusing enough already)
Peter Rabbitson [Wed, 30 Mar 2011 11:03:25 +0000]
Fix (and test) quoting with the older style of WhereJoins used by Oracle
Also simplify the join overload process a bit
Arthur Axel 'fREW' Schmidt [Sat, 26 Mar 2011 01:05:55 +0000]
fix from => $rs->as_query
Rafael Kitover [Mon, 28 Mar 2011 08:34:23 +0000]
make the DB2/AS400 storage a subclass of DB2, do RNO detection, fix FetchFirst
Peter Rabbitson [Tue, 29 Mar 2011 23:31:20 +0000]
Several 5.8.old fixes
* Stop running threading tests on < 5.8.5 - DBD::Pg is *really* unhappy there
* Switch t/55namespaces_cleaned.t to Package::Stash - the hand-written syntax
breaks 5.8.1 and I'm lazy (and it's an implicit dep anyway)
* Stop auto-cleaning the imports of DBIC::Carp - it segfaults all over the
place on 5.8.1 (will revisit when I rewrite n::c in pure-perl)
Peter Rabbitson [Wed, 26 Jan 2011 13:03:22 +0000]
Massive rewrite of bind handling, and overall simplification of ::Storage::DBI
There's no practical way to split this into smaller pieces so here it goes:
Bind attribute handling was badly integrated into dbic almost from the
start. Until now the only information about a value was encoded as the
column name contained as the first element of the bind arrayref. The
column name was then resolved to the proper colinfo (deep in ::Storage::DBI)
and then a match was ran on the datatype to try to find an appropriate
set of bind attributes. Besides being fragile and inefficient, this
method also broke down completely when:
* No column name could be associated with a bind (arguments to complex
literal functions)
* as_query results would encode the column names that can no longer
be resolved since the inner result sources are no longer visible
To fix this all up and provide more flexibility the standard [ $col => $val ]
was replaced with [ \%args => $val ]. The format of \%args is currently:
{
dbd_attrs => '
If present (in any form) this is what is being passed directly to
bind_param. Note that different DBD's expect different bind args,
e.g. DBD::SQLite takes a single numerical type, while DBD::Pg takes
a hashref if bind options. If this is specified all other bind
options described below are ignored
',
sqlt_datatype => '
If present it is used to infer the actual bind attribute by passing
to $resolved_storage->bind_attribute_by_data_type(). Note that the
data type is somewhat freeform (hence the sqlt_ prefix) - currently
drivers are expected to dtrt when given a common datatype name (not
ideal, but that's what we got at this point). Defaults to the
"data_type" from the add_columns colinfo.
',
sqlt_size => '
Currently used to correctly allocate buffers for bind_param_inout().
Defaults to "size" from the add_columns colinfo, or to a sensible value
based on the "data_type"
',
dbic_colname => '
Used to fill in missing sqlt_datatype and sqlt_size attributes (if
they are explicitly specified they are never overriden). Also used
by some weird DBDs where the column name should be available at
bind_param time (hello Oracle).
',
}
For backcompat/convenience the following shortcuts are supported:
[ $name => $val ] === [ { dbic_colname => $name }, $val ]
[ \$dt => $val ] === [ { sqlt_datatype => $dt }, $val ]
[ undef => $val ] === [ {}, $val ]
( pending in the next patch: [ $val ] === [ {}, $val ] )
On each passage through the storages (either for execute or for as_query
formatting) the information is filled in whenever available, so that by
the time the final binds_param takes place ::Storage::DBI::_dbi_attrs_for_bind
has all the available information about a particular bind value (no matter
where it came from).
A side efect of this is that as_query now always returns resolved
[ \%args => $val ] forms of bind values (hence the huge amount of test changes
in this patchset). While it should not be a major concern, it could
potentially throw off tests that expect a specific output of as_query. If
this becomes a problem a "compat mode as_query" flag will be introduced asap.
Additional changes in this patchset are:
* The signatures of pretty much the entire execution chain changed. Luckily
everything that required changing was private. All drivers were adjusted
appropriately (though something could have been missed). Affected methods
on ::Storage::DBI are:
_prep_for_execute
_dbh_execute
_execute
_select_args_to_query
_max_column_bytesize
additionally the invocation of _prep_for_execute moved from _dbh_execute
to _execute, and the return of _select_args also changed
* source_bind_attributes was deprecated. Luckily it was never documented in
the main documentation. Sadly it was documented in individual storage
drivers. As such it was necessary to provide a compat shim that would invoke
the thing if it is detected (with the approproate warning)
* _fix_bind_params was renamed to _format_for_trace
Peter Rabbitson [Mon, 28 Mar 2011 11:45:40 +0000]
Privatize _sth
Peter Rabbitson [Wed, 9 Mar 2011 12:59:07 +0000]
Shuffle tests around (no changes)
Peter Rabbitson [Sat, 12 Mar 2011 23:47:40 +0000]
Correctly select the root source of the inner part of a complex prefetch
Also better diagnostics to aid source mis-application during colinfo
resolution
Peter Rabbitson [Mon, 28 Mar 2011 13:21:35 +0000]
Stop flooding the console with garbage on pg blob errors
Peter Rabbitson [Fri, 14 Jan 2011 10:52:02 +0000]
Ditch Carp::Clan for our own thing
Peter Rabbitson [Fri, 25 Mar 2011 23:10:13 +0000]
Fix syntax error that slipped into
9c1700e3
Mateu X Hunter [Sun, 20 Mar 2011 00:20:21 +0000]
use relationship bridge consistently w/ many_to_many speak
Peter Rabbitson [Tue, 15 Mar 2011 23:00:16 +0000]
Delete duplicated test (somehow 1:1 with t/search/subquery.t)
Peter Rabbitson [Sun, 20 Mar 2011 11:25:55 +0000]
Fix long relationship/column names in oracle for good
Do not pass in the relname as "keyword" anymore - it will interfere
with the aliasing since ::Storage::Oracle and SQLMaker::Oracle will
produce different results
Peter Rabbitson [Fri, 18 Mar 2011 09:07:15 +0000]
Fixup SQLA monkeypatch in anticipation of new SQLA version
Peter Rabbitson [Sat, 19 Mar 2011 11:40:45 +0000]
Cleanup that namespacing mess
Peter Rabbitson [Fri, 18 Mar 2011 09:07:15 +0000]
Remove significance of some test envvars (and add a test to trip up downstream packagers)
Peter Rabbitson [Thu, 17 Mar 2011 16:47:28 +0000]
Remove test prototype that was never completed further than a loop calling ok(1)
Makes DBICTEST_STORAGE_STRESS redundant
Peter Rabbitson [Sat, 12 Mar 2011 22:58:13 +0000]
Add startup sanity check of the ::DBI::Replicated method dispatch tables
In order to do this during testing only introduce the ::_ENV_::DBICTEST macro,
and also make sure DBICTest::RunMode is loaded before the macro is set
(therefore the multiple test changes)
Peter Rabbitson [Fri, 11 Mar 2011 17:54:25 +0000]
Lazily load DBD::Pg in ::Storage::DBI::Pg, only when typing is required
Rob Kinyon [Sat, 12 Mar 2011 03:34:28 +0000]
Fixed bug in _strip_cond_qualifiers, patch generously by Grant Street Group.
Matt Phillips [Thu, 17 Mar 2011 01:00:44 +0000]
Fixed: RS example code was broken
Robert Buels [Sat, 12 Mar 2011 23:06:39 +0000]
cascading delete on a nonexistent relation should warn instead of
dieing uninformatively.
Robert Buels [Wed, 9 Mar 2011 16:53:45 +0000]
reorganize docs for load_namespaces method
Jason Mills [Fri, 11 Mar 2011 01:16:53 +0000]
Fix 'exit via next' warning from DBIx::Class::ResultSource::sequence
Peter Rabbitson [Tue, 8 Mar 2011 12:58:38 +0000]
Make sure the component_class autoloader works across module reloads
(works around corner cases from
db29433c)
Rafael Kitover [Mon, 7 Mar 2011 04:22:57 +0000]
fixup Firebird ODBC driver for DBD::ODBC 1.29
Peter Rabbitson [Tue, 1 Mar 2011 08:14:55 +0000]
Switch sql_maker_class and datetime_parser_type to component_class accessors
Justin Hunter [Mon, 28 Feb 2011 23:28:53 +0000]
Switch cursor accessor to CAG's component_class type for autoloading
Rafael Kitover [Tue, 1 Mar 2011 04:02:15 +0000]
create file_columns table when DBICTEST_SQLT_DEPLOY env var is not set
Breakage introduced in 123df52
Jonathan Yu [Fri, 25 Feb 2011 12:11:29 +0000]
Minor POD spelling and link fixes
* Use proper L<Pod::Name/Section> style, rather than the incorrect
L<Pod::Name#Section> style (thanks mst)
* Some minor spelling errors picked up by Lintian
Matt Phillips [Sat, 26 Feb 2011 20:35:42 +0000]
Modified: small doc patch explaining a gotcha
Peter Rabbitson [Tue, 1 Feb 2011 08:12:20 +0000]
Extra test for mysql_auto_reconnect and fork
Peter Rabbitson [Tue, 22 Feb 2011 16:20:41 +0000]
Lazy-load as many of the non-essential modules as possible
Peter Rabbitson [Mon, 31 Jan 2011 12:29:53 +0000]
Cleanup C3 handling, require updated Class::C3::Componentised
Peter Rabbitson [Wed, 23 Feb 2011 13:10:24 +0000]
Fix quote_names assumption of DBD::* availability
Peter Rabbitson [Tue, 22 Feb 2011 12:52:58 +0000]
Move the test bits related to deprecated IC::File out of the main testschema
Peter Rabbitson [Fri, 21 Jan 2011 17:49:57 +0000]
Make pg tests cleanup better after themselves
Peter Rabbitson [Tue, 15 Feb 2011 11:36:35 +0000]
Fix rev_rel_info on prototype sources
Peter Rabbitson [Tue, 15 Feb 2011 09:44:05 +0000]
Simplify implementation of reverse_relationship_info (no func. changes)
The only difference is getting rid of an arrayref support condition, but
it is not supported at the top level anyway
Rafael Kitover [Tue, 8 Feb 2011 15:57:35 +0000]
Temporarily monkeypatch DBD::ADO to fix warnings during global destruction
Rafael Kitover [Sun, 6 Feb 2011 11:12:54 +0000]
rewrite SQLAnywhere GUID normalizing as a cursor_class (formerly a _select_args hack)
Rafael Kitover [Fri, 4 Feb 2011 14:42:31 +0000]
Refactor UUID generation logic in ::Storage::DBI::UniqueIdentifier
milki [Sun, 13 Feb 2011 21:04:33 +0000]
Patch to schema->deploy against a file
Fixes skipped lines when a comment is followed by a statement
Explicitly split on single line comments and not just ;\n
Add some FIXME comments on the state of deploy
Alexander Hartmaier [Tue, 22 Feb 2011 09:11:04 +0000]
use -in SQL::Abstract operator instead of literal 'IN' in cookbook
Rafael Kitover [Sat, 19 Feb 2011 17:14:16 +0000]
Display a warning when an ODBC or ADO subclass is not found
Rafael Kitover [Sun, 6 Feb 2011 20:22:34 +0000]
Multiple code/test/doc improvements for MSSQL over DBD::ADO
Rafael Kitover [Sun, 23 Jan 2011 12:03:13 +0000]
Add extra test blob type
Rafael Kitover [Sun, 23 Jan 2011 12:03:13 +0000]
Cleanup/extend blob/clob detection/checks
Rafael Kitover [Sun, 23 Jan 2011 12:03:13 +0000]
Use a safer $dbh->get_info
Peter Rabbitson [Tue, 15 Feb 2011 09:42:45 +0000]
Fix replicated fails introduced with
2b8cc2f2
Moritz Onken [Sun, 13 Feb 2011 09:53:35 +0000]
fixed description to cookbook example
Moritz Onken [Sun, 13 Feb 2011 09:49:08 +0000]
fixed cookbook example
Arthur Axel 'fREW' Schmidt [Fri, 11 Feb 2011 15:37:14 +0000]
add mailmap for consistency
Peter Rabbitson [Tue, 1 Feb 2011 15:16:00 +0000]
Add proper DateTime handling to t/52leaks.t
Peter Rabbitson [Mon, 31 Jan 2011 16:00:46 +0000]
Better exception when things get really really bad with prepare()
Rafael Kitover [Wed, 2 Feb 2011 14:55:27 +0000]
add quote_names connect_info option
Peter Rabbitson [Sat, 29 Jan 2011 14:46:49 +0000]
Fix wrong author email from
f92a9d79
Ronald J Kimball [Tue, 25 Jan 2011 15:53:10 +0000]
Fix broken sections links in POD
Peter Rabbitson [Thu, 27 Jan 2011 00:02:47 +0000]
Fix for SpeedyCGI and an extensive test of persistent environments (RT#65131)
Peter Rabbitson [Thu, 27 Jan 2011 00:02:33 +0000]
Ignore to-be-leaktested classdata, instead of forcibly freeing it
Peter Rabbitson [Wed, 26 Jan 2011 11:37:50 +0000]
Correct Makefile.PL authortests borkage
Fix last-resort error message and do an explicit require (though
it should *not* be necessary people broke it somehow)
Peter Rabbitson [Tue, 25 Jan 2011 12:20:42 +0000]
Stop eating syntax errors in ODBC drivers
Peter Rabbitson [Mon, 24 Jan 2011 10:12:19 +0000]
Fix broken select/group bind in Oracle (after
0542ec57 & 4c2b30d6)
Peter Rabbitson [Thu, 20 Jan 2011 22:59:07 +0000]
Disable default mysql_auto_reconnect for MySQL
Rafael Kitover [Fri, 21 Jan 2011 12:24:31 +0000]
improve MSSQL+ODBC initialization, clarify docs on SCOPE_IDENTITY() and dynamic cursors
Rafael Kitover [Mon, 24 Jan 2011 17:52:37 +0000]
remove mention of name_sep from Schema::Loader doc
Rafael Kitover [Mon, 24 Jan 2011 14:40:24 +0000]
update Schema::Loader docs
Rafael Kitover [Wed, 19 Jan 2011 21:40:24 +0000]
improve bare ODBC dsn warning
Alexander Hartmaier [Wed, 19 Jan 2011 18:38:37 +0000]
Release 0.08127
Rafael Kitover [Tue, 4 Jan 2011 12:06:53 +0000]
Examples/instructions for connecting to MSSQL over DBD::ODBC
Rafael Kitover [Tue, 4 Jan 2011 12:06:53 +0000]
Change indentation after
384b8bce2 (whitespace changes only)
Rafael Kitover [Tue, 4 Jan 2011 12:06:53 +0000]
Improvements for MSSQL+ODBC multiple active resultset options
Rafael Kitover [Tue, 4 Jan 2011 12:06:53 +0000]
Move mssql/sybase guid tests to their own table (do not reuse artist)
Peter Rabbitson [Wed, 19 Jan 2011 13:49:26 +0000]
Rewrap Changes before 0.08127
Alexander Hartmaier [Fri, 26 Nov 2010 16:13:35 +0000]
Fix deploy and relationship traversal on partial schemas
Peter Rabbitson [Wed, 19 Jan 2011 11:17:47 +0000]
DBIC now warns on explicit false AutoCommit, and when altering external $dbh's
Peter Rabbitson [Wed, 19 Jan 2011 11:13:32 +0000]
Cleanup some of the storage tests (no func. changes)
Peter Rabbitson [Tue, 18 Jan 2011 17:46:44 +0000]
Start calling result_source_instance automatically when result_source is undef
Fix specifically for the POBox folks abusing the power of ->new :)
Peter Rabbitson [Tue, 18 Jan 2011 13:49:21 +0000]
Fix incorrect error detection during populate() on Oracle
Peter Rabbitson [Mon, 17 Jan 2011 11:12:03 +0000]
Fix stupid stupid ommission RT#64839
Peter Rabbitson [Sat, 15 Jan 2011 10:31:32 +0000]
Add back populate stress-test (inadvertently broken in
d35a6fed)
Peter Rabbitson [Fri, 14 Jan 2011 22:53:21 +0000]
Skip test on smokers with broken Moose
Peter Rabbitson [Fri, 14 Jan 2011 21:32:41 +0000]
ENV manging warning on older perls
Maik Hentsche [Mon, 14 Jun 2010 08:32:20 +0000]
Cleaner error message for using source() without required argument
Alexander Hartmaier [Fri, 14 Jan 2011 14:06:37 +0000]
Release 0.08126_01
Peter Rabbitson [Sun, 9 Jan 2011 08:52:27 +0000]
New namespace::clean to resolve the Package::Stash megafail
Peter Rabbitson [Fri, 14 Jan 2011 12:07:50 +0000]
Reduce to a warning the commit-without-apparent-begin exception from
7d216b10
Peter Rabbitson [Fri, 14 Jan 2011 11:41:42 +0000]
Reduce to a warning the find-with-NULL-key exception from
b7743dab
Peter Rabbitson [Thu, 13 Jan 2011 11:41:44 +0000]
Fix for => 'shared' on MySQL (RT#64590)
Peter Rabbitson [Thu, 13 Jan 2011 11:35:36 +0000]
Fix RT#64500
Peter Rabbitson [Thu, 13 Jan 2011 11:24:47 +0000]
Remove some accumulated cruft
Peter Rabbitson [Thu, 13 Jan 2011 10:20:35 +0000]
Cleanup ResultSourceHandle handling after M.A.D. introduction
Since a source/schema combos no longer leak, it is safe to store
strong-refs to sources directly in Row/ResultSet objects. Reduce
ResultSourceHandle to a simple Source "meta-layer" to facilitate
serialization of ResultSources.
In the process improve behavior/error messages of objects which
were deserialized without $schema re-attachment
Peter Rabbitson [Tue, 11 Jan 2011 18:14:07 +0000]
Introduce M.A.D. within the schema/source instance linkage
When a source instance is registered with a schema instance, the code
in Schema::_register_source() adds a strong ref of the source to the
schema register, and a weak schema ref to the source itself. Install
DESTROY handlers both on Schema and ResultSource to flip this setup
any time the Schema instance goes out of scope (if we somehow
increment the refcount of $self in a DESTROY, then the garbage
collection is aborted). Tested all the way back to 5.8.1 with excellent
results.
Promote the source links in both ResultSet and Row to real ResultSource
instance refs, as there's no longer any issue with memory leaks (before
a source handle would be instantiated lazily to sidestep the source
object entirely by keeping a schema ref instead).
Add freeze/thaw hooks for proper serialization of Source-containing
structures (be it Row's or ResultSet's). In another round of cleanup
ResultSourceHandle will be reduced to purely a "no schema yet"
placeholder after schema-less a freeze/thaw cycle.
Peter Rabbitson [Tue, 11 Jan 2011 17:25:39 +0000]
5.8.1 threads are wonky - tests no longer pass with recent DBD::Pg
Peter Rabbitson [Thu, 6 Jan 2011 08:59:12 +0000]
Fasterize
ostmann [Mon, 10 Jan 2011 10:56:49 +0000]
Fix losing order of columns provided in select/as