Files
sqlite/test/func6.test
T
drh fe6d20e9f4 Enhance location(X) so that it works with indexes and WITHOUT ROWID tables.
The function might return an offset to the main table or to an index,
depending on whether the column X would be loaded from the main table or
from the index.

FossilOrigin-Name: dd94d6a880dfec4bddd247239b815b84964f804d24841e25f33f1d46a4b5274d
2017-12-29 14:33:54 +00:00

37 lines
1.2 KiB
Plaintext

# 2017-12-16
#
# The author disclaims copyright to this source code. In place of
# a legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
#*************************************************************************
#
# Test cases for the location() function.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_execsql_test func6-100 {
CREATE TABLE t1(a,b,c,d);
WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<100)
INSERT INTO t1(a,b,c,d) SELECT printf('abc%03x',x), x, 1000-x, NULL FROM c;
}
do_execsql_test func6-110 {
SELECT a, typeof(location(a)) FROM t1 ORDER BY rowid LIMIT 2;
} {abc001 integer abc002 integer}
do_execsql_test func6-120 {
SELECT a, typeof(location(+a)) FROM t1 ORDER BY rowid LIMIT 2;
} {abc001 null abc002 null}
do_execsql_test func6-130 {
CREATE INDEX t1a ON t1(a);
SELECT a, typeof(location(a)) FROM t1 ORDER BY a LIMIT 2;
} {abc001 integer abc002 integer}
do_execsql_test func6-140 {
SELECT a, typeof(location(a)) FROM t1 NOT INDEXED ORDER BY a LIMIT 2;
} {abc001 integer abc002 integer}
finish_test