r28572 - in /trunk/libsql-abstract-limit-perl: Build.PL Changes MANIFEST META.yml Makefile.PL debian/changelog debian/compat debian/control debian/rules lib/SQL/Abstract/Limit.pm t/01.sql.t t/02.syntax.t t/lib/
eloy at users.alioth.debian.org
eloy at users.alioth.debian.org
Tue Dec 23 14:58:37 UTC 2008
Author: eloy
Date: Tue Dec 23 14:58:34 2008
New Revision: 28572
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=28572
Log:
* New upstream release
* Move package to Debian Perl Group, change proper headers in debian/control
* debian/control:
+ Standards-Version updated to 3.8.0
* Upgraded to debhelper (>= 7), debian/compat updated
* Use debhelper rules.simple example as debian/rules
Added:
trunk/libsql-abstract-limit-perl/t/lib/
- copied from r28571, branches/upstream/libsql-abstract-limit-perl/current/t/lib/
Modified:
trunk/libsql-abstract-limit-perl/Build.PL
trunk/libsql-abstract-limit-perl/Changes
trunk/libsql-abstract-limit-perl/MANIFEST
trunk/libsql-abstract-limit-perl/META.yml
trunk/libsql-abstract-limit-perl/Makefile.PL
trunk/libsql-abstract-limit-perl/debian/changelog
trunk/libsql-abstract-limit-perl/debian/compat
trunk/libsql-abstract-limit-perl/debian/control
trunk/libsql-abstract-limit-perl/debian/rules
trunk/libsql-abstract-limit-perl/lib/SQL/Abstract/Limit.pm
trunk/libsql-abstract-limit-perl/t/01.sql.t
trunk/libsql-abstract-limit-perl/t/02.syntax.t
Modified: trunk/libsql-abstract-limit-perl/Build.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/Build.PL?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/Build.PL (original)
+++ trunk/libsql-abstract-limit-perl/Build.PL Tue Dec 23 14:58:34 2008
@@ -9,6 +9,11 @@
dist_version_from => 'lib/SQL/Abstract/Limit.pm',
requires => { 'Test::More' => 0,
'Test::Exception' => 0,
+ 'Test::Builder' => 0,
+ 'Test::Deep' => 0,
+ 'SQL::Abstract' => '1.2',
+ 'Scalar::Util' => 0,
+ 'Data::Dumper' => 0,
'DBI' => 0, # for DBI::Const::GetInfoType
'SQL::Abstract' => 1.2,
},
Modified: trunk/libsql-abstract-limit-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/Changes?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/Changes (original)
+++ trunk/libsql-abstract-limit-perl/Changes Tue Dec 23 14:58:34 2008
@@ -4,8 +4,15 @@
** indicates API changes
+0.14 22nd December 2008, 14:48
+ - added support for Informix, provided by Paul Falbe.
+
+0.13 21st December 2008, 23:20
+ - updated test suite to play with the latest release of SQL::Abstract.
+ Patches supplied by the SQL::Abstract dev team.
+
0.12 19th December 2005, 23:20
- - removed hidden dependency on Class::DBI ?the test suite.
+ - removed hidden dependency on Class::DBI in the test suite.
0.11 11th October 2005, 12:40
- re-arranged order of tests in _find_syntax() to avoid the eval
Modified: trunk/libsql-abstract-limit-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/MANIFEST?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/MANIFEST (original)
+++ trunk/libsql-abstract-limit-perl/MANIFEST Tue Dec 23 14:58:34 2008
@@ -13,3 +13,4 @@
t/test_data.csv
t/pod-coverage.t
t/pod.t
+t/lib/SQL/Abstract/Limit/Test.pm
Modified: trunk/libsql-abstract-limit-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/META.yml?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/META.yml (original)
+++ trunk/libsql-abstract-limit-perl/META.yml Tue Dec 23 14:58:34 2008
@@ -1,8 +1,18 @@
---- #YAML:1.0
-name: SQL-Abstract-Limit
-version: 0.12
-author:
- - David Baird <cpan at riverside-cms.co.uk>
-abstract: portable LIMIT emulation
-license: perl
-generated_by: Module::Build version 0.2611, without YAML.pm
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
+name: SQL-Abstract-Limit
+version: 0.14
+version_from: lib/SQL/Abstract/Limit.pm
+installdirs: site
+requires:
+ Data::Dumper: 0
+ DBI: 0
+ Scalar::Util: 0
+ SQL::Abstract: 1.2
+ Test::Builder: 0
+ Test::Deep: 0
+ Test::Exception: 0
+ Test::More: 0
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.17
Modified: trunk/libsql-abstract-limit-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/Makefile.PL?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/Makefile.PL (original)
+++ trunk/libsql-abstract-limit-perl/Makefile.PL Tue Dec 23 14:58:34 2008
@@ -2,15 +2,19 @@
use ExtUtils::MakeMaker;
WriteMakefile
(
- 'PL_FILES' => {},
- 'INSTALLDIRS' => 'site',
'NAME' => 'SQL::Abstract::Limit',
'VERSION_FROM' => 'lib/SQL/Abstract/Limit.pm',
'PREREQ_PM' => {
- 'Test::More' => 0,
+ 'DBI' => '0',
+ 'Data::Dumper' => '0',
'SQL::Abstract' => '1.2',
- 'Test::Exception' => 0,
- 'DBI' => 0
- }
+ 'Scalar::Util' => '0',
+ 'Test::Builder' => '0',
+ 'Test::Deep' => '0',
+ 'Test::Exception' => '0',
+ 'Test::More' => '0'
+ },
+ 'INSTALLDIRS' => 'site',
+ 'PL_FILES' => {}
)
;
Modified: trunk/libsql-abstract-limit-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/debian/changelog?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/debian/changelog (original)
+++ trunk/libsql-abstract-limit-perl/debian/changelog Tue Dec 23 14:58:34 2008
@@ -1,3 +1,14 @@
+libsql-abstract-limit-perl (2:0.14-1) UNRELEASED; urgency=low
+
+ * New upstream release
+ * Move package to Debian Perl Group, change proper headers in debian/control
+ * debian/control:
+ + Standards-Version updated to 3.8.0
+ * Upgraded to debhelper (>= 7), debian/compat updated
+ * Use debhelper rules.simple example as debian/rules
+
+ -- Krzysztof Krzyżaniak (eloy) <eloy at debian.org> Tue, 23 Dec 2008 15:25:41 +0100
+
libsql-abstract-limit-perl (2:0.12-1) unstable; urgency=low
* New upstream release
@@ -13,12 +24,6 @@
* New upstream release
-- Krzysztof Krzyzaniak (eloy) <eloy at debian.org> Fri, 9 Sep 2005 16:22:14 +0200
-
-libsql-abstract-limit-perl (1:0.1-1) UNRELEASED; urgency=low
-
- * (NOT RELEASED YET) New upstream release
-
- -- Krzysztof Krzyzaniak (eloy) <eloy at debian.org> Mon, 5 Sep 2005 23:53:49 +0200
libsql-abstract-limit-perl (0.033-3) unstable; urgency=low
Modified: trunk/libsql-abstract-limit-perl/debian/compat
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/debian/compat?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/debian/compat (original)
+++ trunk/libsql-abstract-limit-perl/debian/compat Tue Dec 23 14:58:34 2008
@@ -1,1 +1,1 @@
-5
+7
Modified: trunk/libsql-abstract-limit-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/debian/control?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/debian/control (original)
+++ trunk/libsql-abstract-limit-perl/debian/control Tue Dec 23 14:58:34 2008
@@ -1,15 +1,21 @@
Source: libsql-abstract-limit-perl
Section: perl
Priority: optional
-Build-Depends: debhelper (>= 5.0.0), libmodule-build-perl
-Build-Depends-Indep: perl (>= 5.8.0-7), libsql-abstract-perl, libtest-exception-perl, libdbi-perl, libdbd-anydata-perl, libclass-dbi-perl
-Maintainer: Debian Catalyst Maintainers <pkg-catalyst-maintainers at lists.alioth.debian.org>
-Uploaders: Krzysztof Krzyzaniak (eloy) <eloy at debian.org>, Florian Ragwitz <rafl at debianforum.de>
-Standards-Version: 3.7.2.1
+Build-Depends: debhelper (>= 7), libmodule-build-perl
+Build-Depends-Indep: perl (>= 5.8.0-7), libsql-abstract-perl,
+ libtest-exception-perl, libdbi-perl, libdbd-anydata-perl, libclass-dbi-perl
+Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
+Uploaders: Krzysztof Krzyzaniak (eloy) <eloy at debian.org>,
+ Florian Ragwitz <rafl at debianforum.de>
+Standards-Version: 3.8.0
+Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libsql-abstract-limit-perl
+Vcs-Browser: http://svn.debian.org/viewsvn/pkg-perl/trunk/libsql-abstract-limit-perl/
+Homepage: http://search.cpan.org/dist/SQL-Abstract-Limit/
+
Package: libsql-abstract-limit-perl
Architecture: all
Recommends: libdbd-anydata-perl, libclass-dbi-perl
Depends: ${perl:Depends}, libsql-abstract-perl, libtest-exception-perl, libdbi-perl
Description: portable LIMIT emulation
- SQL::Abstract::Limist is portability layer for SQL LIMIT emulation.
+ SQL::Abstract::Limit is portability layer for SQL LIMIT emulation.
Modified: trunk/libsql-abstract-limit-perl/debian/rules
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/debian/rules?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/debian/rules (original)
+++ trunk/libsql-abstract-limit-perl/debian/rules Tue Dec 23 14:58:34 2008
@@ -1,55 +1,22 @@
#!/usr/bin/make -f
-
-export PERL_MM_USE_DEFAULT=1
-
-PACKAGE=$(shell dh_listpackages)
-
-ifndef PERL
-PERL = /usr/bin/perl
-endif
-
-TMP =$(CURDIR)/debian/$(PACKAGE)
build: build-stamp
build-stamp:
- dh_testdir
- $(PERL) Build.PL installdirs=vendor
- OPTIMIZE="-Wall -O2 -g" $(PERL) Build
+ dh build
touch build-stamp
clean:
- dh_testdir
- dh_testroot
- -$(PERL) Build distclean
- dh_clean build-stamp install-stamp
+ dh clean
install: build install-stamp
install-stamp:
- dh_testdir
- dh_testroot
- dh_clean -k
- $(PERL) Build test
- $(PERL) Build install destdir=$(TMP)
+ dh install
touch install-stamp
-binary-arch:
-# We have nothing to do by default.
+binary-arch: install
-binary-indep: build install
- dh_testdir
- dh_testroot
- dh_installdocs README
- dh_installchangelogs Changes
- dh_perl
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-source diff:
- @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+binary-indep: install
+ dh binary-indep
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary
+binary: binary-arch binary-indep
Modified: trunk/libsql-abstract-limit-perl/lib/SQL/Abstract/Limit.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/lib/SQL/Abstract/Limit.pm?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/lib/SQL/Abstract/Limit.pm (original)
+++ trunk/libsql-abstract-limit-perl/lib/SQL/Abstract/Limit.pm Tue Dec 23 14:58:34 2008
@@ -15,7 +15,7 @@
=cut
-our $VERSION = '0.12';
+our $VERSION = '0.14';
# additions / error reports welcome !
our %SyntaxMap = ( mssql => 'Top',
@@ -25,7 +25,7 @@
db2 => 'FetchFirst',
ingres => '',
adabasd => '',
- informix => 'First',
+ informix => 'Skip',
# asany => '',
@@ -110,7 +110,7 @@
Top SQL/Server, MS Access
RowNum Oracle
FetchFirst DB2
- First Informix # not implemented yet
+ Skip Informix
GenericSubQ Sybase, plus any databases not recognised by this module
$dbh a DBI database handle
@@ -953,6 +953,9 @@
=end notes
+
+=notes
+
=item First
=over 8
@@ -968,7 +971,6 @@
=back
-=cut
sub _First {
my ( $self, $sql, $order, $rows, $offset ) = @_;
@@ -979,6 +981,43 @@
# might need to add to regex in 'where' method
}
+
+=end notes
+
+=cut
+
+=item Skip
+
+=over 8
+
+=item Syntax
+
+ select skip 5 limit 5 * from customer
+
+which will take rows 6 through 10 in the select.
+
+=item Databases
+
+Informix
+
+=back
+
+=cut
+
+sub _Skip {
+ my ( $self, $sql, $order, $rows, $offset ) = @_;
+
+ my $last = $rows + $offset;
+
+ my ( $order_by_up, $order_by_down ) = $self->_order_directions( $order );
+
+ $sql =~ s/^\s*(SELECT|select)//;
+
+ $sql = "select skip $offset limit $rows ".$sql." ".$self->_order_by( $order );
+
+ return $sql;
+}
+
1;
@@ -1060,6 +1099,8 @@
Thanks to Aaron Johnson for the Top syntax model (SQL/Server and MS Access).
Thanks to Emanuele Zeppieri for the IBM DB2 syntax model.
+
+Thanks to Paul Falbe for the Informix implementation.
=head1 TODO
Modified: trunk/libsql-abstract-limit-perl/t/01.sql.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/t/01.sql.t?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/t/01.sql.t (original)
+++ trunk/libsql-abstract-limit-perl/t/01.sql.t Tue Dec 23 14:58:34 2008
@@ -3,8 +3,13 @@
use strict;
use warnings;
-use Test::More tests => 22;
+use Test::More tests => 17;
use Test::Exception;
+
+use lib qw(t/lib);
+
+# dynamically load SQL::Abstract::Test;
+eval "use SQL::Abstract::Limit::Test; 1" or die $@;
=for notes
@@ -44,71 +49,101 @@
my $base_sql = 'requestor, worker, colC, colH FROM TheTable WHERE ( requestor = ? AND status != ? AND ( ( worker = ? ) OR ( worker = ? ) OR ( worker = ? ) ) )';
+my @expected_bind = qw/inna completed nwiger rcwe sfz/;
+
my $sql_ab = SQL::Abstract::Limit->new( limit_dialect => 'LimitOffset' );
my ( $stmt, @bind );
# LimitOffset
lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset) } 'select LimitOffset';
-like( $stmt, qr~\Q$base_sql\E~, 'base SQL' );
-like( $stmt, qr~^\QSELECT $base_sql ORDER BY pay, age LIMIT $limit OFFSET $offset\E$~, 'complete SQL' );
+
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT $base_sql ORDER BY pay, age LIMIT $limit OFFSET $offset", \@expected_bind,
+ 'LimitOffset SQL',
+);
# LimitXY
lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'LimitXY' ) } 'select LimitXY';
-like( $stmt, qr~\Q$base_sql\E~, 'base SQL' );
-like( $stmt, qr~^\QSELECT $base_sql ORDER BY pay, age LIMIT $offset, $limit\E$~, 'complete SQL' );
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT $base_sql ORDER BY pay, age LIMIT $offset, $limit", \@expected_bind,
+ 'LimitXY SQL',
+);
# RowsTo
-lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'RowsTo' ) } 'select LimitXY';
-like( $stmt, qr~\Q$base_sql\E~, 'base SQL' );
-like( $stmt, qr~^\QSELECT $base_sql ORDER BY pay, age ROWS $offset TO $last\E$~, 'complete SQL' );
+lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'RowsTo' ) } 'select RowsTo';
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT $base_sql ORDER BY pay, age ROWS $offset TO $last", \@expected_bind,
+ 'RowsTo SQL',
+);
-
-### TODO - regexes to match full query ###
# Top
lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'Top' ) } 'select Top';
-like( $stmt, qr~\Q$base_sql\E~, 'base SQL' );
-TODO: {
- local $TODO = 'need regex for complex query';
- like( $stmt, qr~^\Qcomplete SQL\E$~, 'complete SQL' );
-}
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT * FROM ("
+ . "SELECT TOP $limit * FROM ("
+ . "SELECT TOP $last $base_sql ORDER BY pay ASC, age ASC"
+ . ") AS foo ORDER BY pay DESC, age DESC"
+ .") AS bar ORDER BY pay ASC, age ASC", \@expected_bind,
+ 'Top SQL',
+);
+
+
# RowNum
lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'RowNum' ) } 'select RowNum';
-like( $stmt, qr~\Q$base_sql\E~, 'base SQL' );
-TODO: {
- local $TODO = 'need regex for complex query';
- like( $stmt, qr~^\Qcomplete SQL\E$~, 'complete SQL' );
-}
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT * FROM ("
+ . "SELECT A.*, ROWNUM r FROM ("
+ . "SELECT $base_sql ORDER BY pay, age"
+ . ") A WHERE ROWNUM < @{[$last + 1]}"
+ .") B WHERE r >= @{[$offset + 1]}", \@expected_bind,
+ 'RowNum SQL',
+);
+
+
# GenericSubQ
lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'GenericSubQ' ) } 'select GenericSubQ';
-my $gen_q_base_sql = $base_sql;
-$gen_q_base_sql =~ s/TheTable/TheTable X/;
-like( $stmt, qr~\Q$gen_q_base_sql\E~, 'GenericSubQ SQL' );
+(my $gen_q_base_sql = $base_sql) =~ s/TheTable/TheTable X/;
-TODO: {
- local $TODO = 'need regex for complex query';
- like( $stmt, qr~^\Qcomplete SQL\E$~, 'complete SQL' );
-}
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT $gen_q_base_sql AND"
+ . "(SELECT COUNT(*) FROM TheTable WHERE requestor > X.requestor)"
+ . " BETWEEN $offset AND $last ORDER BY requestor DESC", \@expected_bind,
+ 'GenericSubQ SQL',
+);
+
# FetchFirst
-lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'FetchFirst' ) } 'select GenericSubQ';
-like( $stmt, qr~\Q$base_sql\E~, 'base SQL' );
+lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'FetchFirst' ) } 'select FetchFirst';
-TODO: {
- local $TODO = 'need regex for complex query';
- like( $stmt, qr~^\Qcomplete SQL\E$~, 'complete SQL' );
-}
+is_same_sql_bind(
+ $stmt, \@bind,
+ "SELECT * FROM ("
+ . "SELECT * FROM ("
+ . "SELECT $base_sql ORDER BY pay ASC, age ASC FETCH FIRST $last ROWS ONLY"
+ . ") foo ORDER BY pay DESC, age DESC FETCH FIRST $limit ROWS ONLY"
+ . ") bar ORDER BY pay ASC, age ASC", \@expected_bind,
+ 'FetchFirst SQL',
+);
+
+# Skip
+lives_ok { ( $stmt, @bind ) = $sql_ab->select( $table, $fields, $where, $order, $limit, $offset, 'Skip' ) } 'select Skip';
+
+is_same_sql_bind(
+ $stmt, \@bind,
+ "select skip $offset limit $limit $base_sql ORDER BY pay, age", \@expected_bind,
+ 'Skip SQL',
+);
-
-
-#warn "\n\n" . $stmt;
-#warn join( ', ', @bind ) . "\n\n";
-#
-#
-warn " *** not yet testing subquery LIMIT emulations\n";
Modified: trunk/libsql-abstract-limit-perl/t/02.syntax.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libsql-abstract-limit-perl/t/02.syntax.t?rev=28572&op=diff
==============================================================================
--- trunk/libsql-abstract-limit-perl/t/02.syntax.t (original)
+++ trunk/libsql-abstract-limit-perl/t/02.syntax.t Tue Dec 23 14:58:34 2008
@@ -24,7 +24,7 @@
Top SQL/Server, MS Access
RowNum Oracle
FetchFirst DB2 # not implemented yet
- First Informix # not implemented yet
+ Skip Informix
GenericSubQ Sybase, plus any databases not recognised by this module
$dbh a DBI database handle
More information about the Pkg-perl-cvs-commits
mailing list