CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
tabfunc01.test680 linesDownload Raw Back to test
1# 2015-08-192#3# The author disclaims copyright to this source code.  In place of4# a legal notice, here is a blessing:5#6#    May you do good and not evil.7#    May you find forgiveness for yourself and forgive others.8#    May you share freely, never taking more than you give.9#10#***********************************************************************11# 12# This file implements tests for table-valued-functions implemented using13# eponymous virtual tables.14#15 16set testdir [file dirname $argv0]17source $testdir/tester.tcl18set testprefix tabfunc0119 20ifcapable !vtab {21  finish_test22  return23}24load_static_extension db series25load_static_extension db remember26 27do_execsql_test tabfunc01-1.1 {28  SELECT *, '|' FROM generate_series WHERE start=1 AND stop=9 AND step=2;29} {1 | 3 | 5 | 7 | 9 |}30do_execsql_test tabfunc01-1.1b {31  PRAGMA table_xinfo(generate_series);32} {0 value {} 0 {} 0 0 1 start {} 0 {} 0 1 2 stop {} 0 {} 0 1 3 step {} 0 {} 0 1}33do_execsql_test tabfunc01-1.2 {34  SELECT *, '|' FROM generate_series(0) LIMIT 5;35} {0 | 1 | 2 | 3 | 4 |}36do_catchsql_test tabfunc01-1.2b {37  SELECT *, '|' FROM generate_series LIMIT 5;38} {1 {first argument to "generate_series()" missing or unusable}}39do_catchsql_test tabfunc01-1.2c {40  SELECT *, '|' FROM generate_series(value) LIMIT 5;41} {1 {first argument to "generate_series()" missing or unusable}}42do_catchsql_test tabfunc01-1.3 {43  CREATE VIRTUAL TABLE t1 USING generate_series;44} {1 {no such module: generate_series}}45do_execsql_test tabfunc01-1.4 {46  SELECT * FROM generate_series(1,9,2);47} {1 3 5 7 9}48do_execsql_test tabfunc01-1.5 {49  SELECT * FROM generate_series(1,9);50} {1 2 3 4 5 6 7 8 9}51do_execsql_test tabfunc01-1.6 {52  SELECT * FROM generate_series(1,10) WHERE step=3;53} {1 4 7 10}54do_catchsql_test tabfunc01-1.7 {55  SELECT * FROM generate_series(1,9,2,11);56} {1 {too many arguments on generate_series() - max 3}}57 58do_execsql_test tabfunc01-1.8 {59  SELECT * FROM generate_series(0,32,5) ORDER BY rowid DESC;60} {30 25 20 15 10 5 0}61do_execsql_test tabfunc01-1.9 {62  SELECT rowid, * FROM generate_series(0,32,5) ORDER BY value DESC;63} {30 30 25 25 20 20 15 15 10 10 5 5 0 0}64do_execsql_test tabfunc01-1.10 {65  SELECT rowid, * FROM generate_series(0,32,5) ORDER BY +value DESC;66} {30 30 25 25 20 20 15 15 10 10 5 5 0 0}67 68do_execsql_test tabfunc01-1.20 {69  CREATE VIEW v1(a,b) AS VALUES(1,2),(3,4);70  SELECT * FROM v1;71} {1 2 3 4}72do_catchsql_test tabfunc01-1.21.1 {73  SELECT * FROM v1(55);74} {1 {'v1' is not a function}}75do_catchsql_test tabfunc01-1.21.2 {76  SELECT * FROM v1();77} {1 {'v1' is not a function}}78do_execsql_test tabfunc01-1.22 {79  CREATE VIEW v2(x) AS SELECT value FROM generate_series(1,5);80  SELECT * FROM v2;81} {1 2 3 4 5}82do_catchsql_test tabfunc01-1.23.1 {83  SELECT * FROM v2(55);84} {1 {'v2' is not a function}}85do_catchsql_test tabfunc01-1.23.2 {86  SELECT * FROM v2();87} {1 {'v2' is not a function}}88do_execsql_test tabfunc01-1.24 {89  CREATE TABLE t0(x);90  INSERT INTO t0(x) VALUES(123),(456),(789);91  SELECT * FROM t0 ORDER BY x;92} {123 456 789}93do_catchsql_test tabfunc01-1.25 {94  SELECT * FROM t0(55) ORDER BY x;95} {1 {'t0' is not a function}}96do_catchsql_test tabfunc01-1.26 {97  WITH w0 AS (SELECT * FROM t0)98  INSERT INTO t0(x) SELECT * FROM w0()99} {1 {'w0' is not a function}}100 101do_execsql_test tabfunc01-2.1 {102  CREATE TABLE t1(x);103  INSERT INTO t1(x) VALUES(2),(3);104  SELECT *, '|' FROM t1, generate_series(1,x) ORDER BY 1, 2105} {2 1 | 2 2 | 3 1 | 3 2 | 3 3 |}106do_execsql_test tabfunc01-2.2 {107  SELECT *, '|' FROM (SELECT x FROM t1) AS y, generate_series(1,y.x)108  ORDER BY 1, 2;109} {2 1 | 2 2 | 3 1 | 3 2 | 3 3 |}110 111do_execsql_test tabfunc01-2.50 {112  SELECT * FROM generate_series(0) LIMIT 5;113} {0 1 2 3 4}114 115do_execsql_test tabfunc01-3.1 {116  SELECT DISTINCT value FROM generate_series(1,x), t1 ORDER BY 1;117} {1 2 3}118 119do_eqp_test tabfunc01-3.10 {120  SELECT value FROM generate_series(1,10) ORDER BY value;121} {122  QUERY PLAN123  `--SCAN generate_series VIRTUAL TABLE INDEX 0x13:124}125do_eqp_test tabfunc01-3.11 {126  SELECT value FROM generate_series(1,10) ORDER BY +value;127} {128  QUERY PLAN129  |--SCAN generate_series VIRTUAL TABLE INDEX 0x3:130  `--USE TEMP B-TREE FOR ORDER BY131}132do_eqp_test tabfunc01-3.12 {133  SELECT value FROM generate_series(1,10) ORDER BY value, stop;134} {135  QUERY PLAN136  `--SCAN generate_series VIRTUAL TABLE INDEX 0x13:137}138do_eqp_test tabfunc01-3.13 {139  SELECT value FROM generate_series(1,10) ORDER BY stop, value;140} {141  QUERY PLAN142  |--SCAN generate_series VIRTUAL TABLE INDEX 0x3:143  `--USE TEMP B-TREE FOR ORDER BY144}145 146 147do_eqp_test tabfunc01-3.20 {148  WITH t1(a) AS (149    SELECT value FROM generate_series(0,10,2)150    UNION ALL151    SELECT value FROM generate_series(9,18,3)152  )153  SELECT * FROM t1 ORDER BY a;154} {155  QUERY PLAN156  `--MERGE (UNION ALL)157     |--LEFT158     |  `--SCAN generate_series VIRTUAL TABLE INDEX 0x17:159     `--RIGHT160        `--SCAN generate_series VIRTUAL TABLE INDEX 0x17:161}162  163 164# Eponymous virtual table exists in all schemas.165#166do_execsql_test tabfunc01-4.1 {167  SELECT * FROM main.generate_series(1,4)168} {1 2 3 4}169do_execsql_test tabfunc01-4.2 {170  SELECT * FROM temp.generate_series(1,4)171} {1 2 3 4}172do_execsql_test tabfunc01-4.3 {173  ATTACH ':memory:' AS aux1;174  CREATE TABLE aux1.t1(a,b,c);175  SELECT * FROM aux1.generate_series(1,4)176} {1 2 3 4}177 178# 2018-12-03: Fix bug reported by by private email.179do_execsql_test tabfunc01-4.4 {180  SELECT * FROM (generate_series(1,5,2)) AS x LIMIT 10;181} {1 3 5}182 183# 2025-03-13 forum post bf2dc8e909983511184#185do_execsql_test tabfunc01-5.1 {186  SELECT value187    FROM generate_series(60,73,6)188   WHERE value=66;189} 66190do_execsql_test tabfunc01-5.2 {191  SELECT value192    FROM generate_series(73,60,-6)193   WHERE value=67;194} 67195 196# 2025-03-22 forum post 0d5d63257e3ff4f6197#198do_execsql_test tabfunc01-6.1 {199  SELECT value FROM generate_series(1,10) WHERE value<5.5;200} {1 2 3 4 5}201do_execsql_test tabfunc01-6.2 {202  SELECT value FROM generate_series(1,10) WHERE value<5.0;203} {1 2 3 4}204do_execsql_test tabfunc01-6.3 {205  SELECT value FROM generate_series(1,10) WHERE value<=5.5;206} {1 2 3 4 5}207do_execsql_test tabfunc01-6.4 {208  SELECT value FROM generate_series(1,10) WHERE value<=5.0;209} {1 2 3 4 5}210do_execsql_test tabfunc01-6.5 {211  SELECT value FROM generate_series(1,10) WHERE value>5.5;212} {6 7 8 9 10}213do_execsql_test tabfunc01-6.6 {214  SELECT value FROM generate_series(1,10) WHERE value>5.0;215} {6 7 8 9 10}216do_execsql_test tabfunc01-6.7 {217  SELECT value FROM generate_series(1,10) WHERE value>=5.5;218} {6 7 8 9 10}219do_execsql_test tabfunc01-6.8 {220  SELECT value FROM generate_series(1,10) WHERE value>=5.0;221} {5 6 7 8 9 10}222do_execsql_test tabfunc01-6.9 {223  SELECT value FROM generate_series(10,1,-1) WHERE value<5.5;224} {5 4 3 2 1}225do_execsql_test tabfunc01-6.10 {226  SELECT value FROM generate_series(10,1,-1) WHERE value<5.0;227} {4 3 2 1}228do_execsql_test tabfunc01-6.11 {229  SELECT value FROM generate_series(10,1,-1) WHERE value<=5.5;230} {5 4 3 2 1}231do_execsql_test tabfunc01-6.12 {232  SELECT value FROM generate_series(10,1,-1) WHERE value<=5.0;233} {5 4 3 2 1}234do_execsql_test tabfunc01-6.13 {235  SELECT value FROM generate_series(10,1,-1) WHERE value>5.5;236} {10 9 8 7 6}237do_execsql_test tabfunc01-6.14 {238  SELECT value FROM generate_series(10,1,-1) WHERE value>5.0;239} {10 9 8 7 6}240do_execsql_test tabfunc01-6.15 {241  SELECT value FROM generate_series(10,1,-1) WHERE value>=5.5;242} {10 9 8 7 6}243do_execsql_test tabfunc01-6.16 {244  SELECT value FROM generate_series(10,1,-1) WHERE value>=5.0;245} {10 9 8 7 6 5}246do_execsql_test tabfunc01-6.17 {247  SELECT value FROM generate_series(1,10) WHERE value==5.5;248} {}249do_execsql_test tabfunc01-6.18 {250  SELECT value FROM generate_series(1,10) WHERE value==5.0;251} {5}252 253# The next series of tests is verifying that virtual table are able254# to optimize the IN operator, even on terms that are not marked "omit".255# When the generate_series virtual table is compiled for the testfixture,256# the special -DSQLITE_SERIES_CONSTRAINT_VERIFY=1 option is used, which257# causes the xBestIndex method of generate_series to leave the258# sqlite3_index_constraint_usage.omit flag set to 0, which should cause259# the SQLite core to verify the start=, stop=, and step= constraints on260# each step of output.  At one point, the IN operator could not be used261# by virtual tables unless omit was set.262#263do_execsql_test tabfunc01-500 {264  SELECT * FROM generate_series WHERE start IN (1,7) AND stop=20 AND step=10265  ORDER BY +1;266} {1 7 11 17}267 268# Table-valued functions on the RHS of an IN operator269#270do_execsql_test tabfunc01-600 {271  CREATE TABLE t600(a INTEGER PRIMARY KEY, b TEXT);272  WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<100)273    INSERT INTO t600(a,b) SELECT x, printf('(%03d)',x) FROM c;274  SELECT b FROM t600 WHERE a IN generate_series(2,52,10);275} {(002) (012) (022) (032) (042) (052)}276 277 278do_test tabfunc01-700 {279  set PTR1 [intarray_addr 5 7 13 17 23]280  sqlite3_create_function db281  db eval {282    SELECT b FROM t600, carray(inttoptr($PTR1),5) WHERE a=value;283  }284} {(005) (007) (013) (017) (023)}285do_test tabfunc01-701 {286  db eval {287    SELECT b FROM t600 WHERE a IN carray(inttoptr($PTR1),5,'int32');288  }289} {(005) (007) (013) (017) (023)}290do_test tabfunc01-702 {291  db eval {292    SELECT b FROM t600 WHERE a IN carray(inttoptr($PTR1),4,'int32');293  }294} {(005) (007) (013) (017)}295do_catchsql_test tabfunc01-710 {296  SELECT b FROM t600 WHERE a IN carray(inttoptr($PTR1),5,'int33');297} {1 {unknown datatype: 'int33'}}298 299do_test tabfunc01-720 {300  set PTR2 [int64array_addr 5 7 13 17 23]301  db eval {302    SELECT b FROM t600, carray(inttoptr($PTR2),5,'int64') WHERE a=value;303  }304} {(005) (007) (013) (017) (023)}305do_test tabfunc01-721 {306  db eval {307    SELECT remember(123,inttoptr($PTR2));308    SELECT value FROM carray(inttoptr($PTR2),5,'int64');309  }310} {123 123 7 13 17 23}311do_test tabfunc01-722 {312  set PTR3 [expr {$PTR2+16}]313  db eval {314    SELECT remember(987,inttoptr($PTR3));315    SELECT value FROM carray(inttoptr($PTR2),5,'int64');316  }317} {987 123 7 987 17 23}318 319do_test tabfunc01-730 {320  set PTR4 [doublearray_addr 5.0 7.0 13.0 17.0 23.0]321  db eval {322    SELECT b FROM t600, carray(inttoptr($PTR4),5,'double') WHERE a=value;323  }324} {(005) (007) (013) (017) (023)}325 326do_test tabfunc01-740 {327  set PTR5 [textarray_addr x5 x7 x13 x17 x23]328  db eval {329    SELECT b FROM t600, carray(inttoptr($PTR5),5,'char*')330     WHERE a=trim(value,'x');331  }332} {(005) (007) (013) (017) (023)}333 334do_test tabfunc01-750 {335  db eval {336    SELECT aa.value, bb.value, '|'337      FROM carray(inttoptr($PTR4),5,'double') AS aa338      JOIN carray(inttoptr($PTR5),5,'char*') AS bb ON aa.rowid=bb.rowid;339  }340} {5.0 x5 | 7.0 x7 | 13.0 x13 | 17.0 x17 | 23.0 x23 |}341 342# ticket https://sqlite.org/src/info/2ae0c599b735d59e343# Verification of testtag-20230227a344do_test tabfunc01-751 {345  db eval {346    SELECT aa.value, bb.value, '|'347      FROM carray(inttoptr($PTR4),5,'double') AS aa348      LEFT JOIN carray(inttoptr($PTR5),5,'char*') AS bb ON aa.rowid=bb.rowid;349  }350} {5.0 x5 | 7.0 x7 | 13.0 x13 | 17.0 x17 | 23.0 x23 |}351 352ifcapable altertable {353  do_test tabfunc01-800 {354    catchsql {355      ALTER TABLE generate_series ADD COLUMN col2;356    }357  } {1 {virtual tables may not be altered}}358  do_test tabfunc01-810 {359    catchsql {360      ALTER TABLE generate_series RENAME TO flubber;361    }362  } {1 {table generate_series may not be altered}}363  do_test tabfunc01-820 {364    catchsql {365      ALTER TABLE generate_series RENAME  start TO flubber;366    }367  } {1 {table generate_series may not be altered}}368  do_test tabfunc01-830 {369    catchsql {370      ALTER TABLE generate_series DROP COLUMN start;371    }372  } {1 {table generate_series may not be altered}}373  do_test tabfunc01-900 {374    catchsql {375      ALTER TABLE pragma_compile_options ADD COLUMN col2;376    }377  } {1 {virtual tables may not be altered}}378  do_test tabfunc01-910 {379    catchsql {380      ALTER TABLE pragma_compile_options RENAME TO flubber;381    }382  } {1 {table pragma_compile_options may not be altered}}383  do_test tabfunc01-920 {384    catchsql {385      ALTER TABLE pragma_compile_options RENAME  start TO flubber;386    }387  } {1 {table pragma_compile_options may not be altered}}388  do_test tabfunc01-930 {389    catchsql {390      ALTER TABLE pragma_compile_options DROP COLUMN start;391    }392  } {1 {table pragma_compile_options may not be altered}}393}394 395#-----------------------------------------------------------------------------396# 2024-04-26  LIMIT and OFFSET passed into virtual tables397# https://sqlite.org/forum/forumpost/c243b8f856398#399do_execsql_test tabfunc01-900 {400  SELECT * FROM (401    SELECT * FROM generate_series(1,10)402    UNION ALL403    SELECT * FROM generate_series(101,104)404  ) LIMIT 10 OFFSET 5;405} {6 7 8 9 10 101 102 103 104}406do_execsql_test tabfunc01-910 {407  SELECT * FROM (408    SELECT * FROM generate_series(1,10)409    UNION ALL410    SELECT * FROM generate_series(101,104)411  ) LIMIT -1 OFFSET 5;412} {6 7 8 9 10 101 102 103 104}413do_execsql_test tabfunc01-920 {414  SELECT * FROM (415    SELECT * FROM generate_series(1,10)416    UNION ALL417    SELECT * FROM generate_series(101,104)418  ) LIMIT -1 OFFSET 0;419} {1 2 3 4 5 6 7 8 9 10 101 102 103 104}420 421# Also:  https://sqlite.org/forum/forumpost/ce1a06c2c8422#423do_execsql_test tabfunc01-930 {424  SELECT * FROM generate_series(9223372036854775807,425                                -9223372036854775808,426                                -9223372036854775808);427} {9223372036854775807 -1}428do_execsql_test tabfunc01-931 {429  SELECT * FROM generate_series(9223372036854775807,430                                -9223372036854775808,431                                -9223372036854775808)432   LIMIT 100 OFFSET 1;433} {-1}434do_execsql_test tabfunc01-932 {435  SELECT * FROM generate_series(9223372036854775807,436                                -9223372036854775808,437                                -9223372036854775808)438   LIMIT 100 OFFSET 2;439} {}440do_execsql_test tabfunc01-933 {441  SELECT * FROM generate_series(9223372036854775807,442                                -9223372036854775808,443                                -9223372036854775808)444   LIMIT 100 OFFSET 9223372036854775807;445} {}446do_execsql_test tabfunc01-940 {447  SELECT * FROM generate_series(1,11,2);448} {1 3 5 7 9 11}449do_execsql_test tabfunc01-941 {450  SELECT * FROM generate_series(1,11,2) LIMIT 100 OFFSET 4;451} {9 11}452do_execsql_test tabfunc01-942 {453  SELECT * FROM generate_series(1,11,2) LIMIT 100 OFFSET 5;454} {11}455do_execsql_test tabfunc01-943 {456  SELECT * FROM generate_series(1,11,2) LIMIT 100 OFFSET 6;457} {}458do_execsql_test tabfunc01-944 {459  SELECT * FROM generate_series(1,11,2) LIMIT 100 OFFSET 7;460} {}461do_execsql_test tabfunc01-945 {462  SELECT * FROM generate_series(1,11,2) LIMIT 100 OFFSET 9223372036854775807;463} {}464do_execsql_test tabfunc01-950 {465  SELECT * FROM generate_series(1,11,1) LIMIT 100 OFFSET 10;466} {11}467do_execsql_test tabfunc01-951 {468  SELECT * FROM generate_series(1,11,2) LIMIT 100 OFFSET 9223372036854775807;469} {}470do_execsql_test tabfunc01-952 {471  SELECT * FROM generate_series(11,1,-1) LIMIT 100 OFFSET 10;472} {1}473do_execsql_test tabfunc01-953 {474  SELECT * FROM generate_series(11,1,-1) LIMIT 100 OFFSET 9223372036854775807;475} {}476do_execsql_test tabfunc01-954 {477  SELECT * FROM generate_series(1,11,1) LIMIT 3 OFFSET 3;478} {4 5 6}479 480 481#-------------------------------------------------------------------------482# Forum post https://sqlite.org/forum/forumpost/e7c3ae1215483#484foreach {tn where res} {485  1000 "where value = 2" 2486  1010 "where value in (2)" 2487  1020 "where value in (select 2)" 2488  1030 "where value = 2 OR value = 4" {2 4}489  1040 "where value in (2, 4)" {2 4}490} {491  do_execsql_test $tn "492    SELECT value FROM generate_series(1, 5) $where493  " $res494}495 496do_execsql_test 1100 {497  select 1 as c_0498    from        499    generate_series(1, 1) as ref_3500    where (ref_3.value) in (select 1);501} {1}502 503# 2025-03-18 /forumpost/1e17219c88504# The generate_series() table-valued function is modified so that its505# rowid is always its value. That way it can be used on the RHS of a506# RIGHT JOIN.507#508do_execsql_test 1200 {509  DROP TABLE IF EXISTS t1;510  CREATE TABLE t1(value INT);511  INSERT INTO t1 VALUES (1),(2),(3);512  SELECT t1.value, t2.value513    FROM t1 RIGHT JOIN generate_series(1,3,1) AS t2 USING(value);514} {1 1 2 2 3 3}515 516#--------------------------------------------------------------------------517# New test cases for generate_series associated with the refactor on branch518# serices-refactor circa 2025-09-27.519#520do_execsql_test 1300 {521  SELECT value522    FROM generate_series(-9223372036854775808, 9223372036854775807, 2)523   WHERE value BETWEEN 1 AND 5;524} {2 4}525do_execsql_test 1301 {526  SELECT value527    FROM generate_series(-9223372036854775808, 9223372036854775807, 2)528   WHERE value BETWEEN 0 AND 6;529} {0 2 4 6}530do_execsql_test 1302 {531  SELECT value532    FROM generate_series(-9223372036854775808, 9223372036854775807, 2)533   WHERE value BETWEEN 0.5 AND 6.25;534} {2 4 6}535do_execsql_test 1303 {536  SELECT value537    FROM generate_series(-9223372036854775808, 9223372036854775807, 2)538   WHERE value BETWEEN 9223372036854775803 AND 9223372036854775807539} {9223372036854775804 9223372036854775806}540do_execsql_test 1304 {541  SELECT value542    FROM generate_series(-9223372036854775808, 9223372036854775807, 2)543   WHERE value BETWEEN 9223372036854775803 AND 9223372036854775807544   ORDER BY value DESC;545} {9223372036854775806 9223372036854775804}546 547do_execsql_test 1310 {548  SELECT value FROM generate_series(0) LIMIT 5;549} {0 1 2 3 4}550do_execsql_test 1311 {551  SELECT value FROM generate_series(5) LIMIT 5;552} {5 6 7 8 9}553do_execsql_test 1312 {554  SELECT value FROM generate_series(0) WHERE stop=6;555} {0 1 2 3 4 5 6}556do_execsql_test 1313 {557  SELECT value FROM generate_series(1,10) WHERE step IS NULL;558} {}559do_execsql_test 1314 {560  SELECT value FROM generate_series(0xfffffffd);561} {4294967293 4294967294 4294967295}562do_execsql_test 1315 {563  SELECT value FROM generate_series(4,3,1);564} {}565do_execsql_test 1316 {566  SELECT value FROM generate_series(3,4,-1);567} {}568 569do_execsql_test 1320 {570  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)571   WHERE value=9.2234e18;572} {}573do_execsql_test 1321 {574  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)575   WHERE value=-9.2234e18;576} {}577do_execsql_test 1322 {578  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)579   WHERE value>9223372036854775807;580} {}581do_execsql_test 1323 {582  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)583   WHERE value>9223372036854775806;584} {9223372036854775807}585do_execsql_test 1324 {586  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)587   WHERE value>=9223372036854775807;588} {9223372036854775807}589 590do_execsql_test 1330 {591  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)592   WHERE value<-9223372036854775808;593} {}594do_execsql_test 1331 {595  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)596   WHERE value<=-9223372036854775808;597} {-9223372036854775808}598do_execsql_test 1332 {599  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)600   WHERE value<-9223372036854775807;601} {-9223372036854775808}602do_execsql_test 1333 {603  SELECT value FROM generate_series(-9223372036854775808,+9223372036854775807)604   WHERE value BETWEEN 4 AND 1;605} {}606 607do_execsql_test 1340 {608  SELECT value FROM generate_series(100,0,-10)609   WHERE value BETWEEN 33 AND 66;610} {60 50 40}611do_execsql_test 1341 {612  SELECT value FROM generate_series(100,0,-10)613   WHERE value BETWEEN 33 AND 60;614} {60 50 40}615do_execsql_test 1342 {616  SELECT value FROM generate_series(100,0,-10)617   WHERE value BETWEEN 33 AND 59;618} {50 40}619do_execsql_test 1343 {620  SELECT value621    FROM generate_series(-9223372036854760000,-9223372036854775808,-10000);622} {-9223372036854760000 -9223372036854770000}623do_execsql_test 1344 {624  SELECT value625    FROM generate_series(-9223372036854760000,-9223372036854775808,-10000)626   WHERE value < -9223372036854770001;627} {}628do_execsql_test 1345 {629  SELECT value630    FROM generate_series(9223372036854760000,9223372036854775807,10000);631} {9223372036854760000 9223372036854770000}632do_execsql_test 1346 {633  SELECT value634    FROM generate_series(9223372036854760000,9223372036854775807,10000)635   WHERE value > 9223372036854770001;636} {}637 638do_execsql_test 1350 {639  SELECT value FROM generate_series(100,0,-10)640   WHERE value BETWEEN 33 AND 38;641} {}642do_execsql_test 1351 {643  SELECT value FROM generate_series(0,100,+10)644   WHERE value BETWEEN 33 AND 38;645} {}646 647do_execsql_test 1360 {648  SELECT * FROM generate_series(0,-9223372036854775808,-9223372036854775808);649} {0 -9223372036854775808}650do_execsql_test 1361 {651  SELECT * FROM generate_series(0,-9223372036854775808,-9223372036854775808)652  LIMIT 1 OFFSET 0;653} {0}654do_execsql_test 1362 {655  SELECT * FROM generate_series(0,-9223372036854775808,-9223372036854775808)656   ORDER BY value ASC;657} {-9223372036854775808 0}658do_execsql_test 1363 {659  SELECT * FROM generate_series(0,-9223372036854775808,-9223372036854775808)660   ORDER BY value ASC LIMIT 10 OFFSET 1;661} {0}662do_execsql_test 1364 {663  SELECT * FROM generate_series(0,-9223372036854775808,-9223372036854775808)664   ORDER BY value ASC LIMIT 10 OFFSET 40000000;665} {}666 667do_execsql_test 1370 {668  SELECT * FROM generate_series(0,0,0);669} {}670 671 672 673# Free up memory allocations674intarray_addr675int64array_addr676doublearray_addr677textarray_addr678 679finish_test680