Skip to content

Commit

Permalink
Merge 'trunk' into 'dephandling'
Browse files Browse the repository at this point in the history
r8628@Thesaurus (orig r8615):  caelum | 2010-02-11 11:35:01 +0100
 r21090@hlagh (orig r7836):  caelum | 2009-11-02 06:40:52 -0500
 new branch to fix unhandled methods in Storage::DBI::Replicated
 r21091@hlagh (orig r7837):  caelum | 2009-11-02 06:42:00 -0500
 add test to display unhandled methods
 r21092@hlagh (orig r7838):  caelum | 2009-11-02 06:55:34 -0500
 minor fix to last committed test
 r21093@hlagh (orig r7839):  caelum | 2009-11-02 09:26:00 -0500
 minor test code cleanup
 r23125@hlagh (orig r8607):  caelum | 2010-02-10 19:25:51 -0500
 add unimplemented Storage::DBI methods to ::DBI::Replicated
 r23130@hlagh (orig r8612):  ribasushi | 2010-02-11 05:12:48 -0500
 Podtesting exclusion

r8630@Thesaurus (orig r8617):  frew | 2010-02-11 11:45:54 +0100
Changes (from a while ago)
r8631@Thesaurus (orig r8618):  caelum | 2010-02-11 11:46:58 +0100
savepoints for SQLAnywhere
r8640@Thesaurus (orig r8627):  ribasushi | 2010-02-11 12:33:19 +0100
 r8424@Thesaurus (orig r8411):  ribasushi | 2010-01-22 11:19:40 +0100
 Chaining POC test

r8641@Thesaurus (orig r8628):  ribasushi | 2010-02-11 12:34:19 +0100
 r8426@Thesaurus (orig r8413):  ribasushi | 2010-01-22 11:35:15 +0100
 Moev failing regression test away from trunk

r8642@Thesaurus (orig r8629):  ribasushi | 2010-02-11 12:34:56 +0100

r8643@Thesaurus (orig r8630):  ribasushi | 2010-02-11 12:35:03 +0100
 r8507@Thesaurus (orig r8494):  frew | 2010-02-01 04:33:08 +0100
 small refactor to put select/as/+select/+as etc merging in it's own function

r8644@Thesaurus (orig r8631):  ribasushi | 2010-02-11 12:35:11 +0100
 r8514@Thesaurus (orig r8501):  frew | 2010-02-02 05:12:29 +0100
 revert actual changes from yesterday as per ribasushis advice

r8645@Thesaurus (orig r8632):  ribasushi | 2010-02-11 12:35:16 +0100
 r8522@Thesaurus (orig r8509):  frew | 2010-02-02 19:39:33 +0100
 delete +stuff if stuff exists

r8646@Thesaurus (orig r8633):  ribasushi | 2010-02-11 12:35:23 +0100
 r8534@Thesaurus (orig r8521):  frew | 2010-02-03 06:14:44 +0100
 change deletion/overriding to fix t/76

r8647@Thesaurus (orig r8634):  ribasushi | 2010-02-11 12:35:30 +0100
 r8535@Thesaurus (orig r8522):  frew | 2010-02-03 06:57:15 +0100
 some basic readability factorings (aka, fewer nested ternaries and long maps)

r8648@Thesaurus (orig r8635):  ribasushi | 2010-02-11 12:36:01 +0100
 r8558@Thesaurus (orig r8545):  frew | 2010-02-04 20:32:54 +0100
 fix incorrect test in t/76select.t and posit an incorrect solution

r8649@Thesaurus (orig r8636):  ribasushi | 2010-02-11 12:38:47 +0100

r8650@Thesaurus (orig r8637):  ribasushi | 2010-02-11 12:38:57 +0100
 r8578@Thesaurus (orig r8565):  ribasushi | 2010-02-05 19:11:09 +0100
 Should not be needed

r8651@Thesaurus (orig r8638):  ribasushi | 2010-02-11 12:39:03 +0100
 r8579@Thesaurus (orig r8566):  ribasushi | 2010-02-05 19:13:24 +0100
 SQLA now fixed

r8652@Thesaurus (orig r8639):  ribasushi | 2010-02-11 12:39:10 +0100
 r8624@Thesaurus (orig r8611):  ribasushi | 2010-02-11 10:31:08 +0100
 MOAR testing

r8653@Thesaurus (orig r8640):  ribasushi | 2010-02-11 12:39:17 +0100
 r8626@Thesaurus (orig r8613):  frew | 2010-02-11 11:16:30 +0100
 fix bad test

r8654@Thesaurus (orig r8641):  ribasushi | 2010-02-11 12:39:23 +0100
 r8627@Thesaurus (orig r8614):  frew | 2010-02-11 11:21:52 +0100
 fix t/76, break rsc tests

r8655@Thesaurus (orig r8642):  ribasushi | 2010-02-11 12:39:30 +0100
 r8632@Thesaurus (orig r8619):  frew | 2010-02-11 11:53:50 +0100
 fix incorrect test

