[Bast-commits] r6684 - in DBIx-Class/0.08/branches/mssql_top_fixes:
. lib/DBIx lib/DBIx/Class lib/DBIx/Class/Manual
lib/DBIx/Class/ResultClass lib/DBIx/Class/Storage
lib/DBIx/Class/Storage/DBI t
ribasushi at dev.catalyst.perl.org
ribasushi at dev.catalyst.perl.org
Mon Jun 15 15:53:16 GMT 2009
Author: ribasushi
Date: 2009-06-15 15:53:16 +0000 (Mon, 15 Jun 2009)
New Revision: 6684
Modified:
DBIx-Class/0.08/branches/mssql_top_fixes/
DBIx-Class/0.08/branches/mssql_top_fixes/Changes
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class.pm
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Manual/Cookbook.pod
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultClass/HashRefInflator.pm
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSet.pm
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSource.pm
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Row.pm
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI.pm
DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI/Replicated.pm
DBIx-Class/0.08/branches/mssql_top_fixes/t/60core.t
DBIx-Class/0.08/branches/mssql_top_fixes/t/74mssql.t
DBIx-Class/0.08/branches/mssql_top_fixes/t/84serialize.t
DBIx-Class/0.08/branches/mssql_top_fixes/t/95sql_maker.t
Log:
r6636 at Thesaurus (orig r6635): ribasushi | 2009-06-11 21:29:10 +0200
Release 0.08105
r6637 at Thesaurus (orig r6636): frew | 2009-06-11 22:02:11 +0200
Escape filename so that t\9... won't look like octal
r6638 at Thesaurus (orig r6637): ribasushi | 2009-06-11 22:09:55 +0200
Adjust tests for the DT::F::MySQL -> DT::F::SQLite change
r6639 at Thesaurus (orig r6638): arcanez | 2009-06-11 22:29:53 +0200
cookbook tweak for count distinct
r6640 at Thesaurus (orig r6639): ribasushi | 2009-06-11 23:39:12 +0200
Factor out as_query properly
r6641 at Thesaurus (orig r6640): ribasushi | 2009-06-11 23:50:41 +0200
Release 0.08106
r6643 at Thesaurus (orig r6642): caelum | 2009-06-12 01:48:28 +0200
add support for DBICTEST_MSSQL_PERL5LIB to 74mssql.t
r6648 at Thesaurus (orig r6647): timbunce | 2009-06-12 16:27:38 +0200
Added reference to get_inflated_columns in get_columns docs.
r6662 at Thesaurus (orig r6661): ribasushi | 2009-06-13 17:56:54 +0200
Test resultset serialization as well
r6663 at Thesaurus (orig r6662): ribasushi | 2009-06-13 18:08:14 +0200
local()ize sqla for in the right place
r6664 at Thesaurus (orig r6663): ribasushi | 2009-06-13 18:10:22 +0200
Do not use raw sources in {from} - proxy via source handles
r6666 at Thesaurus (orig r6665): ribasushi | 2009-06-13 19:31:55 +0200
really local()ize for as the author intended
r6667 at Thesaurus (orig r6666): michaelr | 2009-06-14 00:23:15 +0200
Added documentation for from => $rs->as_query
r6668 at Thesaurus (orig r6667): caelum | 2009-06-14 01:20:02 +0200
fix master debug output for ::Replicated
r6669 at Thesaurus (orig r6668): ribasushi | 2009-06-14 10:22:28 +0200
Release 0.08107
r6671 at Thesaurus (orig r6670): ribasushi | 2009-06-14 11:00:35 +0200
Lapse in copy() docs
r6673 at Thesaurus (orig r6672): ribasushi | 2009-06-14 11:33:22 +0200
Forgotten piece of as_query refactor
r6683 at Thesaurus (orig r6682): timbunce | 2009-06-15 16:30:21 +0200
Added note that column inflation is not performed
Property changes on: DBIx-Class/0.08/branches/mssql_top_fixes
___________________________________________________________________
Name: svk:merge
- 168d5346-440b-0410-b799-f706be625ff1:/DBIx-Class-current:2207
462d4d0c-b505-0410-bf8e-ce8f877b3390:/local/bast/DBIx-Class:3159
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/resultsetcolumn_custom_columns:5160
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/sqla_1.50_compat:5414
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/trunk:5969
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class:32260
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class-CDBICompat:54993
9c88509d-e914-0410-b01c-b9530614cbfe:/vendor/DBIx-Class:31122
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_column_attr:10946
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_trunk:11142
bd5ac9a7-f185-4d95-9186-dbb8b392a572:/local/os/bast/DBIx-Class/0.08/trunk:2798
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/belongs_to_null_col_fix:5244
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cdbicompat_integration:4160
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/column_attr:5074
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/complex_join_rels:4589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/count_distinct:6218
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/diamond_relationships:6310
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/file_column:3920
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/fix-update-and-delete-as_query:6162
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/joined_count:6323
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multi_stuff:5565
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mystery_join:6589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_disconnect_do:3694
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle-tweaks:6222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_sequence:4173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/order_by_refactor:6475
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/parser_fk_index:4485
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch:5699
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/replication_dedux:4600
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rsrc_in_storage:6577
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rt_bug_41083:5437
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/savepoints:4223
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sqla_1.50_compat:5321
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-ms-access:4142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-tweaks:6262
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subclassed_rsset:5930
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subquery:5617
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase:5651
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_mssql:6125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/top_limit_altfix:6429
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/type_aware_update:6619
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioned_enhancements:4125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioning:4578
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/views:5585
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/trunk:6622
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-C3:318
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-current:2222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-joins:173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-resultset:570
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/datetime:1716
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_compat:1855
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_unique_query_fixes:2142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/inflate:1988
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/many_to_many:2025
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/re_refactor_bugfix:1944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/reorganize_tests:1827
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset-new-refactor:1766
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_2_electric_boogaloo:2175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_cleanup:2102
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/sqlt_tests_refactor:2043
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class:3606
fe160bb6-dc1c-0410-9f2b-d64a711b54a5:/local/DBIC-trunk-0.08:10510
+ 168d5346-440b-0410-b799-f706be625ff1:/DBIx-Class-current:2207
462d4d0c-b505-0410-bf8e-ce8f877b3390:/local/bast/DBIx-Class:3159
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/resultsetcolumn_custom_columns:5160
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/sqla_1.50_compat:5414
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/trunk:5969
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class:32260
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class-CDBICompat:54993
9c88509d-e914-0410-b01c-b9530614cbfe:/vendor/DBIx-Class:31122
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_column_attr:10946
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_trunk:11142
bd5ac9a7-f185-4d95-9186-dbb8b392a572:/local/os/bast/DBIx-Class/0.08/trunk:2798
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/belongs_to_null_col_fix:5244
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cdbicompat_integration:4160
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/column_attr:5074
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/complex_join_rels:4589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/count_distinct:6218
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/diamond_relationships:6310
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/file_column:3920
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/fix-update-and-delete-as_query:6162
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/joined_count:6323
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multi_stuff:5565
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mystery_join:6589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_disconnect_do:3694
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle-tweaks:6222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_sequence:4173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/order_by_refactor:6475
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/parser_fk_index:4485
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch:5699
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/replication_dedux:4600
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rsrc_in_storage:6577
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rt_bug_41083:5437
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/savepoints:4223
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sqla_1.50_compat:5321
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-ms-access:4142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-tweaks:6262
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subclassed_rsset:5930
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subquery:5617
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase:5651
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_mssql:6125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/top_limit_altfix:6429
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/type_aware_update:6619
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioned_enhancements:4125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioning:4578
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/views:5585
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/trunk:6682
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-C3:318
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-current:2222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-joins:173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-resultset:570
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/datetime:1716
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_compat:1855
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_unique_query_fixes:2142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/inflate:1988
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/many_to_many:2025
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/re_refactor_bugfix:1944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/reorganize_tests:1827
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset-new-refactor:1766
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_2_electric_boogaloo:2175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_cleanup:2102
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/sqlt_tests_refactor:2043
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class:3606
fe160bb6-dc1c-0410-9f2b-d64a711b54a5:/local/DBIC-trunk-0.08:10510
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/Changes
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/Changes 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/Changes 2009-06-15 15:53:16 UTC (rev 6684)
@@ -1,5 +1,17 @@
Revision history for DBIx::Class
+0.08107 2009-06-14 08:21:00 (UTC)
+ - Fix serialization regression introduced in 0.08103 (affects
+ Cursor::Cached)
+ - POD fixes
+ - Fixed incomplete ::Replicated debug output
+
+0.08106 2009-06-11 21:42:00 (UTC)
+ - Switched SQLite storage driver to DateTime::Format::SQLite
+ (proper timezone handling)
+ - Fix more test problems
+
+0.08105 2009-06-11 19:04:00 (UTC)
- Update of numeric columns now properly uses != to determine
dirtyness instead of the usual eq
- Fixes to IC::DT tests
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Manual/Cookbook.pod
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Manual/Cookbook.pod 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Manual/Cookbook.pod 2009-06-15 15:53:16 UTC (rev 6684)
@@ -279,7 +279,7 @@
my $count = $rs->count;
# Equivalent SQL:
- # SELECT COUNT( DISTINCT( me.name ) ) FROM artist me
+ # SELECT COUNT( * ) FROM (SELECT me.name FROM artist me GROUP BY me.name) count_subq:
=head2 Grouping results
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultClass/HashRefInflator.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultClass/HashRefInflator.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultClass/HashRefInflator.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -116,6 +116,12 @@
HashRefInflator only affects resultsets at inflation time, and prefetch causes
relations to be inflated when the master C<$artist> row is inflated.
+=item *
+
+Column value inflation, e.g., using modules like
+L<DBIx::Class::InflateColumn::DateTime>, is not performed.
+The returned hash contains the raw database values.
+
=back
=cut
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSet.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSet.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSet.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -1927,7 +1927,19 @@
sub as_query {
my $self = shift;
- return $self->result_source->storage->as_query($self->_resolved_attrs);
+
+ my $attrs = $self->_resolved_attrs_copy;
+
+ # For future use:
+ #
+ # in list ctx:
+ # my ($sql, \@bind, \%dbi_bind_attrs) = _select_args_to_query (...)
+ # $sql also has no wrapping parenthesis in list ctx
+ #
+ my $sqlbind = $self->result_source->storage
+ ->_select_args_to_query ($attrs->{from}, $attrs->{select}, $attrs->{where}, $attrs);
+
+ return $sqlbind;
}
=head2 find_or_new
@@ -2434,7 +2446,7 @@
$attrs->{from}
||
[{
- -result_source => $source,
+ -source_handle => $source->handle,
-alias => $attrs->{alias},
$attrs->{alias} => $source->from,
}]
@@ -2544,7 +2556,7 @@
}
$attrs->{from} ||= [ {
- -result_source => $source,
+ -source_handle => $source->handle,
-alias => $self->{attrs}{alias},
$self->{attrs}{alias} => $source->from,
} ];
@@ -3281,9 +3293,21 @@
# SELECT child.* FROM person child
# INNER JOIN person father ON child.father_id = father.id
-If you need to express really complex joins or you need a subselect, you
+You can select from a subquery by passing a resultset to from as follows.
+
+ $schema->resultset('Artist')->search(
+ undef,
+ { alias => 'artist2',
+ from => [ { artist2 => $artist_rs->as_query } ],
+ } );
+
+ # and you'll get sql like this..
+ # SELECT artist2.artistid, artist2.name, artist2.rank, artist2.charfield FROM
+ # ( SELECT me.artistid, me.name, me.rank, me.charfield FROM artists me ) artist2
+
+If you need to express really complex joins, you
can supply literal SQL to C<from> via a scalar reference. In this case
-the contents of the scalar will replace the table name asscoiated with the
+the contents of the scalar will replace the table name associated with the
resultsource.
WARNING: This technique might very well not work as expected on chained
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSource.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSource.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/ResultSource.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -1135,7 +1135,7 @@
my $rel_src = $self->related_source($join);
return [ { $as => $rel_src->from,
- -result_source => $rel_src,
+ -source_handle => $rel_src->handle,
-join_type => $type,
-join_path => [@$jpath, $join],
-alias => $as,
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Row.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Row.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Row.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -647,6 +647,8 @@
Returns all loaded column data as a hash, containing raw values. To
get just one value for a particular column, use L</get_column>.
+See L</get_inflated_columns> to get the inflated values.
+
=cut
sub get_columns {
@@ -909,7 +911,11 @@
Inserts a new row into the database, as a copy of the original
object. If a hashref of replacement data is supplied, these will take
-precedence over data in the original.
+precedence over data in the original. Also any columns which have
+the L<column info attribute|DBIx::Class::ResultSource/add_columns>
+C<< is_auto_increment => 1 >> are explicitly removed before the copy,
+so that the database can insert its own autoincremented values into
+the new object.
Relationships will be followed by the copy procedure B<only> if the
relationship specifes a true value for its
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI/Replicated.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI/Replicated.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI/Replicated.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -366,10 +366,11 @@
$res = $self->$next($info, @extra);
}
- # May have to reapply role if master will be reblessed to a more specific
- # driver.
- $self->master->_determine_driver;
- DBIx::Class::Storage::DBI::Replicated::WithDSN->meta->apply($self->master);
+ # Make sure master is blessed into the correct class and apply role to it.
+ my $master = $self->master;
+ $master->_determine_driver;
+ Moose::Meta::Class->initialize(ref $master);
+ DBIx::Class::Storage::DBI::Replicated::WithDSN->meta->apply($master);
$wantarray ? @res : $res;
};
@@ -405,7 +406,6 @@
sub _build_master {
my $self = shift @_;
my $master = DBIx::Class::Storage::DBI->new($self->schema);
- DBIx::Class::Storage::DBI::Replicated::WithDSN->meta->apply($master);
$master
}
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class/Storage/DBI.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -910,38 +910,7 @@
return ($sql, \@bind);
}
-=head2 as_query
-=over 4
-
-=item Arguments: $rs_attrs
-
-=item Return Value: \[ $sql, @bind ]
-
-=back
-
-Returns the SQL statement and bind vars that would result from the given
-ResultSet attributes (does not actually run a query)
-
-=cut
-
-sub as_query {
- my ($self, $rs_attr) = @_;
-
- my $sql_maker = $self->sql_maker;
- local $sql_maker->{for};
-
- # my ($op, $bind, $ident, $bind_attrs, $select, $cond, $order, $rows, $offset) = $self->_select_args(...);
- my @args = $self->_select_args($rs_attr->{from}, $rs_attr->{select}, $rs_attr->{where}, $rs_attr);
-
- # my ($sql, $bind) = $self->_prep_for_execute($op, $bind, $ident, [ $select, $cond, $order, $rows, $offset ]);
- my ($sql, $bind) = $self->_prep_for_execute(
- @args[0 .. 2],
- [ @args[4 .. $#args] ],
- );
- return \[ "($sql)", @{ $bind || [] }];
-}
-
sub _fix_bind_params {
my ($self, @bind) = @_;
@@ -1222,17 +1191,45 @@
sub _select {
my $self = shift;
+
+ # localization is neccessary as
+ # 1) there is no infrastructure to pass this around (easy to do, but will wait)
+ # 2) _select_args sets it and _prep_for_execute consumes it
my $sql_maker = $self->sql_maker;
local $sql_maker->{for};
+
return $self->_execute($self->_select_args(@_));
}
+sub _select_args_to_query {
+ my $self = shift;
+
+ # localization is neccessary as
+ # 1) there is no infrastructure to pass this around (easy to do, but will wait)
+ # 2) _select_args sets it and _prep_for_execute consumes it
+ my $sql_maker = $self->sql_maker;
+ local $sql_maker->{for};
+
+ # my ($op, $bind, $ident, $bind_attrs, $select, $cond, $order, $rows, $offset)
+ # = $self->_select_args($ident, $select, $cond, $attrs);
+ my ($op, $bind, $ident, $bind_attrs, @args) =
+ $self->_select_args(@_);
+
+ # my ($sql, $prepared_bind) = $self->_prep_for_execute($op, $bind, $ident, [ $select, $cond, $order, $rows, $offset ]);
+ my ($sql, $prepared_bind) = $self->_prep_for_execute($op, $bind, $ident, \@args);
+ $prepared_bind ||= [];
+
+ return wantarray
+ ? ($sql, $prepared_bind, $bind_attrs)
+ : \[ "($sql)", @$prepared_bind ]
+ ;
+}
+
sub _select_args {
my ($self, $ident, $select, $condition, $attrs) = @_;
- my $for = delete $attrs->{for};
my $sql_maker = $self->sql_maker;
- $sql_maker->{for} = $for;
+ $sql_maker->{for} = delete $attrs->{for};
my $order = { map
{ $attrs->{$_} ? ( $_ => $attrs->{$_} ) : () }
@@ -1301,8 +1298,8 @@
$tabinfo = $_->[0];
}
- $alias2source->{$tabinfo->{-alias}} = $tabinfo->{-result_source}
- if ($tabinfo->{-result_source});
+ $alias2source->{$tabinfo->{-alias}} = $tabinfo->{-source_handle}->resolve
+ if ($tabinfo->{-source_handle});
}
}
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class.pm
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class.pm 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/lib/DBIx/Class.pm 2009-06-15 15:53:16 UTC (rev 6684)
@@ -24,7 +24,7 @@
# i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
# brain damage and presumably various other packaging systems too
-$VERSION = '0.08104';
+$VERSION = '0.08107';
$VERSION = eval $VERSION; # numify for warning-free dev releases
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/t/60core.t
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/t/60core.t 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/t/60core.t 2009-06-15 15:53:16 UTC (rev 6684)
@@ -11,7 +11,7 @@
plan tests => 106;
-eval { require DateTime::Format::MySQL };
+eval { require DateTime::Format::SQLite };
my $NO_DTFM = $@ ? 1 : 0;
my @art = $schema->resultset("Artist")->search({ }, { order_by => 'name DESC'});
@@ -195,7 +195,7 @@
# get_inflated_columns w/relation and accessor alias
SKIP: {
- skip "This test requires DateTime::Format::MySQL", 8 if $NO_DTFM;
+ skip "This test requires DateTime::Format::SQLite", 8 if $NO_DTFM;
isa_ok($new->updated_date, 'DateTime', 'have inflated object via accessor');
my %tdata = $new->get_inflated_columns;
@@ -389,7 +389,7 @@
# test get_inflated_columns with objects
SKIP: {
- skip "This test requires DateTime::Format::MySQL", 5 if $NO_DTFM;
+ skip "This test requires DateTime::Format::SQLite", 5 if $NO_DTFM;
my $event = $schema->resultset('Event')->search->first;
my %edata = $event->get_inflated_columns;
is($edata{'id'}, $event->id, 'got id');
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/t/74mssql.t
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/t/74mssql.t 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/t/74mssql.t 2009-06-15 15:53:16 UTC (rev 6684)
@@ -1,6 +1,13 @@
use strict;
use warnings;
+# use this if you keep a copy of DBD::Sybase linked to FreeTDS somewhere else
+BEGIN {
+ if (my $lib_dirs = $ENV{DBICTEST_MSSQL_PERL5LIB}) {
+ unshift @INC, $_ for split /:/, $lib_dirs;
+ }
+}
+
use Test::More;
use lib qw(t/lib);
use DBICTest;
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/t/84serialize.t
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/t/84serialize.t 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/t/84serialize.t 2009-06-15 15:53:16 UTC (rev 6684)
@@ -2,6 +2,7 @@
use warnings;
use Test::More;
+use Test::Exception;
use lib qw(t/lib);
use DBICTest;
use Storable qw(dclone freeze thaw);
@@ -20,10 +21,11 @@
},
);
-plan tests => (7 * keys %stores);
+plan tests => (11 * keys %stores);
for my $name (keys %stores) {
my $store = $stores{$name};
+ my $copy;
my $artist = $schema->resultset('Artist')->find(1);
@@ -39,22 +41,35 @@
DBICTest::CD->result_source_instance->schema(undef);
}
- my $copy = eval { $store->($artist) };
+ lives_ok { $copy = $store->($artist) } "serialize row object lives: $name";
is_deeply($copy, $artist, "serialize row object works: $name");
+ my $cd_rs = $artist->search_related("cds");
+
+ # test that a result source can be serialized as well
+
+ $cd_rs->_resolved_attrs; # this builds up the {from} attr
+
+ lives_ok {
+ $copy = $store->($cd_rs);
+ is_deeply (
+ [ $copy->all ],
+ [ $cd_rs->all ],
+ "serialize resultset works: $name",
+ );
+ } "serialize resultset lives: $name";
+
# Test that an object with a related_resultset can be serialized.
- my @cds = $artist->related_resultset("cds");
-
ok $artist->{related_resultsets}, 'has key: related_resultsets';
- $copy = eval { $store->($artist) };
+ lives_ok { $copy = $store->($artist) } "serialize row object with related_resultset lives: $name";
for my $key (keys %$artist) {
next if $key eq 'related_resultsets';
next if $key eq '_inflated_column';
is_deeply($copy->{$key}, $artist->{$key},
qq[serialize with related_resultset "$key"]);
}
-
+
ok eval { $copy->discard_changes; 1 } or diag $@;
is($copy->id, $artist->id, "IDs still match ");
}
Modified: DBIx-Class/0.08/branches/mssql_top_fixes/t/95sql_maker.t
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/t/95sql_maker.t 2009-06-15 14:49:00 UTC (rev 6683)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/t/95sql_maker.t 2009-06-15 15:53:16 UTC (rev 6684)
@@ -51,6 +51,7 @@
# Make sure the carp/croak override in SQLA works (via SQLAHacks)
my $file = __FILE__;
+$file = "\Q$file\E";
throws_ok (sub {
$schema->resultset ('Artist')->search ({}, { order_by => { -asc => 'stuff', -desc => 'staff' } } )->as_query;
}, qr/$file/, 'Exception correctly croak()ed');
More information about the Bast-commits
mailing list