5
# test for various numeric types
8
push @INC, "../common/";
17
[ 'TINYINT', -128, 127 ],
18
[ 'TINYINT UNSIGNED', 0, 255 ],
19
[ 'SMALLINT', -32768, 32768 ],
20
[ 'SMALLINT UNSIGNED', 0, 65535 ],
21
[ 'MEDIUMINT', -8388608, 8388607 ],
22
[ 'MEDIUMINT UNSIGNED', 0, 16777215 ],
23
[ 'INT', -2147483648, 2147483647 ],
24
[ 'INT UNSIGNED', 0, 4294967295 ],
25
[ 'BIGINT', -9223372036854775808, 9223372036854775807 ],
26
[ 'BIGINT UNSIGNED', 0, 18446744073709551615 ],
27
[ 'FLOAT', -32768, 32768 ],
28
[ 'DOUBLE', -2147483648, 2147483647 ],
31
my $table = 'hstesttbl';
33
for my $rec (@$numeric_types) {
34
my ($typ, $minval, $maxval) = @$rec;
45
for (my $i = 0; $i < 5; ++$i) {
49
push(@vals, int($v1));
51
push(@vals, int($v2));
53
@vals = sort { $a <=> $b } @vals;
55
test_one($typ, \@vals);
60
my ($typ, $values) = @_;
61
$dbh = hstest::init_testdb();
63
"create table $table (" .
64
"k $typ primary key, " .
67
"index i1(v1), index i2(v2, v1)) " .
68
"engine = myisam default charset = binary");
69
my $hs = hstest::get_hs_connection(undef, 9999);
70
my $dbname = $hstest::conf{dbname};
71
$hs->open_index(1, $dbname, $table, '', 'k,v1,v2');
72
$hs->open_index(2, $dbname, $table, 'i1', 'k,v1,v2');
73
$hs->open_index(3, $dbname, $table, 'i2', 'k,v1,v2');
74
for my $k (@$values) {
76
$hs->execute_single(1, '+', [ $k, $kstr, $k ], 0, 0);
79
for my $k (@$values) {
83
$r = $hs->execute_single(1, '=', [ $k ], 1, 0);
85
($rk, $rv1, $rv2) = @$r;
86
print "PK[$k] $rk $rv1 $rv2\n";
87
$r = $hs->execute_single(2, '=', [ $kstr ], 1, 0);
89
($rk, $rv1, $rv2) = @$r;
90
print "I1[$kstr] $rk $rv1 $rv2\n";
91
$r = $hs->execute_single(3, '=', [ $k, $kstr ], 1, 0);
93
($rk, $rv1, $rv2) = @$r;
94
print "I2[$k, $kstr] $rk $rv1 $rv2\n";
95
$r = $hs->execute_single(3, '=', [ $k ], 1, 0);
97
($rk, $rv1, $rv2) = @$r;
98
print "I2p[$k] $rk $rv1 $rv2\n";
103
print "DUMP_TABLE_BEGIN\n";
104
my $aref = $dbh->selectall_arrayref("select k,v1,v2 from $table order by k");
105
for my $row (@$aref) {
106
my ($k, $v1, $v2) = @$row;
107
$v1 = "[null]" if !defined($v1);
108
$v2 = "[null]" if !defined($v2);
109
print "$k $v1 $v2\n";
110
# print "MISMATCH\n" if ($valmap{$k} ne $v);
112
print "DUMP_TABLE_END\n";