r8656@Thesaurus (orig r8643):  ribasushi | 2010-02-11 12:39:35 +0100
 r8633@Thesaurus (orig r8620):  frew | 2010-02-11 11:54:49 +0100
 make t/76s and t/88 pass by deleting from the correct attr hash

r8657@Thesaurus (orig r8644):  ribasushi | 2010-02-11 12:39:40 +0100
 r8634@Thesaurus (orig r8621):  frew | 2010-02-11 11:55:41 +0100
 fix a test due to ordering issues

r8658@Thesaurus (orig r8645):  ribasushi | 2010-02-11 12:39:45 +0100
 r8635@Thesaurus (orig r8622):  frew | 2010-02-11 11:58:23 +0100
 this is why you run tests before you commit them.

r8659@Thesaurus (orig r8646):  ribasushi | 2010-02-11 12:39:51 +0100
 r8636@Thesaurus (orig r8623):  frew | 2010-02-11 12:00:59 +0100
 fix another ordering issue

r8660@Thesaurus (orig r8647):  ribasushi | 2010-02-11 12:39:57 +0100
 r8637@Thesaurus (orig r8624):  frew | 2010-02-11 12:11:31 +0100
 fix for search/select_chains

r8661@Thesaurus (orig r8648):  ribasushi | 2010-02-11 12:40:03 +0100

r8662@Thesaurus (orig r8649):  caelum | 2010-02-11 12:40:07 +0100
test nanosecond precision for SQLAnywhere
r8663@Thesaurus (orig r8650):  ribasushi | 2010-02-11 12:40:09 +0100
 r8639@Thesaurus (orig r8626):  ribasushi | 2010-02-11 12:33:03 +0100
 Changes and small ommission

r8666@Thesaurus (orig r8653):  ribasushi | 2010-02-11 18:16:45 +0100
Changes
r8674@Thesaurus (orig r8661):  ribasushi | 2010-02-12 09:12:45 +0100
Fix moose dep
  • Loading branch information
ribasushi committed Feb 12, 2010
2 parents 2527233 + bb1329e commit 30da837
Show file tree
Hide file tree
Showing 12 changed files with 465 additions and 72 deletions.
7 changes: 7 additions & 0 deletions Changes
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
Revision history for DBIx::Class

- Add as_subselect_rs to DBIC::ResultSet from
DBIC::Helper::ResultSet::VirtualView::as_virtual_view
- Depend on newest bugfixed Moose
- Make resultset chaining consistent wrt selection specification
- Storage::DBI::Replicated cleanup
- Fix autoinc PKs without an autoinc flag on Sybase ASA

