mirror of
https://github.com/tursodatabase/limbo.git
synced 2025-07-07 12:35:00 +00:00
1447 lines
28 KiB
Tcl
Executable file
1447 lines
28 KiB
Tcl
Executable file
#!/usr/bin/env tclsh
|
|
|
|
set testdir [file dirname $argv0]
|
|
source $testdir/tester.tcl
|
|
|
|
# math_expression_fuzz_run failure with seed 1743159584
|
|
do_execsql_test fuzz-test-failure {
|
|
SELECT mod(atanh(tanh(-1.0)), ((1.0))) / ((asinh(-1.0) / 2.0 * 1.0) + pow(0.0, 1.0) + 0.5);
|
|
} {-16.8596516555675}
|
|
|
|
do_execsql_test add-int-1 {
|
|
SELECT 10 + 1
|
|
} {11}
|
|
|
|
do_execsql_test add-int-2 {
|
|
SELECT 0xA + 0xFF
|
|
} {265}
|
|
|
|
do_execsql_test add-int-3 {
|
|
SELECT 0xA + 1
|
|
} {11}
|
|
|
|
|
|
do_execsql_test add-float {
|
|
SELECT 10.1 + 0.3
|
|
} {10.4}
|
|
|
|
do_execsql_test add-int-float-1 {
|
|
SELECT 10 + 0.1
|
|
} {10.1}
|
|
|
|
do_execsql_test add-int-float-2 {
|
|
SELECT 0xa + 0.1
|
|
} {10.1}
|
|
|
|
do_execsql_test add-agg-int-agg-int {
|
|
SELECT sum(1) + sum(2)
|
|
} {3}
|
|
|
|
do_execsql_test add-agg-int-agg-float {
|
|
SELECT sum(1) + sum(2.5)
|
|
} {3.5}
|
|
|
|
do_execsql_test add-agg-float-agg-int {
|
|
SELECT sum(1.5) + sum(2)
|
|
} {3.5}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' 0
|
|
2 'a' 10 10
|
|
3 10 'a' 10
|
|
4 'a' 11.0 11.0
|
|
5 11.0 'a' 11.0
|
|
7 '1' '2' 3
|
|
8 '1.0' '2' 3.0
|
|
9 '1.0' '3.0' 4.0
|
|
} {
|
|
do_execsql_test add-text-$testnum "SELECT $lhs + $rhs" $::ans
|
|
}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 '9223372036854775807' '0' 9223372036854775807
|
|
2 '9223372036854775807' '1' 9.22337203685478e+18
|
|
3 9223372036854775807 0 9223372036854775807
|
|
4 9223372036854775807 1 9.22337203685478e+18
|
|
5 '-9223372036854775808' '0' -9223372036854775808
|
|
6 '-9223372036854775808' '-1' -9.22337203685478e+18
|
|
7 -9223372036854775808 0 -9223372036854775808
|
|
8 -9223372036854775808 -1 -9.22337203685478e+18
|
|
} {
|
|
do_execsql_test add-overflow-$testnum "SELECT $lhs + $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test subtract-int {
|
|
SELECT 10 - 1
|
|
} {9}
|
|
|
|
do_execsql_test subtract-float {
|
|
SELECT 10.2 - 0.1
|
|
} {10.1}
|
|
|
|
do_execsql_test subtract-int-float {
|
|
SELECT 10 - 0.1
|
|
} {9.9}
|
|
|
|
do_execsql_test subtract-agg-int-agg-int {
|
|
SELECT sum(3) - sum(1)
|
|
} {2}
|
|
|
|
do_execsql_test subtract-agg-int-agg-float {
|
|
SELECT sum(3) - sum(1.5)
|
|
} {1.5}
|
|
|
|
do_execsql_test subtract-agg-float-agg-int {
|
|
SELECT sum(3.5) - sum(1)
|
|
} {2.5}
|
|
|
|
do_execsql_test subtract-blob {
|
|
SELECT -x'11'
|
|
} {0}
|
|
|
|
do_execsql_test subtract-blob-empty {
|
|
SELECT -x''
|
|
} {0}
|
|
|
|
do_execsql_test subtract-blob-charcter {
|
|
SELECT -'hi';
|
|
} {0}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' 0
|
|
2 'a' 10 -10
|
|
3 10 'a' 10
|
|
4 'a' 11.0 -11.0
|
|
5 11.0 'a' 11.0
|
|
7 '1' '2' -1
|
|
8 '1.0' '2' -1.0
|
|
9 '1.0' '3.0' -2.0
|
|
} {
|
|
do_execsql_test subtract-text-$testnum "SELECT $lhs - $rhs" $::ans
|
|
}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 '9223372036854775807' '0' 9223372036854775807
|
|
2 '9223372036854775807' '-1' 9.22337203685478e+18
|
|
3 9223372036854775807 0 9223372036854775807
|
|
4 9223372036854775807 -1 9.22337203685478e+18
|
|
5 '-9223372036854775808' '0' -9223372036854775808
|
|
6 '-9223372036854775808' '1' -9.22337203685478e+18
|
|
7 -9223372036854775808 0 -9223372036854775808
|
|
8 -9223372036854775808 1 -9.22337203685478e+18
|
|
} {
|
|
do_execsql_test subtract-overflow-$testnum "SELECT $lhs - $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test multiply-int {
|
|
SELECT 10 * 2
|
|
} {20}
|
|
|
|
do_execsql_test multiply-float {
|
|
SELECT 10.2 * 2.2
|
|
} {22.44}
|
|
|
|
do_execsql_test multiply-int-float {
|
|
SELECT 10 * 1.45
|
|
} {14.5}
|
|
|
|
do_execsql_test multiply-float-int {
|
|
SELECT 1.45 * 10
|
|
} {14.5}
|
|
|
|
do_execsql_test multiply-agg-int-agg-int {
|
|
SELECT sum(2) * sum(3)
|
|
} {6}
|
|
|
|
do_execsql_test multiply-agg-int-agg-float {
|
|
SELECT sum(2) * sum(3.5)
|
|
} {7.0}
|
|
|
|
do_execsql_test multiply-agg-float-agg-int {
|
|
SELECT sum(2.5) * sum(3)
|
|
} {7.5}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' 0
|
|
2 'a' 10 0
|
|
3 10 'a' 0
|
|
4 'a' 11.0 0.0
|
|
5 11.0 'a' 0.0
|
|
7 '1' '2' 2
|
|
8 '1.0' '2' 2.0
|
|
9 '1.0' '3.0' 3.0
|
|
} {
|
|
do_execsql_test multiply-text-$testnum "SELECT $lhs * $rhs" $::ans
|
|
}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 '9223372036854775807' '1' 9223372036854775807
|
|
2 '9223372036854775807' '2' 1.84467440737096e+19
|
|
3 9223372036854775807 1 9223372036854775807
|
|
4 9223372036854775807 2 1.84467440737096e+19
|
|
5 '-9223372036854775808' '1' -9223372036854775808
|
|
6 '-9223372036854775808' '2' -1.84467440737096e+19
|
|
7 -9223372036854775808 1 -9223372036854775808
|
|
8 -9223372036854775808 2 -1.84467440737096e+19
|
|
} {
|
|
do_execsql_test multiply-overflow-$testnum "SELECT $lhs * $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test divide-int {
|
|
SELECT 10 / 2
|
|
} {5}
|
|
|
|
do_execsql_test divide-int-no-fraction {
|
|
SELECT 10 / 3
|
|
} {3}
|
|
|
|
do_execsql_test divide-float {
|
|
SELECT 10.6 / 2.5
|
|
} {4.24}
|
|
|
|
do_execsql_test divide-int-float {
|
|
SELECT 10 / 4.0
|
|
} {2.5}
|
|
|
|
do_execsql_test divide-float-int {
|
|
SELECT 10.0 / 4
|
|
} {2.5}
|
|
|
|
do_execsql_test divide-by-zero {
|
|
SELECT 10 / 0
|
|
} {}
|
|
|
|
do_execsql_test divide-int-null {
|
|
SELECT 10 / null
|
|
} {}
|
|
|
|
do_execsql_test divide-null-int {
|
|
SELECT null / 10
|
|
} {}
|
|
|
|
do_execsql_test divide-null {
|
|
SELECT null / null
|
|
} {}
|
|
|
|
do_execsql_test divide-agg-int-agg-int {
|
|
SELECT sum(4) / sum(2)
|
|
} {2}
|
|
|
|
do_execsql_test divide-agg-int-agg-float {
|
|
SELECT sum(4) / sum(2.0)
|
|
} {2.0}
|
|
|
|
do_execsql_test divide-agg-float-agg-int {
|
|
SELECT sum(4.0) / sum(2)
|
|
} {2.0}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' {}
|
|
2 'a' 10 0
|
|
3 10 'a' {}
|
|
4 'a' 11.0 0.0
|
|
5 11.0 'a' {}
|
|
7 '1' '2' 0
|
|
8 '1.0' '2' 0.5
|
|
9 '1.0' '4.0' 0.25
|
|
} {
|
|
do_execsql_test divide-text-$testnum "SELECT $lhs / $rhs" $::ans
|
|
}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
5 '-9223372036854775808' '0' {}
|
|
6 '-9223372036854775808' '-1' 9.22337203685478e+18
|
|
7 -9223372036854775808 0 {}
|
|
8 -9223372036854775808 -1 9.22337203685478e+18
|
|
} {
|
|
do_execsql_test divide-overflow-$testnum "SELECT $lhs / $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test add-agg-int {
|
|
SELECT sum(id) + 10 from products
|
|
} {76}
|
|
|
|
do_execsql_test add-int-agg {
|
|
SELECT 10 + sum(id) from products
|
|
} {76}
|
|
|
|
do_execsql_test add-agg-float {
|
|
SELECT sum(id) + 10.1 from products
|
|
} {76.1}
|
|
|
|
do_execsql_test add-float-agg {
|
|
SELECT 10.1 + sum(id) from products
|
|
} {76.1}
|
|
|
|
do_execsql_test add-agg-int-agg-int {
|
|
SELECT sum(id) + sum(id) from products
|
|
} {132}
|
|
|
|
do_execsql_test add-agg-float-agg-float {
|
|
SELECT sum(price) + sum(price) from products
|
|
} {1246.0}
|
|
|
|
do_execsql_test add-agg-int-agg-float {
|
|
SELECT sum(id) + sum(price) from products
|
|
} {689.0}
|
|
|
|
do_execsql_test add-float-text-edgecase {
|
|
SELECT '-123.22342-24' + '232.3x32';
|
|
} {109.07658}
|
|
|
|
do_execsql_test add-str-edgecase {
|
|
SELECT '-1+23.22342-24' + '2-32.3x32';
|
|
} {1}
|
|
|
|
|
|
|
|
do_execsql_test subtract-agg-int {
|
|
SELECT sum(id) - 10 from products
|
|
} {56}
|
|
|
|
do_execsql_test subtract-int-agg {
|
|
SELECT 10 - sum(id) from products
|
|
} {-56}
|
|
|
|
do_execsql_test subtract-agg-float {
|
|
SELECT sum(id) - 10.1 from products
|
|
} {55.9}
|
|
|
|
do_execsql_test subtract-float-agg {
|
|
SELECT 10.1 - sum(id) from products
|
|
} {-55.9}
|
|
|
|
do_execsql_test subtract-agg-int-agg-int {
|
|
SELECT sum(id) - sum(id) from products
|
|
} {0}
|
|
|
|
do_execsql_test subtract-agg-float-agg-float {
|
|
SELECT sum(price) - sum(price) from products
|
|
} {0.0}
|
|
|
|
do_execsql_test subtract-agg-int-agg-float {
|
|
SELECT sum(id) - sum(price) from products
|
|
} {-557.0}
|
|
|
|
do_execsql_test subtract-agg-float-agg-int {
|
|
SELECT sum(price) - sum(id) from products
|
|
} {557.0}
|
|
|
|
do_execsql_test subtract-str-float-edgecase {
|
|
SELECT '-123.22342-24' - '232.3x32';
|
|
} {-355.52342}
|
|
|
|
|
|
do_execsql_test multiply-agg-int {
|
|
SELECT sum(id) * 10 from products
|
|
} {660}
|
|
|
|
do_execsql_test multiply-int-agg {
|
|
SELECT 10 * sum(id) from products
|
|
} {660}
|
|
|
|
do_execsql_test multiply-agg-float {
|
|
SELECT sum(id) * 10.1 from products
|
|
} {666.6}
|
|
|
|
do_execsql_test multiply-float-agg {
|
|
SELECT 10.1 * sum(id) from products
|
|
} {666.6}
|
|
|
|
do_execsql_test multiply-agg-int-agg-int {
|
|
SELECT sum(id) * sum(id) from products
|
|
} {4356}
|
|
|
|
do_execsql_test multiply-agg-float-agg-float {
|
|
SELECT sum(price) * sum(price) from products
|
|
} {388129.0}
|
|
|
|
do_execsql_test multiply-agg-int-agg-float {
|
|
SELECT sum(id) * sum(price) from products
|
|
} {41118.0}
|
|
|
|
do_execsql_test multiply-agg-float-agg-int {
|
|
SELECT sum(price) * sum(id) from products
|
|
} {41118.0}
|
|
|
|
do_execsql_test multiply-str-floats-edgecase {
|
|
SELECT '-123.22341-24' * '232.3x32';
|
|
} {-28624.798143}
|
|
|
|
|
|
do_execsql_test divide-agg-int {
|
|
SELECT sum(id) / 10 from products
|
|
} {6}
|
|
|
|
do_execsql_test divide-int-agg {
|
|
SELECT 660 / sum(id) from products
|
|
} {10}
|
|
|
|
do_execsql_test divide-agg-float {
|
|
SELECT sum(id) / 1.5 from products
|
|
} {44.0}
|
|
|
|
do_execsql_test divide-float-agg {
|
|
SELECT 66.0 / sum(id) from products
|
|
} {1.0}
|
|
|
|
do_execsql_test divide-agg-int-agg-int {
|
|
SELECT sum(id) / sum(id) from products
|
|
} {1}
|
|
|
|
do_execsql_test divide-agg-float-agg-float {
|
|
SELECT sum(price) / sum(price) from products
|
|
} {1.0}
|
|
|
|
do_execsql_test divide-agg-int-agg-float {
|
|
SELECT sum(id) / min(price) from products
|
|
} {66.0}
|
|
|
|
do_execsql_test divide-agg-float-agg-int {
|
|
SELECT min(price) / min(id) from products
|
|
} {1.0}
|
|
|
|
|
|
do_execsql_test bitwise-and-int-null {
|
|
SELECT 1234 & NULL
|
|
} {}
|
|
|
|
do_execsql_test bitwise-and-int-int {
|
|
SELECT 1234 & 1234
|
|
} {1234}
|
|
|
|
do_execsql_test bitwise-and-int-float {
|
|
SELECT 660 & 261.8
|
|
} {4}
|
|
|
|
do_execsql_test bitwise-and-float-float {
|
|
SELECT 660.63 & 261.8
|
|
} {4}
|
|
|
|
do_execsql_test bitwise-and-float-int-rev {
|
|
SELECT 261.8 & 660
|
|
} {4}
|
|
|
|
do_execsql_test bitwise-and-int-agg-int {
|
|
SELECT 8261 & sum(id) from products
|
|
} {64}
|
|
|
|
do_execsql_test bitwise-and-int-agg-float {
|
|
SELECT 1036.6 & sum(id) from products
|
|
} {0}
|
|
|
|
do_execsql_test bitwise-and-int-agg-int-agg {
|
|
SELECT sum(id) & sum(id) from products
|
|
} {66}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' 0
|
|
2 'a' 10 0
|
|
3 10 'a' 0
|
|
4 'a' 11.0 0
|
|
5 11.0 'a' 0
|
|
7 '1' '2' 0
|
|
8 '1.0' '2' 0
|
|
9 '1.0' '4.0' 0
|
|
10 '1.0' '1.0' 1
|
|
11 '1' '1' 1
|
|
} {
|
|
do_execsql_test bitwise-and-text-$testnum "SELECT $lhs & $rhs" $::ans
|
|
}
|
|
|
|
|
|
do_execsql_test bitwise-or-int-null {
|
|
SELECT 1234 | NULL
|
|
} {}
|
|
|
|
do_execsql_test bitwise-or-null-int {
|
|
SELECT NULL | 1234
|
|
} {}
|
|
|
|
do_execsql_test bitwise-or-int-int {
|
|
SELECT 4321 | 1234
|
|
} {5363}
|
|
|
|
do_execsql_test bitwise-or-int-float {
|
|
SELECT 660 | 1234.0
|
|
} {1750}
|
|
|
|
do_execsql_test bitwise-or-int-agg {
|
|
SELECT 18823 | sum(id) from products
|
|
} {18887}
|
|
|
|
do_execsql_test bitwise-or-float-float {
|
|
SELECT 1234.6 | 5432.2
|
|
} {5626}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' 0
|
|
2 'a' 10 10
|
|
3 10 'a' 10
|
|
4 'a' 11.0 11
|
|
5 11.0 'a' 11
|
|
7 '1' '2' 3
|
|
8 '1.0' '2' 3
|
|
9 '1.0' '4.0' 5
|
|
10 '1.0' '1.0' 1
|
|
11 '1' '1' 1
|
|
} {
|
|
do_execsql_test bitwise-or-text-$testnum "SELECT $lhs | $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test bitwise-and-int-agg-int-agg {
|
|
SELECT sum(id) | sum(id) from products
|
|
} {66}
|
|
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
int-int 1 2 4
|
|
int-neg_int 8 -2 2
|
|
int-float 1 4.0 16
|
|
int-text 1 'a' 1
|
|
int-text_float 1 '3.0' 8
|
|
int-text_int 1 '1' 2
|
|
int-null 1 NULL {}
|
|
int-int-overflow 1 64 0
|
|
int-int-underflow 1 -64 0
|
|
int-float-overflow 1 64.0 0
|
|
int-float-underflow 1 -64.0 0
|
|
} {
|
|
do_execsql_test shift-left-$testname "SELECT $lhs << $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
float-int 1.0 2 4
|
|
float-neg_int 8.0 -2 2
|
|
float-float 1.0 4.0 16
|
|
float-text 1.0 'a' 1
|
|
float-text_float 1.0 '3.0' 8
|
|
float-text_int 1.0 '1' 2
|
|
float-null 1.0 NULL {}
|
|
float-int-overflow 1.0 64 0
|
|
float-int-underflow 1.0 -64 0
|
|
float-float-overflow 1.0 64.0 0
|
|
float-float-underflow 1.0 -64.0 0
|
|
} {
|
|
do_execsql_test shift-left-$testname "SELECT $lhs << $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
text-int 'a' 2 0
|
|
text-float 'a' 4.0 0
|
|
text-text 'a' 'a' 0
|
|
text_int-text_int '1' '1' 2
|
|
text_int-text_float '1' '3.0' 8
|
|
text_int-text '1' 'a' 1
|
|
text_float-text_int '1.0' '1' 2
|
|
text_float-text_float '1.0' '3.0' 8
|
|
text_float-text '1.0' 'a' 1
|
|
text-null '1' NULL {}
|
|
} {
|
|
do_execsql_test shift-left-$testname "SELECT $lhs << $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
null-int NULL 2 {}
|
|
null-float NULL 4.0 {}
|
|
null-text NULL 'a' {}
|
|
null-null NULL NULL {}
|
|
} {
|
|
do_execsql_test shift-left-$testname "SELECT $lhs << $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
int-int 8 2 2
|
|
int-neg_int 8 -2 32
|
|
int-float 8 1.0 4
|
|
int-text 8 'a' 8
|
|
int-text_float 8 '3.0' 1
|
|
int-text_int 8 '1' 4
|
|
int-null 8 NULL {}
|
|
int-int-overflow 8 64 0
|
|
int-int-underflow 8 -64 0
|
|
int-float-overflow 8 64.0 0
|
|
int-float-underflow 8 -64.0 0
|
|
} {
|
|
do_execsql_test shift-right-$testname "SELECT $lhs >> $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
float-int 8.0 2 2
|
|
float-neg_int 8.0 -2 32
|
|
float-float 8.0 1.0 4
|
|
float-text 8.0 'a' 8
|
|
float-text_float 8.0 '3.0' 1
|
|
float-text_int 8.0 '1' 4
|
|
float-null 8.0 NULL {}
|
|
float-int-overflow 8.0 64 0
|
|
float-int-underflow 8.0 -64 0
|
|
float-float-overflow 8.0 64.0 0
|
|
float-float-underflow 8.0 -64.0 0
|
|
} {
|
|
do_execsql_test shift-right-$testname "SELECT $lhs >> $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
text-int 'a' 2 0
|
|
text-float 'a' 4.0 0
|
|
text-text 'a' 'a' 0
|
|
text_int-text_int '8' '1' 4
|
|
text_int-text_float '8' '3.0' 1
|
|
text_int-text '8' 'a' 8
|
|
text_float-text_int '8.0' '1' 4
|
|
text_float-text_float '8.0' '3.0' 1
|
|
text_float-text '8.0' 'a' 8
|
|
text-int-text-edge '123-23' 2 30
|
|
text-signed-text-edge '-123' '2xi' -31
|
|
text-null '8' NULL {}
|
|
} {
|
|
do_execsql_test shift-right-$testname "SELECT $lhs >> $rhs" $::ans
|
|
}
|
|
|
|
foreach {testname lhs rhs ans} {
|
|
null-int NULL 2 {}
|
|
null-float NULL 4.0 {}
|
|
null-text NULL 'a' {}
|
|
null-null NULL NULL {}
|
|
} {
|
|
do_execsql_test shift-right-$testname "SELECT $lhs >> $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test bitwise-not-null {
|
|
SELECT ~NULL
|
|
} {}
|
|
|
|
do_execsql_test bitwise-not-int {
|
|
SELECT ~1234
|
|
} {-1235}
|
|
|
|
do_execsql_test bitwise-not-float {
|
|
SELECT ~823.34
|
|
} {-824}
|
|
|
|
do_execsql_test bitwise-not-text-float {
|
|
SELECT ~'823.34'
|
|
} {-824}
|
|
|
|
do_execsql_test bitwise-not-text-int-1 {
|
|
SELECT ~'1234'
|
|
} {-1235}
|
|
|
|
do_execsql_test bitwise-not-text-int-2 {
|
|
SELECT ~0xA
|
|
} {-11}
|
|
|
|
do_execsql_test bitwise-not-scalar-float {
|
|
SELECT ~abs(693.9)
|
|
} {-694}
|
|
|
|
do_execsql_test bitwise-not-scalar-int {
|
|
SELECT ~abs(7566)
|
|
} {-7567}
|
|
|
|
do_execsql_test bitwise-not-agg-int {
|
|
SELECT ~sum(693)
|
|
} {-694}
|
|
|
|
do_execsql_test bitwise-not-agg-and-agg {
|
|
SELECT ~sum(693) & sum(-302)
|
|
} {-958}
|
|
|
|
do_execsql_test bitwise-not-agg-int {
|
|
SELECT ~sum(693)
|
|
} {-694}
|
|
|
|
do_execsql_test bitwise-not-zero {
|
|
SELECT ~0
|
|
} {-1}
|
|
|
|
do_execsql_test bitwise-not-empty-blob {
|
|
SELECT ~x''
|
|
} {-1}
|
|
|
|
do_execsql_test bitwise-not-cast-blob {
|
|
SELECT ~ CAST ('af' AS BLOB);
|
|
} {-1}
|
|
|
|
do_execsql_test bitwise-not-blob {
|
|
SELECT ~ x'0000';
|
|
} {-1}
|
|
|
|
do_execsql_test bitwise-not-blob-2 {
|
|
SELECT ~ x'0001';
|
|
} {-1}
|
|
|
|
|
|
do_execsql_test pi {
|
|
SELECT pi()
|
|
} {3.14159265358979}
|
|
|
|
|
|
do_execsql_test acos-int {
|
|
SELECT acos(1)
|
|
} {0.0}
|
|
|
|
do_execsql_test acos-float {
|
|
SELECT acos(-0.5)
|
|
} {2.0943951023932}
|
|
|
|
do_execsql_test acos-str {
|
|
SELECT acos('-0.5')
|
|
} {2.0943951023932}
|
|
|
|
do_execsql_test acos-null {
|
|
SELECT acos(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test acosh-int {
|
|
SELECT acosh(1)
|
|
} {0.0}
|
|
|
|
do_execsql_test acosh-float {
|
|
SELECT acosh(1.5)
|
|
} {0.962423650119207}
|
|
|
|
do_execsql_test acosh-str {
|
|
SELECT acosh('1.5')
|
|
} {0.962423650119207}
|
|
|
|
do_execsql_test acosh-invalid {
|
|
SELECT acosh(0.99)
|
|
} {}
|
|
|
|
do_execsql_test acosh-null {
|
|
SELECT acosh(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test asin-int {
|
|
SELECT asin(1)
|
|
} {1.5707963267949}
|
|
|
|
do_execsql_test asin-float {
|
|
SELECT asin(-0.5)
|
|
} {-0.523598775598299}
|
|
|
|
do_execsql_test asin-str {
|
|
SELECT asin('-0.5')
|
|
} {-0.523598775598299}
|
|
|
|
do_execsql_test asin-null {
|
|
SELECT asin(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test sin-int {
|
|
SELECT sin(1)
|
|
} {0.841470984807897}
|
|
|
|
do_execsql_test sin-float {
|
|
SELECT sin(-0.5)
|
|
} {-0.479425538604203}
|
|
|
|
do_execsql_test sin-str {
|
|
SELECT sin('-0.5')
|
|
} {-0.479425538604203}
|
|
|
|
do_execsql_test sin-null {
|
|
SELECT sin(null)
|
|
} {}
|
|
|
|
do_execsql_test sin-products-id {
|
|
SELECT sin(id) from products limit 5
|
|
} {0.841470984807897
|
|
0.909297426825682
|
|
0.141120008059867
|
|
-0.756802495307928
|
|
-0.958924274663138}
|
|
|
|
|
|
do_execsql_test asinh-int {
|
|
SELECT asinh(1)
|
|
} {0.881373587019543}
|
|
|
|
do_execsql_test asinh-float {
|
|
SELECT asinh(-0.5)
|
|
} {-0.481211825059603}
|
|
|
|
do_execsql_test asinh-str {
|
|
SELECT asinh('-0.5')
|
|
} {-0.481211825059603}
|
|
|
|
do_execsql_test asinh-null {
|
|
SELECT asinh(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test atan-int {
|
|
SELECT atan(1)
|
|
} {0.785398163397448}
|
|
|
|
do_execsql_test atan-float {
|
|
SELECT atan(-0.5)
|
|
} {-0.463647609000806}
|
|
|
|
do_execsql_test atan-str {
|
|
SELECT atan('-0.5')
|
|
} {-0.463647609000806}
|
|
|
|
do_execsql_test atan-null {
|
|
SELECT atan(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test tan-int {
|
|
SELECT tan(1)
|
|
} {1.5574077246549}
|
|
|
|
do_execsql_test tan-float {
|
|
SELECT tan(-0.5)
|
|
} {-0.54630248984379}
|
|
|
|
do_execsql_test tan-str {
|
|
SELECT tan('-0.5')
|
|
} {-0.54630248984379}
|
|
|
|
do_execsql_test tan-null {
|
|
SELECT tan(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test atanh-int {
|
|
SELECT atanh(0)
|
|
} {0.0}
|
|
|
|
do_execsql_test atanh-float {
|
|
SELECT atanh(-0.5)
|
|
} {-0.549306144334055}
|
|
|
|
do_execsql_test atanh-str {
|
|
SELECT atanh('-0.5')
|
|
} {-0.549306144334055}
|
|
|
|
do_execsql_test atanh-null {
|
|
SELECT atanh(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test ceil-int {
|
|
SELECT ceil(1)
|
|
} {1}
|
|
|
|
do_execsql_test ceil-float {
|
|
SELECT ceil(-1.5)
|
|
} {-1.0}
|
|
|
|
do_execsql_test ceil-str {
|
|
SELECT ceil('1.5')
|
|
} {2.0}
|
|
|
|
do_execsql_test ceil-null {
|
|
SELECT ceil(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test ceiling-int {
|
|
SELECT ceiling(1)
|
|
} {1}
|
|
|
|
do_execsql_test ceiling-float {
|
|
SELECT ceiling(-1.5)
|
|
} {-1.0}
|
|
|
|
do_execsql_test ceiling-str {
|
|
SELECT ceiling('1.5')
|
|
} {2.0}
|
|
|
|
do_execsql_test ceiling-null {
|
|
SELECT ceiling(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test cos-int {
|
|
SELECT cos(1)
|
|
} {0.54030230586814}
|
|
|
|
do_execsql_test cos-float {
|
|
SELECT cos(-0.5)
|
|
} {0.877582561890373}
|
|
|
|
do_execsql_test cos-str {
|
|
SELECT cos('-0.5')
|
|
} {0.877582561890373}
|
|
|
|
do_execsql_test cos-null {
|
|
SELECT cos(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test cosh-int {
|
|
SELECT cosh(1)
|
|
} {1.54308063481524}
|
|
|
|
do_execsql_test cosh-float {
|
|
SELECT cosh(-0.5)
|
|
} {1.12762596520638}
|
|
|
|
do_execsql_test cosh-str {
|
|
SELECT cosh('-0.5')
|
|
} {1.12762596520638}
|
|
|
|
do_execsql_test cosh-null {
|
|
SELECT cosh(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test degrees-int {
|
|
SELECT degrees(1)
|
|
} {57.2957795130823}
|
|
|
|
do_execsql_test degrees-float {
|
|
SELECT degrees(-0.5)
|
|
} {-28.6478897565412}
|
|
|
|
do_execsql_test degrees-str {
|
|
SELECT degrees('-0.5')
|
|
} {-28.6478897565412}
|
|
|
|
do_execsql_test degrees-null {
|
|
SELECT degrees(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test exp-int {
|
|
SELECT exp(1)
|
|
} {2.71828182845905}
|
|
|
|
do_execsql_test exp-float {
|
|
SELECT exp(-0.5)
|
|
} {0.606530659712633}
|
|
|
|
do_execsql_test exp-str {
|
|
SELECT exp('-0.5')
|
|
} {0.606530659712633}
|
|
|
|
do_execsql_test exp-null {
|
|
SELECT exp(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test floor-int {
|
|
SELECT floor(1)
|
|
} {1}
|
|
|
|
do_execsql_test floor-float {
|
|
SELECT floor(-1.5)
|
|
} {-2.0}
|
|
|
|
do_execsql_test floor-str {
|
|
SELECT floor('1.5')
|
|
} {1.0}
|
|
|
|
do_execsql_test floor-null {
|
|
SELECT floor(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test ln-int {
|
|
SELECT ln(1)
|
|
} {0.0}
|
|
|
|
do_execsql_test ln-float {
|
|
SELECT ln(0.5)
|
|
} {-0.693147180559945}
|
|
|
|
do_execsql_test ln-str {
|
|
SELECT ln('0.5')
|
|
} {-0.693147180559945}
|
|
|
|
do_execsql_test ln-negative {
|
|
SELECT ln(-0.5)
|
|
} {}
|
|
|
|
do_execsql_test ln-null {
|
|
SELECT ln(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test log10-int {
|
|
SELECT log10(1)
|
|
} {0.0}
|
|
|
|
do_execsql_test log10-float {
|
|
SELECT log10(0.5)
|
|
} {-0.301029995663981}
|
|
|
|
do_execsql_test log10-str {
|
|
SELECT log10('0.5')
|
|
} {-0.301029995663981}
|
|
|
|
do_execsql_test log10-negative {
|
|
SELECT log10(-0.5)
|
|
} {}
|
|
|
|
do_execsql_test log10-null {
|
|
SELECT log10(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test log2-int {
|
|
SELECT log2(1)
|
|
} {0.0}
|
|
|
|
do_execsql_test log2-float {
|
|
SELECT log2(0.5)
|
|
} {-1.0}
|
|
|
|
do_execsql_test log2-str {
|
|
SELECT log2('0.5')
|
|
} {-1.0}
|
|
|
|
do_execsql_test log2-negative {
|
|
SELECT log2(-0.5)
|
|
} {}
|
|
|
|
do_execsql_test log2-null {
|
|
SELECT log2(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test radians-int {
|
|
SELECT radians(1)
|
|
} {0.0174532925199433}
|
|
|
|
do_execsql_test radians-float {
|
|
SELECT radians(-0.5)
|
|
} {-0.00872664625997165}
|
|
|
|
do_execsql_test radians-str {
|
|
SELECT radians('-0.5')
|
|
} {-0.00872664625997165}
|
|
|
|
do_execsql_test radians-null {
|
|
SELECT radians(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test sinh-int {
|
|
SELECT sinh(1)
|
|
} {1.1752011936438}
|
|
|
|
do_execsql_test sinh-float {
|
|
SELECT sinh(-0.5)
|
|
} {-0.521095305493747}
|
|
|
|
do_execsql_test sinh-str {
|
|
SELECT sinh('-0.5')
|
|
} {-0.521095305493747}
|
|
|
|
do_execsql_test sinh-null {
|
|
SELECT sinh(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test sqrt-int {
|
|
SELECT sqrt(1)
|
|
} {1.0}
|
|
|
|
do_execsql_test sqrt-float {
|
|
SELECT sqrt(0.5)
|
|
} {0.707106781186548}
|
|
|
|
do_execsql_test sqrt-str {
|
|
SELECT sqrt('0.5')
|
|
} {0.707106781186548}
|
|
|
|
do_execsql_test sqrt-negative {
|
|
SELECT sqrt(-0.5)
|
|
} {}
|
|
|
|
do_execsql_test sqrt-null {
|
|
SELECT sqrt(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test tanh-int {
|
|
SELECT tanh(1)
|
|
} {0.761594155955765}
|
|
|
|
do_execsql_test tanh-float {
|
|
SELECT tanh(-0.5)
|
|
} {-0.46211715726001}
|
|
|
|
do_execsql_test tanh-str {
|
|
SELECT tanh('-0.5')
|
|
} {-0.46211715726001}
|
|
|
|
do_execsql_test tanh-null {
|
|
SELECT tanh(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test trunc-int {
|
|
SELECT trunc(1)
|
|
} {1}
|
|
|
|
do_execsql_test trunc-float {
|
|
SELECT trunc(2.5)
|
|
} {2.0}
|
|
|
|
do_execsql_test trunc-float-negative {
|
|
SELECT trunc(-2.5)
|
|
} {-2.0}
|
|
|
|
do_execsql_test trunc-str {
|
|
SELECT trunc('2.5')
|
|
} {2.0}
|
|
|
|
do_execsql_test trunc-null {
|
|
SELECT trunc(null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test atan2-int-int {
|
|
SELECT atan2(5, -1)
|
|
} {1.76819188664478}
|
|
|
|
do_execsql_test atan2-int-float {
|
|
SELECT atan2(5, -1.5)
|
|
} {1.86225312127276}
|
|
|
|
do_execsql_test atan2-int-str {
|
|
SELECT atan2(5, '-1.5')
|
|
} {1.86225312127276}
|
|
|
|
do_execsql_test atan2-float-int {
|
|
SELECT atan2(5.5, 10)
|
|
} {0.502843210927861}
|
|
|
|
do_execsql_test atan2-float-float {
|
|
SELECT atan2(5.5, -1.5)
|
|
} {1.83704837594582}
|
|
|
|
do_execsql_test atan2-float-str {
|
|
SELECT atan2(5.5, '-1.5')
|
|
} {1.83704837594582}
|
|
|
|
do_execsql_test atan2-str-str {
|
|
SELECT atan2('5.5', '-1.5')
|
|
} {1.83704837594582}
|
|
|
|
do_execsql_test atan2-null-int {
|
|
SELECT atan2(null, 5)
|
|
} {}
|
|
|
|
do_execsql_test atan2-int-null {
|
|
SELECT atan2(5, null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test mod-int-int {
|
|
SELECT mod(10, -3)
|
|
} {1.0}
|
|
|
|
do_execsql_test mod-int-float {
|
|
SELECT mod(5, -1.5)
|
|
} {0.5}
|
|
|
|
do_execsql_test mod-int-str {
|
|
SELECT mod(5, '-1.5')
|
|
} {0.5}
|
|
|
|
do_execsql_test mod-float-int {
|
|
SELECT mod(5.5, 2)
|
|
} {1.5}
|
|
|
|
do_execsql_test mod-float-float {
|
|
SELECT mod(5.5, -1.5)
|
|
} {1.0}
|
|
|
|
do_execsql_test mod-float-str {
|
|
SELECT mod(5.5, '-1.5')
|
|
} {1.0}
|
|
|
|
do_execsql_test mod-str-str {
|
|
SELECT mod('5.5', '-1.5')
|
|
} {1.0}
|
|
|
|
do_execsql_test mod-null-int {
|
|
SELECT mod(null, 5)
|
|
} {}
|
|
|
|
do_execsql_test mod-int-null {
|
|
SELECT mod(5, null)
|
|
} {}
|
|
|
|
do_execsql_test mod-float-zero {
|
|
SELECT mod(1.5, 0)
|
|
} {}
|
|
|
|
do_execsql_test mod-tricky {
|
|
SELECT mod(atanh(tanh(-1.0)), 1.0)
|
|
} {-1.0}
|
|
|
|
do_execsql_test mod-products-id {
|
|
SELECT mod(products.id, 3) from products limit 5
|
|
} {1.0
|
|
2.0
|
|
0.0
|
|
1.0
|
|
2.0}
|
|
|
|
do_execsql_test mod-products-price-id {
|
|
SELECT mod(products.price, products.id) from products limit 5
|
|
} {0.0
|
|
0.0
|
|
0.0
|
|
1.0
|
|
4.0}
|
|
|
|
|
|
do_execsql_test pow-int-int {
|
|
SELECT pow(5, -1)
|
|
} {0.2}
|
|
|
|
do_execsql_test pow-int-float {
|
|
SELECT pow(5, -1.5)
|
|
} {0.0894427190999916}
|
|
|
|
do_execsql_test pow-int-str {
|
|
SELECT pow(5, '-1.5')
|
|
} {0.0894427190999916}
|
|
|
|
do_execsql_test pow-float-int {
|
|
SELECT pow(5.5, 2)
|
|
} {30.25}
|
|
|
|
do_execsql_test pow-float-float {
|
|
SELECT pow(5.5, -1.5)
|
|
} {0.077527533220222}
|
|
|
|
do_execsql_test pow-float-str {
|
|
SELECT pow(5.5, '-1.5')
|
|
} {0.077527533220222}
|
|
|
|
do_execsql_test pow-str-str {
|
|
SELECT pow('5.5', '-1.5')
|
|
} {0.077527533220222}
|
|
|
|
do_execsql_test pow-null-int {
|
|
SELECT pow(null, 5)
|
|
} {}
|
|
|
|
do_execsql_test pow-int-null {
|
|
SELECT pow(5, null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test power-int-int {
|
|
SELECT power(5, -1)
|
|
} {0.2}
|
|
|
|
do_execsql_test power-int-float {
|
|
SELECT power(5, -1.5)
|
|
} {0.0894427190999916}
|
|
|
|
do_execsql_test power-int-str {
|
|
SELECT power(5, '-1.5')
|
|
} {0.0894427190999916}
|
|
|
|
do_execsql_test power-float-int {
|
|
SELECT power(5.5, 2)
|
|
} {30.25}
|
|
|
|
do_execsql_test power-float-float {
|
|
SELECT power(5.5, -1.5)
|
|
} {0.077527533220222}
|
|
|
|
do_execsql_test power-float-str {
|
|
SELECT power(5.5, '-1.5')
|
|
} {0.077527533220222}
|
|
|
|
do_execsql_test power-str-str {
|
|
SELECT power('5.5', '-1.5')
|
|
} {0.077527533220222}
|
|
|
|
do_execsql_test power-null-int {
|
|
SELECT power(null, 5)
|
|
} {}
|
|
|
|
do_execsql_test power-int-null {
|
|
SELECT power(5, null)
|
|
} {}
|
|
|
|
|
|
do_execsql_test log-int {
|
|
SELECT log(1)
|
|
} {0.0}
|
|
|
|
do_execsql_test log-float {
|
|
SELECT log(1.5)
|
|
} {0.176091259055681}
|
|
|
|
do_execsql_test log-str {
|
|
SELECT log('1.5')
|
|
} {0.176091259055681}
|
|
|
|
do_execsql_test log-negative {
|
|
SELECT log(-1.5)
|
|
} {}
|
|
|
|
do_execsql_test log-null {
|
|
SELECT log(null)
|
|
} {}
|
|
|
|
do_execsql_test log-int-int {
|
|
SELECT log(5, 1)
|
|
} {0.0}
|
|
|
|
do_execsql_test log-int-float {
|
|
SELECT log(5, 1.5)
|
|
} {0.251929636412592}
|
|
|
|
do_execsql_test log-int-str {
|
|
SELECT log(5, '1.5')
|
|
} {0.251929636412592}
|
|
|
|
do_execsql_test log-float-int {
|
|
SELECT log(5.5, 10)
|
|
} {1.35068935021985}
|
|
|
|
do_execsql_test log-float-float {
|
|
SELECT log(5.5, 1.5)
|
|
} {0.237844588273313}
|
|
|
|
do_execsql_test log-float-str {
|
|
SELECT log(5.5, '1.5')
|
|
} {0.237844588273313}
|
|
|
|
do_execsql_test log-str-str {
|
|
SELECT log('5.5', '1.5')
|
|
} {0.237844588273313}
|
|
|
|
do_execsql_test log-negative-negative {
|
|
SELECT log(-1.5, -1.5)
|
|
} {}
|
|
|
|
do_execsql_test log-float-negative {
|
|
SELECT log(1.5, -1.5)
|
|
} {}
|
|
|
|
do_execsql_test log-null-int {
|
|
SELECT log(null, 5)
|
|
} {}
|
|
|
|
do_execsql_test log-int-null {
|
|
SELECT log(5, null)
|
|
} {}
|
|
|
|
do_execsql_test remainder-int-null {
|
|
SELECT 183 % null
|
|
} {}
|
|
|
|
do_execsql_test remainder-int-0 {
|
|
SELECT 183 % 0
|
|
} {}
|
|
|
|
do_execsql_test remainder-int-int {
|
|
SELECT 183 % 10
|
|
} { 3 }
|
|
|
|
do_execsql_test remainder-int-float {
|
|
SELECT 38 % 10.35
|
|
} { 8.0 }
|
|
|
|
do_execsql_test remainder-float-int {
|
|
SELECT 38.43 % 13
|
|
} { 12.0 }
|
|
|
|
do_execsql_test remainder-0-float {
|
|
SELECT 0 % 12.0
|
|
} { 0.0 }
|
|
|
|
do_execsql_test remainder-float-0 {
|
|
SELECT 23.14 % 0
|
|
} {}
|
|
|
|
do_execsql_test remainder-float-float {
|
|
SELECT 23.14 % 12.0
|
|
} { 11.0 }
|
|
|
|
do_execsql_test remainder-float-agg {
|
|
SELECT 23.14 % sum(id) from products
|
|
} { 23.0 }
|
|
|
|
do_execsql_test remainder-int-agg {
|
|
SELECT 17 % sum(id) from users
|
|
} { 17 }
|
|
|
|
do_execsql_test remainder-agg-int {
|
|
SELECT count(*) % 17 from users
|
|
} { 4 }
|
|
|
|
do_execsql_test remainder-agg-float {
|
|
SELECT count(*) % 2.43 from users
|
|
} { 0.0 }
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 'a' 'a' {}
|
|
2 'a' 10 0
|
|
3 10 'a' {}
|
|
4 'a' 11.0 0.0
|
|
5 11.0 'a' {}
|
|
7 '10' '3' 1
|
|
8 '10.0' '3' 1.0
|
|
9 '10.0' -3 1.0
|
|
} {
|
|
do_execsql_test remainder-text-$testnum "SELECT $lhs % $rhs" $::ans
|
|
}
|
|
|
|
foreach {testnum lhs rhs ans} {
|
|
1 '-9223372036854775808' '-1' 0
|
|
2 -9223372036854775808 -1 0
|
|
3 -9223372036854775809 -1 0.0
|
|
} {
|
|
do_execsql_test remainder-overflow-$testnum "SELECT $lhs % $rhs" $::ans
|
|
}
|
|
|
|
do_execsql_test comp-float-float {
|
|
SELECT 0.0 = 0.0
|
|
} { 1 }
|
|
|
|
do_execsql_test comp-int-float {
|
|
SELECT 0 = 0.0
|
|
} { 1 }
|
|
|
|
do_execsql_test comp-float-int {
|
|
SELECT 0.0 = 0
|
|
} { 1 }
|
|
|
|
do_execsql_test comp-int-string {
|
|
SELECT 0 = '0'
|
|
} { 0 }
|
|
|
|
do_execsql_test comp-string-int {
|
|
SELECT '0' = 0
|
|
} { 0 }
|
|
|
|
do_execsql_test comp-string-blog {
|
|
SELECT '0' = cast('0' as BLOB)
|
|
} { 0 }
|
|
|
|
do_execsql_test comp-blog-string {
|
|
SELECT cast('0' as BLOB) = '0'
|
|
} { 0 }
|
|
|
|
do_execsql_test comp-blog-blog {
|
|
SELECT cast('0' as BLOB) = cast('0' as BLOB)
|
|
} { 1 }
|
|
|
|
do_execsql_test unary-plus-noop-string {
|
|
SELECT +'000'
|
|
} { 000 }
|
|
|
|
do_execsql_test unary-plus-noop-blob {
|
|
SELECT typeof(+x'00') = 'blob'
|
|
} { 1 }
|