File: 10limit.t

package info (click to toggle)
libsql-statement-perl 1.412-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 812 kB
  • sloc: perl: 10,517; makefile: 14
file content (43 lines) | stat: -rw-r--r-- 1,147 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/perl -w
$|=1;
use strict;
#use lib  qw( ../lib );
use vars qw($DEBUG);
use Data::Dumper;
use Test::More tests => 2;
use SQL::Statement;
printf "SQL::Statement v.%s\n", $SQL::Statement::VERSION;
$DEBUG=0;
my $p = SQL::Parser->new();
my($stmt,$cache)=(undef,{});
do_(" CREATE TEMP TABLE tbl (c1 INT)   ");
do_(" INSERT INTO tbl VALUES($_) ") for 0..9;  # MySQL LIMIT is 0-based!
ok( '5^6^7^' eq fetchStr("SELECT * FROM tbl ORDER BY c1 LIMIT 5,3")
  , 'limit with order by');
ok( '5^6^7^' eq fetchStr("SELECT * FROM tbl LIMIT 5,3")
  , 'limit without order by');

sub parse {
    my($sql)=@_;
    eval { $stmt = SQL::Statement->new($sql,$p) };
    warn $@ if $@ and $DEBUG;
    return ($@) ? 0 : 1;
}
sub do_ {
    my($sql,@params)=@_;
    @params = () unless @params;
    $stmt = SQL::Statement->new($sql,$p);
    eval { $stmt->execute($cache,@params) };
    return ($@) ? 0 : 1;
}
sub fetchStr {
    my($sql,@params)=@_;
    do_($sql,@params);
    my $str='';
    while (my $r=$stmt->fetch) {
        $str .= sprintf "%s^",join'~',@$r;
    }
    return $str;
}
__DATA__
SELECT a FROM b JOIN c WHERE c=? AND e=7 ORDER BY f DESC LIMIT 5,2