0.08118 2010-02-08 11:53:00 (UTC)
- Fix a bug causing UTF8 columns not to be decoded (RT#54395)
- Fix bug in One->Many->One prefetch-collapse handling (RT#54039)
Expand Down
14 changes: 7 additions & 7 deletions Makefile.PL
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@ perl_version '5.008001';
all_from 'lib/DBIx/Class.pm';

my $build_requires = {
'DBD::SQLite' => '1.25',
'DBD::SQLite' => '1.25',
};

my $test_requires = {
'File::Temp' => '0.22',
'Test::Builder' => '0.33',
'Test::Deep' => '0',
'Test::Exception' => '0',
'Test::More' => '0.92',
'Test::Warn' => '0.21',
'File::Temp' => '0.22',
'Test::Builder' => '0.33',
'Test::Deep' => '0',
'Test::Exception' => '0',
'Test::More' => '0.92',
'Test::Warn' => '0.21',
};

my $runtime_requires = {
Expand Down
120 changes: 67 additions & 53 deletions lib/DBIx/Class/ResultSet.pm
Original file line number Diff line number Diff line change
Expand Up @@ -291,10 +291,15 @@ sub search_rs {
$rows = $self->get_cache;
}

# reset the selector list
if (List::Util::first { exists $attrs->{$_} } qw{columns select as}) {
delete @{$our_attrs}{qw{select as columns +select +as +columns include_columns}};
}

my $new_attrs = { %{$our_attrs}, %{$attrs} };

# merge new attrs into inherited
foreach my $key (qw/join prefetch +select +as bind/) {
foreach my $key (qw/join prefetch +select +as +columns include_columns bind/) {
next unless exists $attrs->{$key};
$new_attrs->{$key} = $self->_merge_attr($our_attrs->{$key}, $attrs->{$key});
}
Expand Down Expand Up @@ -2777,41 +2782,46 @@ sub _resolved_attrs {
# build columns (as long as select isn't set) into a set of as/select hashes
unless ( $attrs->{select} ) {

my @cols = ( ref($attrs->{columns}) eq 'ARRAY' )
? @{ delete $attrs->{columns}}
: (
( delete $attrs->{columns} )
||
$source->columns
)
;
my @cols;
if ( ref $attrs->{columns} eq 'ARRAY' ) {
@cols = @{ delete $attrs->{columns}}
} elsif ( defined $attrs->{columns} ) {
@cols = delete $attrs->{columns}
} else {
@cols = $source->columns
}

@colbits = map {
( ref($_) eq 'HASH' )
? $_
: {
(
/^\Q${alias}.\E(.+)$/
? "$1"
: "$_"
)
=>
(
/\./
? "$_"
: "${alias}.$_"
)
}
} @cols;
for (@cols) {
if ( ref $_ eq 'HASH' ) {
push @colbits, $_
} else {
my $key = /^\Q${alias}.\E(.+)$/
? "$1"
: "$_";
my $value = /\./
? "$_"
: "${alias}.$_";
push @colbits, { $key => $value };
}
}
}

# add the additional columns on
foreach ( 'include_columns', '+columns' ) {
push @colbits, map {
( ref($_) eq 'HASH' )
? $_
: { ( split( /\./, $_ ) )[-1] => ( /\./ ? $_ : "${alias}.$_" ) }
} ( ref($attrs->{$_}) eq 'ARRAY' ) ? @{ delete $attrs->{$_} } : delete $attrs->{$_} if ( $attrs->{$_} );
foreach (qw{include_columns +columns}) {
if ( $attrs->{$_} ) {
my @list = ( ref($attrs->{$_}) eq 'ARRAY' )
? @{ delete $attrs->{$_} }
: delete $attrs->{$_};
for (@list) {
if ( ref($_) eq 'HASH' ) {
push @colbits, $_
} else {
my $key = ( split /\./, $_ )[-1];
my $value = ( /\./ ? $_ : "$alias.$_" );
push @colbits, { $key => $value };
}
}
}
}

# start with initial select items
Expand All @@ -2820,15 +2830,22 @@ sub _resolved_attrs {
( ref $attrs->{select} eq 'ARRAY' )
? [ @{ $attrs->{select} } ]
: [ $attrs->{select} ];
$attrs->{as} = (
$attrs->{as}
? (
ref $attrs->{as} eq 'ARRAY'
? [ @{ $attrs->{as} } ]
: [ $attrs->{as} ]

if ( $attrs->{as} ) {
$attrs->{as} =
(
ref $attrs->{as} eq 'ARRAY'
? [ @{ $attrs->{as} } ]
: [ $attrs->{as} ]
)
: [ map { m/^\Q${alias}.\E(.+)$/ ? $1 : $_ } @{ $attrs->{select} } ]
);
} else {
$attrs->{as} = [ map {
m/^\Q${alias}.\E(.+)$/
? $1
: $_
} @{ $attrs->{select} }
]
}
}
else {

Expand All @@ -2838,27 +2855,24 @@ sub _resolved_attrs {
}

# now add colbits to select/as
push( @{ $attrs->{select} }, map { values( %{$_} ) } @colbits );
push( @{ $attrs->{as} }, map { keys( %{$_} ) } @colbits );
push @{ $attrs->{select} }, map values %{$_}, @colbits;
push @{ $attrs->{as} }, map keys %{$_}, @colbits;

my $adds;
if ( $adds = delete $attrs->{'+select'} ) {
if ( my $adds = delete $attrs->{'+select'} ) {
$adds = [$adds] unless ref $adds eq 'ARRAY';
push(
@{ $attrs->{select} },
map { /\./ || ref $_ ? $_ : "${alias}.$_" } @$adds
);
push @{ $attrs->{select} },
map { /\./ || ref $_ ? $_ : "$alias.$_" } @$adds;
}
if ( $adds = delete $attrs->{'+as'} ) {
if ( my $adds = delete $attrs->{'+as'} ) {
$adds = [$adds] unless ref $adds eq 'ARRAY';
push( @{ $attrs->{as} }, @$adds );
push @{ $attrs->{as} }, @$adds;
}

$attrs->{from} ||= [ {
$attrs->{from} ||= [{
-source_handle => $source->handle,
-alias => $self->{attrs}{alias},
$self->{attrs}{alias} => $source->from,
} ];
}];

if ( $attrs->{join} || $attrs->{prefetch} ) {

Expand All @@ -2878,7 +2892,7 @@ sub _resolved_attrs {
$join,
$alias,
{ %{ $attrs->{seen_join} || {} } },
($attrs->{seen_join} && keys %{$attrs->{seen_join}})
( $attrs->{seen_join} && keys %{$attrs->{seen_join}})
? $attrs->{from}[-1][0]{-join_path}
: []
,
Expand Down
5 changes: 0 additions & 5 deletions lib/DBIx/Class/ResultSetColumn.pm
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,6 @@ sub new {
$new_parent_rs ||= $rs->search_rs;
my $new_attrs = $new_parent_rs->{attrs} ||= {};

# FIXME - this should go away when the chaining branch is merged
# since what we do is actually chain to the original resultset, we need to throw
# away all selectors (otherwise they'll chain)
delete $new_attrs->{$_} for (qw/columns +columns select +select as +as cols include_columns/);

# prefetch causes additional columns to be fetched, but we can not just make a new
# rs via the _resolved_attrs trick - we need to retain the separation between
# +select/+as and select/as. At the same time we want to preserve any joins that the
Expand Down
Loading

0 comments on commit 30da837

Please sign in to comment.