r18246 - in /trunk/libdbix-searchbuilder-perl: Changes MANIFEST META.yml SIGNATURE SearchBuilder.pm SearchBuilder/Handle/Pg.pm SearchBuilder/Handle/SQLite.pm SearchBuilder/Handle/mysql.pm debian/changelog t/02order_outer.t
gregoa-guest at users.alioth.debian.org
gregoa-guest at users.alioth.debian.org
Tue Apr 1 14:51:30 UTC 2008
Author: gregoa-guest
Date: Tue Apr 1 14:51:29 2008
New Revision: 18246
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=18246
Log:
New upstream release.
Added:
trunk/libdbix-searchbuilder-perl/t/02order_outer.t
- copied unchanged from r18245, branches/upstream/libdbix-searchbuilder-perl/current/t/02order_outer.t
Modified:
trunk/libdbix-searchbuilder-perl/Changes
trunk/libdbix-searchbuilder-perl/MANIFEST
trunk/libdbix-searchbuilder-perl/META.yml
trunk/libdbix-searchbuilder-perl/SIGNATURE
trunk/libdbix-searchbuilder-perl/SearchBuilder.pm
trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/Pg.pm
trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/SQLite.pm
trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/mysql.pm
trunk/libdbix-searchbuilder-perl/debian/changelog
Modified: trunk/libdbix-searchbuilder-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/Changes?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/Changes (original)
+++ trunk/libdbix-searchbuilder-perl/Changes Tue Apr 1 14:51:29 2008
@@ -1,12 +1,17 @@
Revision history for Perl extension DBIx::SearchBuilder.
+1.52 Tue Apr 1 00:48:56 UTC 2008
+
+* Fix order by outer columnon SQLite, mysql, adjust Pg. Add test that
+ cover this.
+
1.51 Tue Jan 15 22:53:56 UTC 2008
* Fix CountAll method when paging is enabled and data is in memory already
1.50 Fri Nov 23 23:24:00 UTC 2007
-* Oracle: Don't DISTINCT query when there is a group by cluse
+* Oracle: Don't DISTINCT query when there is a group by clause
* Fix a problem when we have more then two collections in a union
and some of them are empty
Modified: trunk/libdbix-searchbuilder-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/MANIFEST?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/MANIFEST (original)
+++ trunk/libdbix-searchbuilder-perl/MANIFEST Tue Apr 1 14:51:29 2008
@@ -35,6 +35,7 @@
t/01nocap_api.t
t/01records.t
t/01searches.t
+t/02order_outer.t
t/02records_cachable.t
t/02records_integers.t
t/02records_object.t
Modified: trunk/libdbix-searchbuilder-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/META.yml?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/META.yml (original)
+++ trunk/libdbix-searchbuilder-perl/META.yml Tue Apr 1 14:51:29 2008
@@ -26,4 +26,4 @@
DBI: 0
Encode: 0
Want: 0
-version: 1.51
+version: 1.52
Modified: trunk/libdbix-searchbuilder-perl/SIGNATURE
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/SIGNATURE?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/SIGNATURE (original)
+++ trunk/libdbix-searchbuilder-perl/SIGNATURE Tue Apr 1 14:51:29 2008
@@ -14,21 +14,21 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 078309de7827fa2b031323b77a2e68d009812262 Changes
-SHA1 2e9746a7afda5167d8c7ff25a88f345ea5e35a02 MANIFEST
-SHA1 d622eefd4e7d29bb55e21ff83f4e25392f9a86b9 META.yml
+SHA1 6c4fe1023f6e47a084b833c7c5df061aa3c11f6b Changes
+SHA1 ddd4097470d90cd802af26e3da85db40645906b7 MANIFEST
+SHA1 6575bd93862f9070044417e7e518ce0f2bdfea45 META.yml
SHA1 837637cca03f08e799c2106fedbf547f79e6feb7 Makefile.PL
SHA1 d7a41642c368f2a587587e09f9e815d434feebff README
SHA1 5a53d12d5cccd94845a6a7cc105cd9be34e20f1c ROADMAP
-SHA1 f33b152cae6712e230e5527f411e6a53e1438727 SearchBuilder.pm
+SHA1 5fd994fa5666b53f5cb4f19e39939534f6480415 SearchBuilder.pm
SHA1 0777214c051789d8a42951997e897b7bd49510ce SearchBuilder/Handle.pm
SHA1 55d337e6dd1ab5aecc39d2ae491bffb12e9ca449 SearchBuilder/Handle/Informix.pm
SHA1 4efdcaefa5f94d994b052d1b343d2f5164ef4b52 SearchBuilder/Handle/ODBC.pm
SHA1 061fabc379cda40e6c6e79b9779829f399ed6494 SearchBuilder/Handle/Oracle.pm
-SHA1 4e096c7cf4583c2ab01a5a893741bf1f26cf48a4 SearchBuilder/Handle/Pg.pm
-SHA1 ecb52a19979aea9528fc690028d16a05ab356c13 SearchBuilder/Handle/SQLite.pm
+SHA1 d1266042496de77f15f361d71d6068547d872d92 SearchBuilder/Handle/Pg.pm
+SHA1 21127fc5a1c8d2f585220637029d30955facc9a5 SearchBuilder/Handle/SQLite.pm
SHA1 ec3fbc03b27c008d93a52b6b7fb0076529e5fcc8 SearchBuilder/Handle/Sybase.pm
-SHA1 ea451e77f452b7739fccb2af4301b70866c6cf19 SearchBuilder/Handle/mysql.pm
+SHA1 4034977117e21dff94a41cba179e22688b56221b SearchBuilder/Handle/mysql.pm
SHA1 877685aaff265e36fa37298c372aa56864f68aa5 SearchBuilder/Handle/mysqlPP.pm
SHA1 5dd029a91e72614d7aaf201b277a668c540e7dff SearchBuilder/Record.pm
SHA1 1680fe8c21ca1667c55501c5f0e9b7bef434647f SearchBuilder/Record/Cachable.pm
@@ -50,6 +50,7 @@
SHA1 2b2dc6f72370f60e1d233f2f8c12bb87414e825c t/01nocap_api.t
SHA1 92f07d6d6c3a098f7c5e3524204522f2ec960f75 t/01records.t
SHA1 049fa2ff4a443b27ca64dfa6e50d4fdcfc8c0edb t/01searches.t
+SHA1 5d6e84b06d3b1bd899484b158af32dfe19e5776a t/02order_outer.t
SHA1 67d4c0dca9d1914eadba64460f3a2da4e074ae14 t/02records_cachable.t
SHA1 e791bc2dc9ebcfe194f00eb9d0d61c391200b589 t/02records_integers.t
SHA1 6e50e77f1b54fe28fd6bcbb6eb104527f25d2601 t/02records_object.t
@@ -65,7 +66,7 @@
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (GNU/Linux)
-iEYEARECAAYFAkeNOoAACgkQvH6dkeDZaS9Z9gCfcwhrP8q9iadvARoTgVjZM7gH
-KakAn29tFAycAYq22e3GmE1x9+mAyHhN
-=wBHs
+iEYEARECAAYFAkfxoCIACgkQvH6dkeDZaS9pmACfQ/Zq+3Z4WsHmnh+vDMgQLZeX
+FCsAn3W1izL337BOTojKMEJp/MGHeoNe
+=GYHb
-----END PGP SIGNATURE-----
Modified: trunk/libdbix-searchbuilder-perl/SearchBuilder.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/SearchBuilder.pm?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/SearchBuilder.pm (original)
+++ trunk/libdbix-searchbuilder-perl/SearchBuilder.pm Tue Apr 1 14:51:29 2008
@@ -4,7 +4,7 @@
use strict;
use warnings;
-our $VERSION = "1.51";
+our $VERSION = "1.52";
use Clone qw();
use Encode qw();
@@ -1082,19 +1082,20 @@
else {
$rowhash{'ORDER'} = "ASC";
}
-
- if ( ($rowhash{'ALIAS'}) and
- ($rowhash{'FIELD'}) and
- ($rowhash{'ORDER'}) ) {
-
- if ($rowhash{'FIELD'} =~ /^(\w+\()(.*\))$/) {
+ $rowhash{'ALIAS'} = 'main' unless defined $rowhash{'ALIAS'};
+
+ if ( defined $rowhash{'ALIAS'} and
+ $rowhash{'FIELD'} and
+ $rowhash{'ORDER'} ) {
+
+ if ( length $rowhash{'ALIAS'} && $rowhash{'FIELD'} =~ /^(\w+\()(.*\))$/ ) {
# handle 'FUNCTION(FIELD)' formatted fields
$rowhash{'ALIAS'} = $1 . $rowhash{'ALIAS'};
$rowhash{'FIELD'} = $2;
}
$clause .= ($clause ? ", " : " ");
- $clause .= $rowhash{'ALIAS'} . ".";
+ $clause .= $rowhash{'ALIAS'} . "." if length $rowhash{'ALIAS'};
$clause .= $rowhash{'FIELD'} . " ";
$clause .= $rowhash{'ORDER'};
}
Modified: trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/Pg.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/Pg.pm?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/Pg.pm (original)
+++ trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/Pg.pm Tue Apr 1 14:51:29 2008
@@ -230,7 +230,14 @@
# If we are ordering by something not in 'main', we need to GROUP
# BY and adjust the ORDER_BY accordingly
local $sb->{group_by} = [@{$sb->{group_by} || []}, {FIELD => 'id'}];
- local $sb->{order_by} = [map {($_->{ALIAS} and $_->{ALIAS} ne "main") ? {%{$_}, FIELD => "min(".$_->{FIELD}.")"}: $_} @{$sb->{order_by}}];
+ local $sb->{'order_by'} = [
+ map {
+ ($_->{'ALIAS'}||'') ne "main"
+ ? { %{$_}, FIELD => ((($_->{'ORDER'}||'') =~ /^des/i)?'MAX':'MIN') ."(".$_->{FIELD}.")" }
+ : $_
+ }
+ @{$sb->{'order_by'}}
+ ];
my $group = $sb->_GroupClause;
my $order = $sb->_OrderClause;
$$statementref = "SELECT main.* FROM ( SELECT main.id FROM $$statementref $group $order ) distinctquery, $table main WHERE (main.id = distinctquery.id)";
Modified: trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/SQLite.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/SQLite.pm?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/SQLite.pm (original)
+++ trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/SQLite.pm Tue Apr 1 14:51:29 2008
@@ -76,6 +76,27 @@
return undef;
}
+sub DistinctQuery {
+ my $self = shift;
+ my $statementref = shift;
+ my $sb = shift;
+
+ return $self->SUPER::DistinctQuery( $statementref, $sb, @_ )
+ if $sb->_GroupClause || $sb->_OrderClause !~ /(?<!main)\./;
+
+ local $sb->{'group_by'} = [{FIELD => 'id'}];
+ local $sb->{'order_by'} = [
+ map {
+ ($_->{'ALIAS'}||'') ne "main"
+ ? { %{$_}, FIELD => ((($_->{'ORDER'}||'') =~ /^des/i)?'MAX':'MIN') ."(".$_->{FIELD}.")" }
+ : $_
+ }
+ @{$sb->{'order_by'}}
+ ];
+ $$statementref = "SELECT main.* FROM $$statementref";
+ $$statementref .= $sb->_GroupClause;
+ $$statementref .= $sb->_OrderClause;
+}
=head2 DistinctCount STATEMENTREF
@@ -88,10 +109,7 @@
my $self = shift;
my $statementref = shift;
- # Wrapper select query in a subselect as Oracle doesn't allow
- # DISTINCT against CLOB/BLOB column types.
$$statementref = "SELECT count(*) FROM (SELECT DISTINCT main.id FROM $$statementref )";
-
}
Modified: trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/mysql.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/mysql.pm?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/mysql.pm (original)
+++ trunk/libdbix-searchbuilder-perl/SearchBuilder/Handle/mysql.pm Tue Apr 1 14:51:29 2008
@@ -76,6 +76,50 @@
return(undef);
}
+sub DistinctQuery {
+ my $self = shift;
+ my $statementref = shift;
+ my $sb = shift;
+
+ return $self->SUPER::DistinctQuery( $statementref, $sb, @_ )
+ if $sb->_GroupClause || $sb->_OrderClause !~ /(?<!main)\./;
+
+ if ( substr($self->DatabaseVersion, 1) == 4 ) {
+ local $sb->{'group_by'} = [{FIELD => 'id'}];
+
+ my ($idx, @tmp, @specials) = (0, ());
+ foreach ( @{$sb->{'order_by'}} ) {
+ if ( !exists $_->{'ALIAS'} || ($_->{'ALIAS'}||'') eq "main" ) {
+ push @tmp, $_; next;
+ }
+
+ push @specials,
+ ((($_->{'ORDER'}||'') =~ /^des/i)?'MAX':'MIN')
+ ."(". $_->{'ALIAS'} .".". $_->{'FIELD'} .")"
+ ." __special_sort_$idx";
+ push @tmp, { ALIAS => '', FIELD => "__special_sort_$idx", ORDER => $_->{'ORDER'} };
+ $idx++;
+ }
+
+ local $sb->{'order_by'} = \@tmp;
+ $$statementref = "SELECT ". join( ", ", 'main.*', @specials ) ." FROM $$statementref";
+ $$statementref .= $sb->_GroupClause;
+ $$statementref .= $sb->_OrderClause;
+ } else {
+ local $sb->{'group_by'} = [{FIELD => 'id'}];
+ local $sb->{'order_by'} = [
+ map {
+ ($_->{'ALIAS'}||'') ne "main"
+ ? { %{$_}, FIELD => ((($_->{'ORDER'}||'') =~ /^des/i)?'MAX':'MIN') ."(".$_->{FIELD}.")" }
+ : $_
+ }
+ @{$sb->{'order_by'}}
+ ];
+ $$statementref = "SELECT main.* FROM $$statementref";
+ $$statementref .= $sb->_GroupClause;
+ $$statementref .= $sb->_OrderClause;
+ }
+}
1;
Modified: trunk/libdbix-searchbuilder-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libdbix-searchbuilder-perl/debian/changelog?rev=18246&op=diff
==============================================================================
--- trunk/libdbix-searchbuilder-perl/debian/changelog (original)
+++ trunk/libdbix-searchbuilder-perl/debian/changelog Tue Apr 1 14:51:29 2008
@@ -1,3 +1,9 @@
+libdbix-searchbuilder-perl (1.52-1) UNRELEASED; urgency=low
+
+ * New upstream release.
+
+ -- gregor herrmann <gregor+debian at comodo.priv.at> Tue, 01 Apr 2008 16:50:41 +0200
+
libdbix-searchbuilder-perl (1.51-1) unstable; urgency=low
[ gregor herrmann ]
More information about the Pkg-perl-cvs-commits
mailing list