mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-07 02:04:21 +01:00
Merge 'Added 'likelihood' scalar function' from Sachin Kumar Singh
The `likelihood(X,Y)` function returns argument X unchanged. The value Y in likelihood(X,Y) must be a floating point constant between 0.0 and 1.0, inclusive. ``` sqlite> explain SELECT likelihood(42, 0.0); addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- ------------- -- ------------- 0 Init 0 6 0 0 Start at 6 1 Once 0 3 0 0 2 Integer 42 2 0 0 r[2]=42 3 Copy 2 1 0 0 r[1]=r[2] 4 ResultRow 1 1 0 0 output=r[1] 5 Halt 0 0 0 0 6 Goto 0 1 0 0 ``` ``` limbo> explain SELECT likelihood(42, 0.0); addr opcode p1 p2 p3 p4 p5 comment ---- ----------------- ---- ---- ---- ------------- -- ------- 0 Init 0 4 0 0 Start at 4 1 Copy 2 1 0 0 r[1]=r[2] 2 ResultRow 1 1 0 0 output=r[1] 3 Halt 0 0 0 0 4 Integer 42 2 0 0 r[2]=42 5 Goto 0 1 0 0 ``` Closes #1303
This commit is contained in:
@@ -211,6 +211,38 @@ do_execsql_test likely-null {
|
||||
select likely(NULL)
|
||||
} {}
|
||||
|
||||
do_execsql_test likelihood-string {
|
||||
SELECT likelihood('limbo', 0.5);
|
||||
} {limbo}
|
||||
|
||||
do_execsql_test likelihood-string-high-probability {
|
||||
SELECT likelihood('database', 0.9375);
|
||||
} {database}
|
||||
|
||||
do_execsql_test likelihood-integer {
|
||||
SELECT likelihood(100, 0.0625);
|
||||
} {100}
|
||||
|
||||
do_execsql_test likelihood-integer-probability-1 {
|
||||
SELECT likelihood(42, 1.0);
|
||||
} {42}
|
||||
|
||||
do_execsql_test likelihood-decimal {
|
||||
SELECT likelihood(12.34, 0.5);
|
||||
} {12.34}
|
||||
|
||||
do_execsql_test likelihood-null {
|
||||
SELECT likelihood(NULL, 0.5);
|
||||
} {}
|
||||
|
||||
do_execsql_test likelihood-blob {
|
||||
SELECT hex(likelihood(x'01020304', 0.5));
|
||||
} {01020304}
|
||||
|
||||
do_execsql_test likelihood-zero-probability {
|
||||
SELECT likelihood(999, 0.0);
|
||||
} {999}
|
||||
|
||||
do_execsql_test unhex-str-ab {
|
||||
SELECT unhex('6162');
|
||||
} {ab}
|
||||
|
||||
Reference in New Issue
Block a user