[tarantool-patches] [PATCH 2/2] sql: rename REAL/FLOAT/DOUBLE types to NUMBER

Nikita Pettik korablev at tarantool.org
Tue Jul 30 02:34:11 MSK 2019


Before this patch it was allowed to specify REAL/FLOAT/DOUBLE types
which matched with NUMBER NoSQL type in space format. However, NUMBER is
different from standard floating point types, since it is able to hold
integers in range [-2^63; 2^64-1] alongside with double precision
floating point values. Hence, to not confuse users it has been decided
to remove support of REAL/FLOAT/DOUBLE types from SQL grammar and use
instead original NUMBER type naming.
---
 extra/mkkeywordhash.c                    |   7 +-
 src/box/lua/lua_sql.c                    |   4 +-
 src/box/sql/parse.y                      |   2 +-
 test/sql-tap/analyze5.test.lua           |   2 +-
 test/sql-tap/analyzeF.test.lua           |   2 +-
 test/sql-tap/atof1.test.lua              |   2 +-
 test/sql-tap/autoinc.test.lua            |   4 +-
 test/sql-tap/boundary3.test.lua          | 772 +++++++++++++++----------------
 test/sql-tap/cast.test.lua               |  76 +--
 test/sql-tap/check.test.lua              |   4 +-
 test/sql-tap/default.test.lua            |   4 +-
 test/sql-tap/e_select1.test.lua          |  18 +-
 test/sql-tap/func.test.lua               |   2 +-
 test/sql-tap/in1.test.lua                |   2 +-
 test/sql-tap/in3.test.lua                |   4 +-
 test/sql-tap/in4.test.lua                |   2 +-
 test/sql-tap/index1.test.lua             |   8 +-
 test/sql-tap/insert3.test.lua            |   2 +-
 test/sql-tap/keyword1.test.lua           |   3 +-
 test/sql-tap/numcast.test.lua            |   2 +-
 test/sql-tap/pragma.test.lua             |   2 +-
 test/sql-tap/select3.test.lua            |   8 +-
 test/sql-tap/select4.test.lua            |   2 +-
 test/sql-tap/select7.test.lua            |   4 +-
 test/sql-tap/sort.test.lua               |   4 +-
 test/sql-tap/table.test.lua              |   2 +-
 test/sql-tap/tkt-3998683a16.test.lua     |   2 +-
 test/sql-tap/tkt-91e2e8ba6f.test.lua     |   2 +-
 test/sql-tap/tkt-9a8b09f8e6.test.lua     |   4 +-
 test/sql-tap/tkt1444.test.lua            |   2 +-
 test/sql-tap/tkt2192.test.lua            |   2 +-
 test/sql-tap/transitive1.test.lua        |   2 +-
 test/sql-tap/trigger5.test.lua           |   2 +-
 test/sql-tap/types.test.lua              |   2 +-
 test/sql-tap/where7.test.lua             |   4 +-
 test/sql-tap/whereA.test.lua             |   2 +-
 test/sql-tap/whereB.test.lua             |   8 +-
 test/sql/bind.result                     |   2 +-
 test/sql/bind.test.lua                   |   2 +-
 test/sql/checks.result                   |   4 +-
 test/sql/checks.test.lua                 |   4 +-
 test/sql/drop-index.result               |   2 +-
 test/sql/drop-index.test.lua             |   2 +-
 test/sql/errinj.result                   |   4 +-
 test/sql/errinj.test.lua                 |   4 +-
 test/sql/gh-2929-primary-key.result      |   6 +-
 test/sql/gh-2929-primary-key.test.lua    |   6 +-
 test/sql/gh2251-multiple-update.result   |   2 +-
 test/sql/gh2251-multiple-update.test.lua |   2 +-
 test/sql/integer-overflow.result         |   2 +-
 test/sql/integer-overflow.test.lua       |   2 +-
 test/sql/iproto.result                   |   2 +-
 test/sql/iproto.test.lua                 |   2 +-
 test/sql/persistency.result              |   2 +-
 test/sql/persistency.test.lua            |   2 +-
 test/sql/transition.result               |   2 +-
 test/sql/transition.test.lua             |   2 +-
 test/sql/triggers.result                 |   4 +-
 test/sql/triggers.test.lua               |   4 +-
 test/sql/types.result                    |   8 +-
 test/sql/types.test.lua                  |   6 +-
 61 files changed, 527 insertions(+), 527 deletions(-)

diff --git a/extra/mkkeywordhash.c b/extra/mkkeywordhash.c
index a353d4781..df34aa775 100644
--- a/extra/mkkeywordhash.c
+++ b/extra/mkkeywordhash.c
@@ -148,6 +148,7 @@ static Keyword aKeywordTable[] = {
   { "NO",                     "TK_NO",          FKEY,             false },
   { "NOT",                    "TK_NOT",         ALWAYS,           true  },
   { "NULL",                   "TK_NULL",        ALWAYS,           true  },
+  { "NUMBER",                 "TK_NUMBER",      ALWAYS,           true  },
   { "OF",                     "TK_OF",          ALWAYS,           true  },
   { "OFFSET",                 "TK_OFFSET",      ALWAYS,           false },
   { "ON",                     "TK_ON",          ALWAYS,           true  },
@@ -216,10 +217,10 @@ static Keyword aKeywordTable[] = {
   { "DENSE_RANK",             "TK_STANDARD",    RESERVED,         true  },
   { "DESCRIBE",               "TK_STANDARD",    RESERVED,         true  },
   { "DETERMINISTIC",          "TK_STANDARD",    RESERVED,         true  },
-  { "DOUBLE",                 "TK_DOUBLE",      RESERVED,         true  },
+  { "DOUBLE",                 "TK_STANDARD",    RESERVED,         true  },
   { "ELSEIF",                 "TK_STANDARD",    RESERVED,         true  },
   { "FETCH",                  "TK_STANDARD",    RESERVED,         true  },
-  { "FLOAT",                  "TK_FLOAT_KW",    RESERVED,         true  },
+  { "FLOAT",                  "TK_STANDARD",    RESERVED,         true  },
   { "FUNCTION",               "TK_STANDARD",    RESERVED,         true  },
   { "GET",                    "TK_STANDARD",    RESERVED,         true  },
   { "GRANT",                  "TK_STANDARD",    RESERVED,         true  },
@@ -242,7 +243,7 @@ static Keyword aKeywordTable[] = {
   { "RANGE",                  "TK_STANDARD",    RESERVED,         true  },
   { "RANK",                   "TK_STANDARD",    RESERVED,         true  },
   { "READS",                  "TK_STANDARD",    RESERVED,         true  },
-  { "REAL",                   "TK_REAL",        RESERVED,         true  },
+  { "REAL",                   "TK_STANDARD",    RESERVED,         true  },
   { "REPEAT",                 "TK_STANDARD",    RESERVED,         true  },
   { "RESIGNAL",               "TK_STANDARD",    RESERVED,         true  },
   { "RETURN",                 "TK_STANDARD",    RESERVED,         true  },
diff --git a/src/box/lua/lua_sql.c b/src/box/lua/lua_sql.c
index 138252ea0..f900c7ca5 100644
--- a/src/box/lua/lua_sql.c
+++ b/src/box/lua/lua_sql.c
@@ -164,9 +164,7 @@ lbox_sql_create_function(struct lua_State *L)
 		type = FIELD_TYPE_INTEGER;
 	else if (strcmp(type_arg, "TEXT") == 0)
 		type = FIELD_TYPE_STRING;
-	else if (strcmp(type_arg, "FLOAT") == 0)
-		type = FIELD_TYPE_NUMBER;
-	else if (strcmp(type_arg, "NUM") == 0)
+	else if (strcmp(type_arg, "NUMBER") == 0)
 		type = FIELD_TYPE_NUMBER;
 	else if (strcmp(type_arg, "BLOB") == 0)
 		type = FIELD_TYPE_SCALAR;
diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y
index 3929ed9c6..c4d60368d 100644
--- a/src/box/sql/parse.y
+++ b/src/box/sql/parse.y
@@ -1754,7 +1754,7 @@ typedef(A) ::= VARCHAR char_len(B) . {
 
 %type number_typedef {struct type_def}
 typedef(A) ::= number_typedef(A) .
-number_typedef(A) ::= FLOAT_KW|REAL|DOUBLE . { A.type = FIELD_TYPE_NUMBER; }
+number_typedef(A) ::= NUMBER . { A.type = FIELD_TYPE_NUMBER; }
 number_typedef(A) ::= INT|INTEGER_KW . { A.type = FIELD_TYPE_INTEGER; }
 number_typedef(A) ::= UNSIGNED . { A.type = FIELD_TYPE_UNSIGNED; }
 
diff --git a/test/sql-tap/analyze5.test.lua b/test/sql-tap/analyze5.test.lua
index f2583d5ef..45e76492a 100755
--- a/test/sql-tap/analyze5.test.lua
+++ b/test/sql-tap/analyze5.test.lua
@@ -62,7 +62,7 @@ test:do_test(
     function()
         -- Tarantool: waiting for #2130
         -- test:execsql("CREATE TABLE t1(id INTEGER PRIMARY KEY AUTOINCREMENT, t INT ,u INT ,v TEXT COLLATE nocase,w INT ,x INT ,y INT ,z INT )")
-        test:execsql("CREATE TABLE t1(id INTEGER PRIMARY KEY AUTOINCREMENT, t TEXT ,u TEXT ,v TEXT ,w TEXT ,x TEXT ,y TEXT ,z FLOAT)")
+        test:execsql("CREATE TABLE t1(id INTEGER PRIMARY KEY AUTOINCREMENT, t TEXT ,u TEXT ,v TEXT ,w TEXT ,x TEXT ,y TEXT ,z NUMBER)")
         for i=0,999 do -- _ in X(0, "X!for", [=[["set i 0","$i < 1000","incr i"]]=]) do
             if  ((i >= 25) and (i <= 50)) then
                 y = 1
diff --git a/test/sql-tap/analyzeF.test.lua b/test/sql-tap/analyzeF.test.lua
index 0df4db450..8f6fb5c97 100755
--- a/test/sql-tap/analyzeF.test.lua
+++ b/test/sql-tap/analyzeF.test.lua
@@ -22,7 +22,7 @@ local function isqrt(i)
     return math.floor(math.sqrt(i))
 end
 
-box.internal.sql_create_function("isqrt", "FLOAT", isqrt)
+box.internal.sql_create_function("isqrt", "NUMBER", isqrt)
 
 test:do_execsql_test(
     1.0,
diff --git a/test/sql-tap/atof1.test.lua b/test/sql-tap/atof1.test.lua
index 40778cd81..fe045427d 100755
--- a/test/sql-tap/atof1.test.lua
+++ b/test/sql-tap/atof1.test.lua
@@ -45,7 +45,7 @@ for i = 1, 10000 - 1, 1 do
     test:do_test(
         "atof1-1."..i..".2",
         function()
-            local y = test:execsql(string.format("SELECT %s=CAST(quote(%s) AS real)",x, x))
+            local y = test:execsql(string.format("SELECT %s=CAST(quote(%s) AS NUMBER)",x, x))
             return y
         end, {
             true
diff --git a/test/sql-tap/autoinc.test.lua b/test/sql-tap/autoinc.test.lua
index 260196845..1d0be8aef 100755
--- a/test/sql-tap/autoinc.test.lua
+++ b/test/sql-tap/autoinc.test.lua
@@ -541,7 +541,7 @@ test:do_catchsql_test(
 test:do_execsql_test(
     "autoinc-7.1",
     [[
-        CREATE TABLE t7(x INTEGER, y REAL, PRIMARY KEY(x AUTOINCREMENT));
+        CREATE TABLE t7(x INTEGER, y NUMBER, PRIMARY KEY(x AUTOINCREMENT));
         INSERT INTO t7(y) VALUES(123);
         INSERT INTO t7(y) VALUES(234);
         DELETE FROM t7;
@@ -627,7 +627,7 @@ test:do_test(
     function()
         return test:execsql([[
             DROP TABLE IF EXISTS t7;
-            CREATE TABLE t7(x INT, y REAL, PRIMARY KEY(x AUTOINCREMENT));
+            CREATE TABLE t7(x INT, y NUMBER, PRIMARY KEY(x AUTOINCREMENT));
             INSERT INTO t7(y) VALUES(123);
             INSERT INTO t7(y) VALUES(234);
             DELETE FROM t7;
diff --git a/test/sql-tap/boundary3.test.lua b/test/sql-tap/boundary3.test.lua
index fef15c93e..2f42b9bfb 100755
--- a/test/sql-tap/boundary3.test.lua
+++ b/test/sql-tap/boundary3.test.lua
@@ -26,7 +26,7 @@ test:do_test(
     "boundary3-1.1",
     function()
         return test:execsql([[
-            CREATE TABLE t1(rowid  INT primary key, a FLOAT ,x SCALAR);
+            CREATE TABLE t1(rowid  INT primary key, a NUMBER ,x SCALAR);
             INSERT INTO t1(rowid,a,x) VALUES(-8388609,1,'ffffffffff7fffff');
             INSERT INTO t1(rowid,a,x) VALUES(-36028797018963969,2,'ff7fffffffffffff');
             INSERT INTO t1(rowid,a,x) VALUES(9223372036854775806,3,'7fffffffffffffff');
@@ -109,7 +109,7 @@ test:do_test(
     "boundary3-1.3",
     function()
         return test:execsql([[
-            CREATE TABLE t2(r INT primary key, a REAL);
+            CREATE TABLE t2(r INT primary key, a NUMBER);
             INSERT INTO t2 SELECT rowid, a FROM t1;
             CREATE INDEX t2i1 ON t2(r);
             CREATE INDEX t2i2 ON t2(a);
@@ -282,12 +282,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.2.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid"
     ,{23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.2.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23})
 
 test:do_execsql_test(
@@ -317,12 +317,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.2.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid"
     ,{16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.2.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16})
 
 test:do_execsql_test(
@@ -352,12 +352,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.2.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8})
 
 test:do_execsql_test(
     "boundary3-2.2.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid DESC"
     ,{8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -387,12 +387,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.2.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16})
 
 test:do_execsql_test(
     "boundary3-2.2.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=16 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=16 ORDER BY t1.rowid DESC"
     ,{16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -437,12 +437,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.3.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid"
     ,{39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.3.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39})
 
 test:do_execsql_test(
@@ -472,12 +472,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.3.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid"
     ,{36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.3.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36})
 
 test:do_execsql_test(
@@ -507,12 +507,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.3.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14})
 
 test:do_execsql_test(
     "boundary3-2.3.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid DESC"
     ,{14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -542,12 +542,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.3.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36})
 
 test:do_execsql_test(
     "boundary3-2.3.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=36 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=36 ORDER BY t1.rowid DESC"
     ,{36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -592,12 +592,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.4.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid"
     ,{12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.4.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12})
 
 test:do_execsql_test(
@@ -627,12 +627,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.4.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid"
     ,{6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.4.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6})
 
 test:do_execsql_test(
@@ -662,12 +662,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.4.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9})
 
 test:do_execsql_test(
     "boundary3-2.4.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid DESC"
     ,{9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -697,12 +697,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.4.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6})
 
 test:do_execsql_test(
     "boundary3-2.4.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=6 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=6 ORDER BY t1.rowid DESC"
     ,{6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -747,12 +747,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.5.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid"
     ,{32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.5.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32})
 
 test:do_execsql_test(
@@ -782,12 +782,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.5.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid"
     ,{29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.5.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29})
 
 test:do_execsql_test(
@@ -817,12 +817,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.5.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37})
 
 test:do_execsql_test(
     "boundary3-2.5.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid DESC"
     ,{37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -852,12 +852,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.5.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29})
 
 test:do_execsql_test(
     "boundary3-2.5.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=29 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=29 ORDER BY t1.rowid DESC"
     ,{29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1017,12 +1017,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.7.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid"
     ,{5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.7.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5})
 
 test:do_execsql_test(
@@ -1052,12 +1052,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.7.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid"
     ,{41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.7.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41})
 
 test:do_execsql_test(
@@ -1087,12 +1087,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.7.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60})
 
 test:do_execsql_test(
     "boundary3-2.7.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid DESC"
     ,{60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1122,12 +1122,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.7.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41})
 
 test:do_execsql_test(
     "boundary3-2.7.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=41 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=41 ORDER BY t1.rowid DESC"
     ,{41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1172,12 +1172,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.8.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid"
     ,{4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.8.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4})
 
 test:do_execsql_test(
@@ -1207,12 +1207,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.8.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid"
     ,{31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.8.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31})
 
 test:do_execsql_test(
@@ -1242,12 +1242,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.8.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5})
 
 test:do_execsql_test(
     "boundary3-2.8.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid DESC"
     ,{5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1277,12 +1277,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.8.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31})
 
 test:do_execsql_test(
     "boundary3-2.8.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=31 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=31 ORDER BY t1.rowid DESC"
     ,{31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1442,12 +1442,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.10.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid"
     ,{8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.10.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8})
 
 test:do_execsql_test(
@@ -1477,12 +1477,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.10.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid"
     ,{61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.10.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61})
 
 test:do_execsql_test(
@@ -1512,12 +1512,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.10.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30})
 
 test:do_execsql_test(
     "boundary3-2.10.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid DESC"
     ,{30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1547,12 +1547,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.10.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61})
 
 test:do_execsql_test(
     "boundary3-2.10.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=61 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=61 ORDER BY t1.rowid DESC"
     ,{61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1597,12 +1597,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.11.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid"
     ,{46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.11.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46})
 
 test:do_execsql_test(
@@ -1632,12 +1632,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.11.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid"
     ,{22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.11.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22})
 
 test:do_execsql_test(
@@ -1667,12 +1667,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.11.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39})
 
 test:do_execsql_test(
     "boundary3-2.11.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid DESC"
     ,{39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1702,12 +1702,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.11.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22})
 
 test:do_execsql_test(
     "boundary3-2.11.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=22 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=22 ORDER BY t1.rowid DESC"
     ,{22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1752,12 +1752,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.12.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid"
     ,{15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.12.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15})
 
 test:do_execsql_test(
@@ -1787,12 +1787,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.12.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid"
     ,{62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.12.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62})
 
 test:do_execsql_test(
@@ -1822,12 +1822,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.12.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48})
 
 test:do_execsql_test(
     "boundary3-2.12.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid DESC"
     ,{48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1857,12 +1857,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.12.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62})
 
 test:do_execsql_test(
     "boundary3-2.12.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=62 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=62 ORDER BY t1.rowid DESC"
     ,{62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -1907,12 +1907,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.13.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid"
     ,{20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.13.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20})
 
 test:do_execsql_test(
@@ -1942,12 +1942,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.13.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid"
     ,{40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.13.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40})
 
 test:do_execsql_test(
@@ -1977,12 +1977,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.13.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12})
 
 test:do_execsql_test(
     "boundary3-2.13.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid DESC"
     ,{12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2012,12 +2012,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.13.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40})
 
 test:do_execsql_test(
     "boundary3-2.13.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=40 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=40 ORDER BY t1.rowid DESC"
     ,{40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2177,12 +2177,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.15.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid"
     ,{7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.15.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7})
 
 test:do_execsql_test(
@@ -2212,12 +2212,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.15.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid"
     ,{19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.15.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19})
 
 test:do_execsql_test(
@@ -2247,12 +2247,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.15.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57})
 
 test:do_execsql_test(
     "boundary3-2.15.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid DESC"
     ,{57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2282,12 +2282,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.15.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19})
 
 test:do_execsql_test(
     "boundary3-2.15.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=19 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=19 ORDER BY t1.rowid DESC"
     ,{19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2432,12 +2432,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.17.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid"
     ,{48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.17.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48})
 
 test:do_execsql_test(
@@ -2467,12 +2467,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.17.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid"
     ,{50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.17.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50})
 
 test:do_execsql_test(
@@ -2502,12 +2502,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.17.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23})
 
 test:do_execsql_test(
     "boundary3-2.17.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid DESC"
     ,{23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2537,12 +2537,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.17.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50})
 
 test:do_execsql_test(
     "boundary3-2.17.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=50 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=50 ORDER BY t1.rowid DESC"
     ,{50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2702,12 +2702,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.19.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid"
     ,{62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.19.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62})
 
 test:do_execsql_test(
@@ -2737,12 +2737,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.19.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid"
     ,{48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.19.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48})
 
 test:do_execsql_test(
@@ -2772,12 +2772,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.19.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50})
 
 test:do_execsql_test(
     "boundary3-2.19.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid DESC"
     ,{50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2807,12 +2807,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.19.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48})
 
 test:do_execsql_test(
     "boundary3-2.19.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=48 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=48 ORDER BY t1.rowid DESC"
     ,{48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2857,12 +2857,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.20.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid"
     ,{36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.20.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36})
 
 test:do_execsql_test(
@@ -2892,12 +2892,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.20.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid"
     ,{14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.20.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14})
 
 test:do_execsql_test(
@@ -2927,12 +2927,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.20.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51})
 
 test:do_execsql_test(
     "boundary3-2.20.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid DESC"
     ,{51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -2962,12 +2962,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.20.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14})
 
 test:do_execsql_test(
     "boundary3-2.20.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=14 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=14 ORDER BY t1.rowid DESC"
     ,{14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3012,12 +3012,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.21.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid"
     ,{19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.21.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19})
 
 test:do_execsql_test(
@@ -3047,12 +3047,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.21.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid"
     ,{57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.21.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57})
 
 test:do_execsql_test(
@@ -3082,12 +3082,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.21.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35})
 
 test:do_execsql_test(
     "boundary3-2.21.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid DESC"
     ,{35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3117,12 +3117,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.21.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57})
 
 test:do_execsql_test(
     "boundary3-2.21.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=57 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=57 ORDER BY t1.rowid DESC"
     ,{57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3167,12 +3167,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.22.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid"
     ,{29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.22.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29})
 
 test:do_execsql_test(
@@ -3202,12 +3202,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.22.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid"
     ,{37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.22.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37})
 
 test:do_execsql_test(
@@ -3237,12 +3237,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.22.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1})
 
 test:do_execsql_test(
     "boundary3-2.22.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid DESC"
     ,{1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3272,12 +3272,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.22.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37})
 
 test:do_execsql_test(
     "boundary3-2.22.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=37 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=37 ORDER BY t1.rowid DESC"
     ,{37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3322,12 +3322,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.23.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid"
     ,{57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.23.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57})
 
 test:do_execsql_test(
@@ -3357,12 +3357,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.23.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid"
     ,{35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.23.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35})
 
 test:do_execsql_test(
@@ -3392,12 +3392,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.23.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46})
 
 test:do_execsql_test(
     "boundary3-2.23.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid DESC"
     ,{46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3427,12 +3427,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.23.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35})
 
 test:do_execsql_test(
     "boundary3-2.23.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=35 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=35 ORDER BY t1.rowid DESC"
     ,{35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3477,12 +3477,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.24.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid"
     ,{24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.24.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24})
 
 test:do_execsql_test(
@@ -3512,12 +3512,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.24.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid"
     ,{18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.24.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18})
 
 test:do_execsql_test(
@@ -3547,12 +3547,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.24.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42})
 
 test:do_execsql_test(
     "boundary3-2.24.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid DESC"
     ,{42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3582,12 +3582,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.24.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18})
 
 test:do_execsql_test(
     "boundary3-2.24.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=18 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=18 ORDER BY t1.rowid DESC"
     ,{18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3632,12 +3632,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.25.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid"
     ,{33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.25.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33})
 
 test:do_execsql_test(
@@ -3667,12 +3667,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.25.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid"
     ,{52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.25.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52})
 
 test:do_execsql_test(
@@ -3702,12 +3702,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.25.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53})
 
 test:do_execsql_test(
     "boundary3-2.25.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid DESC"
     ,{53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3737,12 +3737,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.25.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52})
 
 test:do_execsql_test(
     "boundary3-2.25.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=52 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=52 ORDER BY t1.rowid DESC"
     ,{52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3787,12 +3787,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.26.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid"
     ,{60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.26.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60})
 
 test:do_execsql_test(
@@ -3822,12 +3822,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.26.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid"
     ,{59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.26.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59})
 
 test:do_execsql_test(
@@ -3857,12 +3857,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.26.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38})
 
 test:do_execsql_test(
     "boundary3-2.26.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid DESC"
     ,{38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3892,12 +3892,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.26.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59})
 
 test:do_execsql_test(
     "boundary3-2.26.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=59 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=59 ORDER BY t1.rowid DESC"
     ,{59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -3942,12 +3942,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.27.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid"
     ,{59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.27.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59})
 
 test:do_execsql_test(
@@ -3977,12 +3977,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.27.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid"
     ,{38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.27.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38})
 
 test:do_execsql_test(
@@ -4012,12 +4012,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.27.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33})
 
 test:do_execsql_test(
     "boundary3-2.27.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid DESC"
     ,{33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4047,12 +4047,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.27.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38})
 
 test:do_execsql_test(
     "boundary3-2.27.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=38 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=38 ORDER BY t1.rowid DESC"
     ,{38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4097,12 +4097,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.28.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid"
     ,{38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.28.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38})
 
 test:do_execsql_test(
@@ -4132,12 +4132,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.28.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid"
     ,{33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.28.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33})
 
 test:do_execsql_test(
@@ -4167,12 +4167,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.28.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52})
 
 test:do_execsql_test(
     "boundary3-2.28.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid DESC"
     ,{52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4202,12 +4202,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.28.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33})
 
 test:do_execsql_test(
     "boundary3-2.28.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=33 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=33 ORDER BY t1.rowid DESC"
     ,{33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4252,12 +4252,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.29.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid"
     ,{18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.29.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18})
 
 test:do_execsql_test(
@@ -4287,12 +4287,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.29.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid"
     ,{42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.29.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42})
 
 test:do_execsql_test(
@@ -4322,12 +4322,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.29.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15})
 
 test:do_execsql_test(
     "boundary3-2.29.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid DESC"
     ,{15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4357,12 +4357,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.29.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42})
 
 test:do_execsql_test(
     "boundary3-2.29.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=42 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=42 ORDER BY t1.rowid DESC"
     ,{42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4407,12 +4407,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.30.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid"
     ,{30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.30.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30})
 
 test:do_execsql_test(
@@ -4442,12 +4442,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.30.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid"
     ,{49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.30.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49})
 
 test:do_execsql_test(
@@ -4477,12 +4477,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.30.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4})
 
 test:do_execsql_test(
     "boundary3-2.30.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid DESC"
     ,{4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4512,12 +4512,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.30.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49})
 
 test:do_execsql_test(
     "boundary3-2.30.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=49 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=49 ORDER BY t1.rowid DESC"
     ,{49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4562,12 +4562,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.31.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid"
     ,{61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.31.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61})
 
 test:do_execsql_test(
@@ -4597,12 +4597,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.31.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid"
     ,{30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.31.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30})
 
 test:do_execsql_test(
@@ -4632,12 +4632,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.31.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49})
 
 test:do_execsql_test(
     "boundary3-2.31.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid DESC"
     ,{49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4667,12 +4667,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.31.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30})
 
 test:do_execsql_test(
     "boundary3-2.31.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=30 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=30 ORDER BY t1.rowid DESC"
     ,{30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4717,12 +4717,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.32.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid"
     ,{1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.32.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1})
 
 test:do_execsql_test(
@@ -4752,12 +4752,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.32.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid"
     ,{11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.32.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11})
 
 test:do_execsql_test(
@@ -4787,12 +4787,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.32.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47})
 
 test:do_execsql_test(
     "boundary3-2.32.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid DESC"
     ,{47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4822,12 +4822,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.32.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11})
 
 test:do_execsql_test(
     "boundary3-2.32.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=11 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=11 ORDER BY t1.rowid DESC"
     ,{11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4872,12 +4872,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.33.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid"
     ,{22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.33.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22})
 
 test:do_execsql_test(
@@ -4907,12 +4907,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.33.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid"
     ,{39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.33.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39})
 
 test:do_execsql_test(
@@ -4942,12 +4942,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.33.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36})
 
 test:do_execsql_test(
     "boundary3-2.33.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid DESC"
     ,{36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -4977,12 +4977,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.33.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39})
 
 test:do_execsql_test(
     "boundary3-2.33.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=39 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=39 ORDER BY t1.rowid DESC"
     ,{39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5027,12 +5027,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.34.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid"
     ,{63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.34.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63})
 
 test:do_execsql_test(
@@ -5062,12 +5062,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.34.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid"
     ,{58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.34.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58})
 
 test:do_execsql_test(
@@ -5097,12 +5097,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.34.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44})
 
 test:do_execsql_test(
     "boundary3-2.34.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid DESC"
     ,{44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5132,12 +5132,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.34.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58})
 
 test:do_execsql_test(
     "boundary3-2.34.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=58 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=58 ORDER BY t1.rowid DESC"
     ,{58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5182,12 +5182,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.35.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid"
     ,{54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.35.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54})
 
 test:do_execsql_test(
@@ -5217,12 +5217,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.35.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid"
     ,{32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.35.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32})
 
 test:do_execsql_test(
@@ -5252,12 +5252,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.35.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29})
 
 test:do_execsql_test(
     "boundary3-2.35.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid DESC"
     ,{29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5287,12 +5287,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.35.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32})
 
 test:do_execsql_test(
     "boundary3-2.35.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=32 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=32 ORDER BY t1.rowid DESC"
     ,{32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5337,12 +5337,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.36.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid"
     ,{51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.36.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51})
 
 test:do_execsql_test(
@@ -5372,12 +5372,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.36.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid"
     ,{20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.36.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20})
 
 test:do_execsql_test(
@@ -5407,12 +5407,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.36.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40})
 
 test:do_execsql_test(
     "boundary3-2.36.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid DESC"
     ,{40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5442,12 +5442,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.36.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20})
 
 test:do_execsql_test(
     "boundary3-2.36.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=20 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=20 ORDER BY t1.rowid DESC"
     ,{20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5492,12 +5492,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.37.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid"
     ,{53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.37.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53})
 
 test:do_execsql_test(
@@ -5527,12 +5527,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.37.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid"
     ,{54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.37.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54})
 
 test:do_execsql_test(
@@ -5562,12 +5562,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.37.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32})
 
 test:do_execsql_test(
     "boundary3-2.37.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid DESC"
     ,{32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5597,12 +5597,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.37.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54})
 
 test:do_execsql_test(
     "boundary3-2.37.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=54 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=54 ORDER BY t1.rowid DESC"
     ,{54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5647,12 +5647,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.38.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid"
     ,{52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.38.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52})
 
 test:do_execsql_test(
@@ -5682,12 +5682,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.38.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid"
     ,{53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.38.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53})
 
 test:do_execsql_test(
@@ -5717,12 +5717,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.38.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54})
 
 test:do_execsql_test(
     "boundary3-2.38.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid DESC"
     ,{54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5752,12 +5752,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.38.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53})
 
 test:do_execsql_test(
     "boundary3-2.38.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=53 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=53 ORDER BY t1.rowid DESC"
     ,{53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -5917,12 +5917,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.40.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid"
     ,{14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.40.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14})
 
 test:do_execsql_test(
@@ -5952,12 +5952,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.40.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid"
     ,{51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.40.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51})
 
 test:do_execsql_test(
@@ -5987,12 +5987,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.40.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20})
 
 test:do_execsql_test(
     "boundary3-2.40.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid DESC"
     ,{20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6022,12 +6022,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.40.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51})
 
 test:do_execsql_test(
     "boundary3-2.40.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=51 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=51 ORDER BY t1.rowid DESC"
     ,{51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6072,12 +6072,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.41.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid"
     ,{35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.41.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35})
 
 test:do_execsql_test(
@@ -6107,12 +6107,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.41.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid"
     ,{46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.41.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46})
 
 test:do_execsql_test(
@@ -6142,12 +6142,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.41.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22})
 
 test:do_execsql_test(
     "boundary3-2.41.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid DESC"
     ,{22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6177,12 +6177,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.41.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46})
 
 test:do_execsql_test(
     "boundary3-2.41.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=46 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=46 ORDER BY t1.rowid DESC"
     ,{46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6227,12 +6227,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.42.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid"
     ,{47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.42.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47})
 
 test:do_execsql_test(
@@ -6262,12 +6262,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.42.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid"
     ,{63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.42.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63})
 
 test:do_execsql_test(
@@ -6297,12 +6297,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.42.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58})
 
 test:do_execsql_test(
     "boundary3-2.42.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid DESC"
     ,{58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6332,12 +6332,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.42.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63})
 
 test:do_execsql_test(
     "boundary3-2.42.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=63 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=63 ORDER BY t1.rowid DESC"
     ,{63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6497,12 +6497,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.44.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid"
     ,{56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.44.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56})
 
 test:do_execsql_test(
@@ -6532,12 +6532,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.44.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid"
     ,{7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.44.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7})
 
 test:do_execsql_test(
@@ -6567,12 +6567,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.44.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19})
 
 test:do_execsql_test(
     "boundary3-2.44.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid DESC"
     ,{19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6602,12 +6602,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.44.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7})
 
 test:do_execsql_test(
     "boundary3-2.44.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=7 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=7 ORDER BY t1.rowid DESC"
     ,{7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6652,12 +6652,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.45.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid"
     ,{40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.45.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40})
 
 test:do_execsql_test(
@@ -6687,12 +6687,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.45.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid"
     ,{12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.45.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12})
 
 test:do_execsql_test(
@@ -6722,12 +6722,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.45.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6})
 
 test:do_execsql_test(
     "boundary3-2.45.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid DESC"
     ,{6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -6757,12 +6757,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.45.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12})
 
 test:do_execsql_test(
     "boundary3-2.45.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=12 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=12 ORDER BY t1.rowid DESC"
     ,{12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7037,12 +7037,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.48.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid"
     ,{37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.48.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37})
 
 test:do_execsql_test(
@@ -7072,12 +7072,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.48.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid"
     ,{1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.48.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1})
 
 test:do_execsql_test(
@@ -7107,12 +7107,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.48.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11})
 
 test:do_execsql_test(
     "boundary3-2.48.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid DESC"
     ,{11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7142,12 +7142,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.48.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1})
 
 test:do_execsql_test(
     "boundary3-2.48.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=1 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=1 ORDER BY t1.rowid DESC"
     ,{1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7192,12 +7192,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.49.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid"
     ,{6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.49.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6})
 
 test:do_execsql_test(
@@ -7227,12 +7227,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.49.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid"
     ,{9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.49.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9})
 
 test:do_execsql_test(
@@ -7262,12 +7262,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.49.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24})
 
 test:do_execsql_test(
     "boundary3-2.49.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid DESC"
     ,{24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7297,12 +7297,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.49.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9})
 
 test:do_execsql_test(
     "boundary3-2.49.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=9 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=9 ORDER BY t1.rowid DESC"
     ,{9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7347,12 +7347,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.50.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid"
     ,{9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.50.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9})
 
 test:do_execsql_test(
@@ -7382,12 +7382,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.50.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid"
     ,{24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.50.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24})
 
 test:do_execsql_test(
@@ -7417,12 +7417,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.50.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18})
 
 test:do_execsql_test(
     "boundary3-2.50.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid DESC"
     ,{18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7452,12 +7452,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.50.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24})
 
 test:do_execsql_test(
     "boundary3-2.50.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=24 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=24 ORDER BY t1.rowid DESC"
     ,{24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7502,12 +7502,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.51.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid"
     ,{16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.51.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16})
 
 test:do_execsql_test(
@@ -7537,12 +7537,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.51.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid"
     ,{8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.51.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8})
 
 test:do_execsql_test(
@@ -7572,12 +7572,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.51.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61})
 
 test:do_execsql_test(
     "boundary3-2.51.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid DESC"
     ,{61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7607,12 +7607,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.51.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8})
 
 test:do_execsql_test(
     "boundary3-2.51.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=8 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=8 ORDER BY t1.rowid DESC"
     ,{8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7772,12 +7772,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.53.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid"
     ,{42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.53.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42})
 
 test:do_execsql_test(
@@ -7807,12 +7807,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.53.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid"
     ,{15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.53.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15})
 
 test:do_execsql_test(
@@ -7842,12 +7842,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.53.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62})
 
 test:do_execsql_test(
     "boundary3-2.53.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid DESC"
     ,{62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -7877,12 +7877,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.53.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15})
 
 test:do_execsql_test(
     "boundary3-2.53.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=15 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=15 ORDER BY t1.rowid DESC"
     ,{15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8157,12 +8157,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.56.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid"
     ,{50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.56.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50})
 
 test:do_execsql_test(
@@ -8192,12 +8192,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.56.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid"
     ,{23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.56.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23})
 
 test:do_execsql_test(
@@ -8227,12 +8227,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.56.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16})
 
 test:do_execsql_test(
     "boundary3-2.56.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid DESC"
     ,{16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8262,12 +8262,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.56.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23})
 
 test:do_execsql_test(
     "boundary3-2.56.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=23 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=23 ORDER BY t1.rowid DESC"
     ,{23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8312,12 +8312,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.57.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid"
     ,{49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.57.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49})
 
 test:do_execsql_test(
@@ -8347,12 +8347,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.57.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid"
     ,{4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.57.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4})
 
 test:do_execsql_test(
@@ -8382,12 +8382,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.57.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31})
 
 test:do_execsql_test(
     "boundary3-2.57.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid DESC"
     ,{31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8417,12 +8417,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.57.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4})
 
 test:do_execsql_test(
     "boundary3-2.57.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=4 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=4 ORDER BY t1.rowid DESC"
     ,{4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8582,12 +8582,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.59.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid"
     ,{25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.59.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25})
 
 test:do_execsql_test(
@@ -8617,12 +8617,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.59.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid"
     ,{56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.59.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56})
 
 test:do_execsql_test(
@@ -8652,12 +8652,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.59.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7})
 
 test:do_execsql_test(
     "boundary3-2.59.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid DESC"
     ,{7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8687,12 +8687,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.59.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56})
 
 test:do_execsql_test(
     "boundary3-2.59.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=56 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=56 ORDER BY t1.rowid DESC"
     ,{56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8737,12 +8737,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.60.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid"
     ,{41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.60.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41})
 
 test:do_execsql_test(
@@ -8772,12 +8772,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.60.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid"
     ,{60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.60.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60})
 
 test:do_execsql_test(
@@ -8807,12 +8807,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.60.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59})
 
 test:do_execsql_test(
     "boundary3-2.60.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid DESC"
     ,{59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -8842,12 +8842,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.60.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60})
 
 test:do_execsql_test(
     "boundary3-2.60.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=60 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=60 ORDER BY t1.rowid DESC"
     ,{60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -9007,12 +9007,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.62.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid"
     ,{11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.62.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11})
 
 test:do_execsql_test(
@@ -9042,12 +9042,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.62.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid"
     ,{47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.62.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47})
 
 test:do_execsql_test(
@@ -9077,12 +9077,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.62.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63})
 
 test:do_execsql_test(
     "boundary3-2.62.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid DESC"
     ,{63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -9112,12 +9112,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.62.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47})
 
 test:do_execsql_test(
     "boundary3-2.62.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=47 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=47 ORDER BY t1.rowid DESC"
     ,{47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -9277,12 +9277,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.64.gt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid"
     ,{31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.64.gt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid > CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31})
 
 test:do_execsql_test(
@@ -9312,12 +9312,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.64.ge.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid"
     ,{5, 31, 4, 49, 30, 61, 8, 16, 23, 50, 48, 62, 15, 42, 18, 24, 9, 6, 12, 40, 20, 51, 14, 36, 39, 22, 46, 35, 57, 19, 7, 56, 25, 34, 10, 26, 13, 43, 27, 45, 17, 28, 3})
 
 test:do_execsql_test(
     "boundary3-2.64.ge.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid >= CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid DESC"
     ,{3, 28, 17, 45, 27, 43, 13, 26, 10, 34, 25, 56, 7, 19, 57, 35, 46, 22, 39, 36, 14, 51, 20, 40, 12, 6, 9, 24, 18, 42, 15, 62, 48, 50, 23, 16, 8, 61, 30, 49, 4, 31, 5})
 
 test:do_execsql_test(
@@ -9347,12 +9347,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.64.lt.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41})
 
 test:do_execsql_test(
     "boundary3-2.64.lt.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid < CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid DESC"
     ,{41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
@@ -9382,12 +9382,12 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "boundary3-2.64.le.10",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid"
     ,{55, 2, 64, 21, 44, 58, 63, 47, 11, 1, 37, 29, 32, 54, 53, 52, 33, 38, 59, 60, 41, 5})
 
 test:do_execsql_test(
     "boundary3-2.64.le.11",
-    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS real) WHERE t2.a=5 ORDER BY t1.rowid DESC"
+    "SELECT t1.a FROM  t1 JOIN t2 ON t1.rowid <= CAST(t2.r AS NUMBER) WHERE t2.a=5 ORDER BY t1.rowid DESC"
     ,{5, 41, 60, 59, 38, 33, 52, 53, 54, 32, 29, 37, 1, 11, 47, 63, 58, 44, 21, 64, 2, 55})
 
 test:do_execsql_test(
diff --git a/test/sql-tap/cast.test.lua b/test/sql-tap/cast.test.lua
index 9fc4ff11f..667fc0d34 100755
--- a/test/sql-tap/cast.test.lua
+++ b/test/sql-tap/cast.test.lua
@@ -67,7 +67,7 @@ test:do_execsql_test(
 test:do_catchsql_test(
     "cast-1.5",
     [[
-        SELECT CAST(x'616263' AS FLOAT)
+        SELECT CAST(x'616263' AS NUMBER)
     ]], {
         -- <cast-1.5>
         1, 'Type mismatch: can not convert abc to number'
@@ -147,7 +147,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-1.15",
     [[
-        SELECT CAST(NULL AS FLOAT)
+        SELECT CAST(NULL AS NUMBER)
     ]], {
         -- <cast-1.15>
         ""
@@ -157,7 +157,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-1.16",
     [[
-        SELECT typeof(CAST(NULL AS FLOAT))
+        SELECT typeof(CAST(NULL AS NUMBER))
     ]], {
         -- <cast-1.16>
         "null"
@@ -247,7 +247,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-1.25",
     [[
-        SELECT CAST(123 AS FLOAT)
+        SELECT CAST(123 AS NUMBER)
     ]], {
         -- <cast-1.25>
         123
@@ -257,7 +257,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-1.26",
     [[
-        SELECT typeof(CAST(123 AS FLOAT))
+        SELECT typeof(CAST(123 AS NUMBER))
     ]], {
         -- <cast-1.26>
         "number"
@@ -347,7 +347,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-1.35",
     [[
-        SELECT CAST(123.456 AS FLOAT)
+        SELECT CAST(123.456 AS NUMBER)
     ]], {
         -- <cast-1.35>
         123.456
@@ -357,7 +357,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-1.36",
     [[
-        SELECT typeof(CAST(123.456 AS FLOAT))
+        SELECT typeof(CAST(123.456 AS NUMBER))
     ]], {
         -- <cast-1.36>
         "number"
@@ -447,7 +447,7 @@ test:do_execsql_test(
 test:do_catchsql_test(
     "cast-1.45",
     [[
-        SELECT CAST('123abc' AS FLOAT)
+        SELECT CAST('123abc' AS NUMBER)
     ]], {
         -- <cast-1.45>
         1, 'Type mismatch: can not convert 123abc to number'
@@ -477,7 +477,7 @@ test:do_catchsql_test(
 test:do_catchsql_test(
     "cast-1.51",
     [[
-        SELECT CAST('123.5abc' AS FLOAT)
+        SELECT CAST('123.5abc' AS NUMBER)
     ]], {
         -- <cast-1.51>
         1, 'Type mismatch: can not convert 123.5abc to number'
@@ -498,7 +498,7 @@ test:do_catchsql_test(
 test:do_execsql_test(
     "case-1.60",
     [[
-        SELECT CAST(null AS REAL)
+        SELECT CAST(null AS NUMBER)
     ]], {
         -- <case-1.60>
         ""
@@ -508,7 +508,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-1.61",
     [[
-        SELECT typeof(CAST(null AS REAL))
+        SELECT typeof(CAST(null AS NUMBER))
     ]], {
         -- <case-1.61>
         "null"
@@ -518,7 +518,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-1.62",
     [[
-        SELECT CAST(1 AS REAL)
+        SELECT CAST(1 AS NUMBER)
     ]], {
         -- <case-1.62>
         1.0
@@ -528,7 +528,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-1.63",
     [[
-        SELECT typeof(CAST(1 AS REAL))
+        SELECT typeof(CAST(1 AS NUMBER))
     ]], {
         -- <case-1.63>
         "number"
@@ -538,7 +538,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-1.64",
     [[
-        SELECT CAST('1' AS REAL)
+        SELECT CAST('1' AS NUMBER)
     ]], {
         -- <case-1.64>
         1.0
@@ -548,7 +548,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-1.65",
     [[
-        SELECT typeof(CAST('1' AS REAL))
+        SELECT typeof(CAST('1' AS NUMBER))
     ]], {
         -- <case-1.65>
         "number"
@@ -558,7 +558,7 @@ test:do_execsql_test(
 test:do_catchsql_test(
     "case-1.66",
     [[
-        SELECT CAST('abc' AS REAL)
+        SELECT CAST('abc' AS NUMBER)
     ]], {
         -- <case-1.66>
         1, 'Type mismatch: can not convert abc to number'
@@ -568,7 +568,7 @@ test:do_catchsql_test(
 test:do_execsql_test(
     "case-1.68",
     [[
-        SELECT CAST(x'31' AS REAL)
+        SELECT CAST(x'31' AS NUMBER)
     ]], {
         -- <case-1.68>
         1.0
@@ -578,7 +578,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-1.69",
     [[
-        SELECT typeof(CAST(x'31' AS REAL))
+        SELECT typeof(CAST(x'31' AS NUMBER))
     ]], {
         -- <case-1.69>
         "number"
@@ -600,7 +600,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-2.2",
     [[
-        SELECT CAST('   -123.456' AS real)
+        SELECT CAST('   -123.456' AS NUMBER)
     ]], {
         -- <cast-2.2>
         -123.456
@@ -625,7 +625,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-3.2",
     [[
-        SELECT CAST(9223372036854774800 AS FLOAT)
+        SELECT CAST(9223372036854774800 AS NUMBER)
     ]], {
         -- <cast-3.2>
         9223372036854774784
@@ -634,13 +634,13 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "cast-3.3",
-    "SELECT CAST(9223372036854774800 AS real)",
+    "SELECT CAST(9223372036854774800 AS NUMBER)",
     {9.22337203685477e+18})
 
 test:do_execsql_test(
     "cast-3.4",
     [[
-        SELECT CAST(CAST(9223372036854774800 AS real) AS integer)
+        SELECT CAST(CAST(9223372036854774800 AS NUMBER) AS integer)
     ]], {
         -- <cast-3.4>
         9223372036854774784LL
@@ -660,7 +660,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-3.6",
     [[
-        SELECT CAST(-9223372036854774800 AS float)
+        SELECT CAST(-9223372036854774800 AS NUMBER)
     ]], {
         -- <cast-3.6>
         -9223372036854774784
@@ -669,13 +669,13 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "cast-3.7",
-    "SELECT CAST(-9223372036854774800 AS real)",
+    "SELECT CAST(-9223372036854774800 AS NUMBER)",
     {-9.22337203685477e+18})
 
 test:do_execsql_test(
     "cast-3.8",
     [[
-        SELECT CAST(CAST(-9223372036854774800 AS real) AS integer)
+        SELECT CAST(CAST(-9223372036854774800 AS NUMBER) AS integer)
     ]], {
         -- <cast-3.8>
         -9223372036854774784LL
@@ -695,7 +695,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-3.12",
     [[
-        SELECT CAST('9223372036854774800' AS FLOAT)
+        SELECT CAST('9223372036854774800' AS NUMBER)
     ]], {
         -- <cast-3.12>
         9223372036854774784
@@ -704,13 +704,13 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "cast-3.13",
-    "SELECT CAST(9223372036854774800 AS real)",
+    "SELECT CAST(9223372036854774800 AS NUMBER)",
     {9.22337203685477e+18})
 
 test:do_execsql_test(
     "cast-3.14",
     [[
-        SELECT CAST(CAST('9223372036854774800' AS real) AS integer)
+        SELECT CAST(CAST('9223372036854774800' AS NUMBER) AS integer)
     ]], {
         -- <cast-3.14>
         9223372036854774784LL
@@ -732,7 +732,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "cast-3.16",
     [[
-        SELECT CAST('-9223372036854774800' AS FLOAT)
+        SELECT CAST('-9223372036854774800' AS NUMBER)
     ]], {
         -- <cast-3.16>
         -9223372036854774784
@@ -741,13 +741,13 @@ test:do_execsql_test(
 
 test:do_execsql_test(
     "cast-3.17",
-    "SELECT CAST('-9223372036854774800' AS real)",
+    "SELECT CAST('-9223372036854774800' AS NUMBER)",
     {-9.22337203685477e+18})
 
 test:do_execsql_test(
     "cast-3.18",
     [[
-        SELECT CAST(CAST('-9223372036854774800' AS real) AS integer)
+        SELECT CAST(CAST('-9223372036854774800' AS NUMBER) AS integer)
     ]], {
         -- <cast-3.18>
         -9223372036854774784LL
@@ -770,7 +770,7 @@ if true then --test:execsql("PRAGMA encoding")[1][1]=="UTF-8" then
     test:do_execsql_test(
         "cast-3.22",
         [[
-            SELECT CAST(x'39323233333732303336383534373734383030' AS FLOAT)
+            SELECT CAST(x'39323233333732303336383534373734383030' AS NUMBER)
         ]], {
             -- <cast-3.22>
             9223372036854774784
@@ -778,13 +778,13 @@ if true then --test:execsql("PRAGMA encoding")[1][1]=="UTF-8" then
         })
     test:do_execsql_test(
         "cast-3.23",
-        "SELECT CAST(x'39323233333732303336383534373734383030' AS real)",
+        "SELECT CAST(x'39323233333732303336383534373734383030' AS NUMBER)",
         {9.22337203685477e+18})
 
     test:do_execsql_test(
         "cast-3.24",
         [[
-            SELECT CAST(CAST(x'39323233333732303336383534373734383030' AS real)
+            SELECT CAST(CAST(x'39323233333732303336383534373734383030' AS NUMBER)
                         AS integer)
         ]], {
             -- <cast-3.24>
@@ -796,7 +796,7 @@ end
 test:do_execsql_test(
     "case-3.25",
     [[
-        SELECT CAST(x'3138343436373434303733373039353531363135' AS REAL);
+        SELECT CAST(x'3138343436373434303733373039353531363135' AS NUMBER);
     ]], { 1.844674407371e+19 } )
 
 test:do_execsql_test(
@@ -808,7 +808,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "case-3.31",
     [[
-        SELECT CAST(NULL AS FLOAT)
+        SELECT CAST(NULL AS NUMBER)
     ]], {
         -- <case-3.31>
         ""
@@ -825,7 +825,7 @@ test:do_test(
     function()
         blob = 1234567890
         DB = sql_connection_pointer("db")
-        STMT = sql_prepare(DB, "SELECT CAST(? AS real)", -1, "TAIL")
+        STMT = sql_prepare(DB, "SELECT CAST(? AS NUMBER)", -1, "TAIL")
         sql_bind_blob("-static", STMT, 1, blob, 5)
         return sql_step(STMT)
     end, {
@@ -883,7 +883,7 @@ test:do_test(
     "cast-4.4",
     function()
         return test:catchsql [[
-            SELECT a, CAST(a AS real), a FROM t1;
+            SELECT a, CAST(a AS NUMBER), a FROM t1;
         ]]
     end, {
         -- <cast-4.4>
diff --git a/test/sql-tap/check.test.lua b/test/sql-tap/check.test.lua
index 0c3cadd4e..7bd5f8177 100755
--- a/test/sql-tap/check.test.lua
+++ b/test/sql-tap/check.test.lua
@@ -29,7 +29,7 @@ test:do_execsql_test(
     [[
         CREATE TABLE t1(
           x INTEGER CHECK( x<5 ),
-          y REAL CHECK( y>x ),
+          y NUMBER CHECK( y>x ),
           z  INT primary key
         );
     ]], {
@@ -207,7 +207,7 @@ test:do_execsql_test(
         CREATE TABLE t2(
           id  INT primary key,
           x SCALAR CONSTRAINT one CHECK( typeof(coalesce(x,0))=='integer'),
-          y REAL CONSTRAINT two CHECK( typeof(coalesce(y,0.1))=='number' ),
+          y NUMBER CONSTRAINT two CHECK( typeof(coalesce(y,0.1))=='number' ),
           z SCALAR CONSTRAINT three CHECK( typeof(coalesce(z,''))=='string' )
         );
     ]], {
diff --git a/test/sql-tap/default.test.lua b/test/sql-tap/default.test.lua
index 55d16bcd7..f2a5db071 100755
--- a/test/sql-tap/default.test.lua
+++ b/test/sql-tap/default.test.lua
@@ -104,8 +104,8 @@ test:do_execsql_test(
 	a INTEGER PRIMARY KEY AUTOINCREMENT,
 	b INT DEFAULT 12345 UNIQUE NOT NULL CHECK( b>=0 AND b<99999 ),
 	c VARCHAR(123) DEFAULT 'hello' NOT NULL,
-	d REAL,
-	e FLOAT DEFAULT 4.36,
+	d NUMBER,
+	e NUMBER DEFAULT 4.36,
 	f VARCHAR(15), --COLLATE RTRIM,
 	g INTEGER DEFAULT( 3600*12 )
 	);
diff --git a/test/sql-tap/e_select1.test.lua b/test/sql-tap/e_select1.test.lua
index e5b63e12d..a0a671644 100755
--- a/test/sql-tap/e_select1.test.lua
+++ b/test/sql-tap/e_select1.test.lua
@@ -308,7 +308,7 @@ test:do_select_tests(
 -- clause, then the result of the join is simply the cartesian product of
 -- the left and right-hand datasets.
 --
---    The tests are built on this assertion. Really, they test that the output
+--    The tests are built on this assertion. NUMBERly, they test that the output
 --    of a CROSS JOIN, JOIN, INNER JOIN or "," join matches the expected result
 --    of calculating the cartesian product of the left and right-hand datasets.
 --
@@ -327,7 +327,7 @@ test:do_execsql_test(
     "e_select-1.4.0",
     [[
         CREATE TABLE x1(id  INT primary key, a TEXT , b TEXT );
-        CREATE TABLE x2(id  INT primary key, c FLOAT , d FLOAT , e FLOAT );
+        CREATE TABLE x2(id  INT primary key, c NUMBER , d NUMBER , e NUMBER );
         CREATE TABLE x3(id  INT primary key, f TEXT , g TEXT , h TEXT , i TEXT );
 
         -- x1: 3 rows, 2 columns
@@ -748,9 +748,9 @@ test:drop_all_tables()
 test:do_execsql_test(
     "e_select-4.0",
     [[
-        CREATE TABLE z1(id  INT primary key, a FLOAT, b FLOAT, c TEXT);
-        CREATE TABLE z2(id  INT primary key, d FLOAT, e FLOAT);
-        CREATE TABLE z3(id  INT primary key, a FLOAT, b FLOAT);
+        CREATE TABLE z1(id  INT primary key, a NUMBER, b NUMBER, c TEXT);
+        CREATE TABLE z2(id  INT primary key, d NUMBER, e NUMBER);
+        CREATE TABLE z3(id  INT primary key, a NUMBER, b NUMBER);
 
         INSERT INTO z1 VALUES(1, 51.65, -59.58, 'belfries');
         INSERT INTO z1 VALUES(2, -5, NULL, 75);
@@ -1453,8 +1453,8 @@ test:drop_all_tables()
 test:do_execsql_test(
     "e_select-7.4.0",
     [[
-        CREATE TABLE q1(id  INT primary key, a TEXT, b FLOAT, c FLOAT);
-        CREATE TABLE q2(id  INT primary key, d TEXT, e FLOAT);
+        CREATE TABLE q1(id  INT primary key, a TEXT, b NUMBER, c NUMBER);
+        CREATE TABLE q2(id  INT primary key, d TEXT, e NUMBER);
         CREATE TABLE q3(id  INT primary key, f TEXT, g INT);
 
         INSERT INTO q1 VALUES(1, 16, -87.66, NULL);
@@ -1599,7 +1599,7 @@ test:drop_all_tables()
 test:do_execsql_test(
     "e_select-7.10.0",
     [[
-        CREATE TABLE w1(a TEXT PRIMARY KEY, b FLOAT);
+        CREATE TABLE w1(a TEXT PRIMARY KEY, b NUMBER);
         CREATE TABLE w2(a  INT PRIMARY KEY, b TEXT);
 
         INSERT INTO w1 VALUES('1', 4.1);
@@ -1875,7 +1875,7 @@ test:do_select_tests(
 test:do_execsql_test(
     "e_select-8.8.0",
     [[
-        CREATE TABLE d3(id  INT primary key, a FLOAT);
+        CREATE TABLE d3(id  INT primary key, a NUMBER);
         INSERT INTO d3 VALUES(1, 0);
         INSERT INTO d3 VALUES(2, 14.1);
         INSERT INTO d3 VALUES(3, 13);
diff --git a/test/sql-tap/func.test.lua b/test/sql-tap/func.test.lua
index 961fd350a..e44b23dc2 100755
--- a/test/sql-tap/func.test.lua
+++ b/test/sql-tap/func.test.lua
@@ -357,7 +357,7 @@ test:do_test(
     "func-4.1",
     function()
         test:execsql([[
-            CREATE TABLE t1(id integer primary key, a INT,b REAL,c REAL);
+            CREATE TABLE t1(id integer primary key, a INT,b NUMBER,c NUMBER);
             INSERT INTO t1(id, a,b,c) VALUES(1, 1,2,3);
             INSERT INTO t1(id, a,b,c) VALUES(2, 2,1.2345678901234,-12345.67890);
             INSERT INTO t1(id, a,b,c) VALUES(3, 3,-2,-5);
diff --git a/test/sql-tap/in1.test.lua b/test/sql-tap/in1.test.lua
index 4a266c545..ba4c06936 100755
--- a/test/sql-tap/in1.test.lua
+++ b/test/sql-tap/in1.test.lua
@@ -623,7 +623,7 @@ test:do_catchsql_test(
 test:do_execsql_test(
     "in-11.1",
     [[
-        CREATE TABLE t6(a  INT PRIMARY KEY,b FLOAT);
+        CREATE TABLE t6(a  INT PRIMARY KEY,b NUMBER);
         INSERT INTO t6 VALUES(1,2);
         INSERT INTO t6 VALUES(2,3);
         SELECT * FROM t6 WHERE b IN (2);
diff --git a/test/sql-tap/in3.test.lua b/test/sql-tap/in3.test.lua
index ce42c5cdb..e29db9d93 100755
--- a/test/sql-tap/in3.test.lua
+++ b/test/sql-tap/in3.test.lua
@@ -290,12 +290,12 @@ test:do_test(
             DROP TABLE IF EXISTS t1;
             DROP TABLE IF EXISTS t1;
 
-            CREATE TABLE t1(id  INT primary key, a SCALAR, b FLOAT ,c TEXT);
+            CREATE TABLE t1(id  INT primary key, a SCALAR, b NUMBER ,c TEXT);
             CREATE UNIQUE INDEX t1_i1 ON t1(a);        /* no affinity */
             CREATE UNIQUE INDEX t1_i2 ON t1(b);        /* numeric affinity */
             CREATE UNIQUE INDEX t1_i3 ON t1(c);        /* text affinity */
 
-            CREATE TABLE t2(id  INT primary key, x SCALAR, y FLOAT, z TEXT);
+            CREATE TABLE t2(id  INT primary key, x SCALAR, y NUMBER, z TEXT);
             CREATE UNIQUE INDEX t2_i1 ON t2(x);        /* no affinity */
             CREATE UNIQUE INDEX t2_i2 ON t2(y);        /* numeric affinity */
             CREATE UNIQUE INDEX t2_i3 ON t2(z);        /* text affinity */
diff --git a/test/sql-tap/in4.test.lua b/test/sql-tap/in4.test.lua
index 92427b657..8c6917379 100755
--- a/test/sql-tap/in4.test.lua
+++ b/test/sql-tap/in4.test.lua
@@ -588,7 +588,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "in4-4.11",
     [[
-        CREATE TABLE t4b(a TEXT, b FLOAT, c  INT PRIMARY KEY);
+        CREATE TABLE t4b(a TEXT, b NUMBER, c  INT PRIMARY KEY);
         INSERT INTO t4b VALUES('1.0',1,4);
         SELECT c FROM t4b WHERE a=b;
     ]], {
diff --git a/test/sql-tap/index1.test.lua b/test/sql-tap/index1.test.lua
index db3113131..16209715d 100755
--- a/test/sql-tap/index1.test.lua
+++ b/test/sql-tap/index1.test.lua
@@ -279,7 +279,7 @@ test:do_test(
     "index-6.1",
     function()
         test:execsql "CREATE TABLE test1(id  INT primary key, f1 int, f2 int)"
-        test:execsql "CREATE TABLE test2(id  INT primary key, g1 float, g2 float)"
+        test:execsql "CREATE TABLE test2(id  INT primary key, g1 NUMBER, g2 NUMBER)"
         return test:execsql "CREATE INDEX index1 ON test1(f1)"
     end, {
         -- <index-6.1>
@@ -578,7 +578,7 @@ test:do_test(
             CREATE TABLE t3(
               a text,
               b int,
-              c float,
+              c NUMBER,
               PRIMARY KEY(b)
             );
         ]]
@@ -605,7 +605,7 @@ end
 test:do_execsql_test(
     "index-12.1",
     [[
-        CREATE TABLE t4(id  INT primary key, a FLOAT,b INT );
+        CREATE TABLE t4(id  INT primary key, a NUMBER,b INT );
         INSERT INTO t4 VALUES(1, '0.0',1);
         INSERT INTO t4 VALUES(2, '0.00',2);
         INSERT INTO t4 VALUES(4, '-1.0',4);
@@ -688,7 +688,7 @@ test:do_execsql_test(
     [[
         CREATE TABLE t5(
            a int UNIQUE,
-           b float PRIMARY KEY,
+           b NUMBER PRIMARY KEY,
            c  TEXT,
            UNIQUE(a,c)
         );
diff --git a/test/sql-tap/insert3.test.lua b/test/sql-tap/insert3.test.lua
index 3eb30a7f8..43bb06630 100755
--- a/test/sql-tap/insert3.test.lua
+++ b/test/sql-tap/insert3.test.lua
@@ -236,7 +236,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "insert3-3.7",
     [[
-            CREATE TABLE t6(id INTEGER PRIMARY KEY AUTOINCREMENT, x INT ,y FLOAT DEFAULT 4.3, z TEXT DEFAULT 'hi');
+            CREATE TABLE t6(id INTEGER PRIMARY KEY AUTOINCREMENT, x INT ,y NUMBER DEFAULT 4.3, z TEXT DEFAULT 'hi');
             INSERT INTO t6 DEFAULT VALUES;
             SELECT * FROM t6;
     ]], {
diff --git a/test/sql-tap/keyword1.test.lua b/test/sql-tap/keyword1.test.lua
index 9c524d607..cac584bf8 100755
--- a/test/sql-tap/keyword1.test.lua
+++ b/test/sql-tap/keyword1.test.lua
@@ -1,6 +1,6 @@
 #!/usr/bin/env tarantool
 test = require("sqltester")
-test:plan(176)
+test:plan(177)
 
 --!./tcltestrunner.lua
 -- 2009 January 29
@@ -163,6 +163,7 @@ local bannedkws = {
 	"localtime",
 	"localtimestamp",
 	"loop",
+	"number",
 	"out",
 	"over",
 	"partition",
diff --git a/test/sql-tap/numcast.test.lua b/test/sql-tap/numcast.test.lua
index 8855be76e..9f7248577 100755
--- a/test/sql-tap/numcast.test.lua
+++ b/test/sql-tap/numcast.test.lua
@@ -49,7 +49,7 @@ for _, enc in ipairs({"utf8"}) do
         test:do_test(
             string.format("numcast-%s.%s.1", enc, idx),
             function()
-                return test:execsql("SELECT CAST("..str.." AS real)")
+                return test:execsql("SELECT CAST("..str.." AS NUMBER)")
             end, {
                 rval
             })
diff --git a/test/sql-tap/pragma.test.lua b/test/sql-tap/pragma.test.lua
index 8221d36e6..b20bd724d 100755
--- a/test/sql-tap/pragma.test.lua
+++ b/test/sql-tap/pragma.test.lua
@@ -107,7 +107,7 @@ test:do_test(
 test:execsql(
 	[[
 		DROP TABLE IF EXISTS gh3733;
-		CREATE TABLE gh3733(id INT primary key, f float);
+		CREATE TABLE gh3733(id INT primary key, f NUMBER);
 		INSERT INTO gh3733 VALUES(1, 0.1), (2, 0.2), (3, 0.3);
 		CREATE INDEX IDX ON GH3733 (id);
 	]])
diff --git a/test/sql-tap/select3.test.lua b/test/sql-tap/select3.test.lua
index 2807d42c6..b51a9e8b6 100755
--- a/test/sql-tap/select3.test.lua
+++ b/test/sql-tap/select3.test.lua
@@ -367,18 +367,18 @@ test:do_execsql_test("select3-7.2", [[
   -- </select3-7.2>
 })
 
--- If a table column is of type REAL but we are storing integer values
+-- If a table column is of typeNUMBER but we are storing integer values
 -- in it, the values are stored as integers to take up less space.  The
--- values are converted by to REAL as they are read out of the table.
+-- values are converted by toNUMBER as they are read out of the table.
 -- Make sure the GROUP BY clause does this conversion correctly.
 -- Ticket #2251.
 --
 test:do_execsql_test("select3-8.1", [[
   DROP TABLE IF EXISTS A;
   CREATE TABLE A (
-    A1 DOUBLE,
+    A1 NUMBER,
     A2 TEXT,
-    A3 DOUBLE,
+    A3 NUMBER,
     id int primary key
   );
   INSERT INTO A VALUES(39136,'ABC',1201900000, 1);
diff --git a/test/sql-tap/select4.test.lua b/test/sql-tap/select4.test.lua
index 1c0804b8e..23cf1bf1b 100755
--- a/test/sql-tap/select4.test.lua
+++ b/test/sql-tap/select4.test.lua
@@ -759,7 +759,7 @@ test:do_test(
     "select4-8.1",
     function()
         test:execsql [[
-            CREATE TABLE t3(a text primary key, b float, c text);
+            CREATE TABLE t3(a text primary key, b NUMBER, c text);
             START TRANSACTION;
             INSERT INTO t3 VALUES(1, 1.1, '1.1');
             INSERT INTO t3 VALUES(2, 1.10, '1.10');
diff --git a/test/sql-tap/select7.test.lua b/test/sql-tap/select7.test.lua
index ab4c766ab..fec5d7a41 100755
--- a/test/sql-tap/select7.test.lua
+++ b/test/sql-tap/select7.test.lua
@@ -188,7 +188,7 @@ test:do_catchsql_test(
 test:do_execsql_test(
     "select7-7.1",
     [[
-        CREATE TABLE t3(a REAL primary key);
+        CREATE TABLE t3(a NUMBER primary key);
         INSERT INTO t3 VALUES(44.0);
         INSERT INTO t3 VALUES(56.0);
     ]], {
@@ -211,7 +211,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "select7-7.3",
     [[
-        CREATE TABLE t4(a REAL primary key);
+        CREATE TABLE t4(a NUMBER primary key);
         INSERT INTO t4 VALUES( 2.0 );
         INSERT INTO t4 VALUES( 3.0 );
     ]], {
diff --git a/test/sql-tap/sort.test.lua b/test/sql-tap/sort.test.lua
index a84c549cc..e15641415 100755
--- a/test/sql-tap/sort.test.lua
+++ b/test/sql-tap/sort.test.lua
@@ -31,7 +31,7 @@ test:do_test(
                v varchar(10),
                log int,
                roman varchar(10),
-               flt real
+               flt NUMBER
             );
             INSERT INTO t1 VALUES(1,'one',0,'I',3.141592653);
             INSERT INTO t1 VALUES(2,'two',1,'II',2.15);
@@ -633,7 +633,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "sort-8.1",
     [[
-        CREATE TABLE t5(a real, b text PRIMARY KEY);
+        CREATE TABLE t5(a NUMBER, b text PRIMARY KEY);
         INSERT INTO t5 VALUES(100,'A1');
         INSERT INTO t5 VALUES(100.0,'A2');
         SELECT * FROM t5 ORDER BY a, b;
diff --git a/test/sql-tap/table.test.lua b/test/sql-tap/table.test.lua
index a539f5222..40d7d6b7e 100755
--- a/test/sql-tap/table.test.lua
+++ b/test/sql-tap/table.test.lua
@@ -892,7 +892,7 @@ test:do_execsql_test(
     [[
         CREATE TABLE t7(
            a integer primary key,
-           b FLOAT,
+           b NUMBER,
            c VARCHAR(8),
            d VARCHAR(9),
            e SCALAR,
diff --git a/test/sql-tap/tkt-3998683a16.test.lua b/test/sql-tap/tkt-3998683a16.test.lua
index 631a977e3..885dcf5cd 100755
--- a/test/sql-tap/tkt-3998683a16.test.lua
+++ b/test/sql-tap/tkt-3998683a16.test.lua
@@ -25,7 +25,7 @@ test:do_test(
     "tkt-3998683a16.1",
     function()
         return test:execsql [[
-            CREATE TABLE t1(x  INT primary key, y REAL);
+            CREATE TABLE t1(x  INT primary key, y NUMBER);
             INSERT INTO t1 VALUES(1, '1.0');
             INSERT INTO t1 VALUES(2, '.125');
             INSERT INTO t1 VALUES(3, '123.');
diff --git a/test/sql-tap/tkt-91e2e8ba6f.test.lua b/test/sql-tap/tkt-91e2e8ba6f.test.lua
index 22f968f86..7622f7536 100755
--- a/test/sql-tap/tkt-91e2e8ba6f.test.lua
+++ b/test/sql-tap/tkt-91e2e8ba6f.test.lua
@@ -21,7 +21,7 @@ testprefix = "tkt-91e2e8ba6f"
 test:do_execsql_test(
     1.1,
     [[
-        CREATE TABLE t1(x INTEGER PRIMARY KEY, y REAL);
+        CREATE TABLE t1(x INTEGER PRIMARY KEY, y NUMBER);
         INSERT INTO t1 VALUES(11, 11);
     ]], {
         -- <1.1>
diff --git a/test/sql-tap/tkt-9a8b09f8e6.test.lua b/test/sql-tap/tkt-9a8b09f8e6.test.lua
index c80e3ae78..db0881caa 100755
--- a/test/sql-tap/tkt-9a8b09f8e6.test.lua
+++ b/test/sql-tap/tkt-9a8b09f8e6.test.lua
@@ -50,7 +50,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     1.3,
     [[
-        CREATE TABLE t3(x REAL primary key);
+        CREATE TABLE t3(x NUMBER primary key);
         INSERT INTO t3 VALUES(1.0);
     ]], {
         -- <1.3>
@@ -61,7 +61,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     1.4,
     [[
-        CREATE TABLE t4(x REAL primary key);
+        CREATE TABLE t4(x NUMBER primary key);
         INSERT INTO t4 VALUES(1.11);
     ]], {
         -- <1.4>
diff --git a/test/sql-tap/tkt1444.test.lua b/test/sql-tap/tkt1444.test.lua
index 563bf3c07..82a5ded25 100755
--- a/test/sql-tap/tkt1444.test.lua
+++ b/test/sql-tap/tkt1444.test.lua
@@ -28,7 +28,7 @@ test:plan(4)
 test:do_execsql_test(
     "tkt1444-1.1",
     [[
-        CREATE TABLE DemoTable (id  INT primary key, x INTEGER, TextKey TEXT, DKey FLOAT);
+        CREATE TABLE DemoTable (id  INT primary key, x INTEGER, TextKey TEXT, DKey NUMBER);
         CREATE INDEX DemoTableIdx ON DemoTable (TextKey);
         INSERT INTO DemoTable VALUES(1, 9,8,7);
         INSERT INTO DemoTable VALUES(2, 1,2,3);
diff --git a/test/sql-tap/tkt2192.test.lua b/test/sql-tap/tkt2192.test.lua
index 17b5d46d1..52309ff2b 100755
--- a/test/sql-tap/tkt2192.test.lua
+++ b/test/sql-tap/tkt2192.test.lua
@@ -33,7 +33,7 @@ test:do_execsql_test(
         -- Raw data (RBS) --------
 
         create table records (
-          date_t        real primary key,
+          date_t        NUMBER primary key,
           type          text,
           description   text,
           value         integer,
diff --git a/test/sql-tap/transitive1.test.lua b/test/sql-tap/transitive1.test.lua
index bed1d0442..e96056580 100755
--- a/test/sql-tap/transitive1.test.lua
+++ b/test/sql-tap/transitive1.test.lua
@@ -228,7 +228,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "transitive1-410",
     [[
-        CREATE TABLE bookmark ( idBookmark integer primary key, idFile integer, timeInSeconds double, totalTimeInSeconds double, thumbNailImage text, player text, playerState text, type integer);
+        CREATE TABLE bookmark ( idBookmark integer primary key, idFile integer, timeInSeconds NUMBER, totalTimeInSeconds NUMBER, thumbNailImage text, player text, playerState text, type integer);
         CREATE TABLE path ( idPath integer primary key, strPath text, strContent text, strScraper text, strHash text, scanRecursive integer, useFolderNames  INT , strSettings text, noUpdate  INT , exclude  INT , dateAdded text);
         INSERT INTO path VALUES(1,'/tmp/tvshows/','tvshows','metadata.tvdb.com','989B1CE5680A14F5F86123F751169B49',0,0,'<settings><setting id="absolutenumber" value="false" /><setting id="dvdorder" value="false" /><setting id="fanart" value="true" /><setting id="language" value="en" /></settings>',0,0,NULL);
         INSERT INTO path VALUES(2,'/tmp/tvshows/The.Big.Bang.Theory/','','','85E1DAAB2F5FF6EAE8AEDF1B5C882D1E',NULL,NULL,NULL,NULL,NULL,'2013-10-23 18:58:43');
diff --git a/test/sql-tap/trigger5.test.lua b/test/sql-tap/trigger5.test.lua
index f71649925..310e3591e 100755
--- a/test/sql-tap/trigger5.test.lua
+++ b/test/sql-tap/trigger5.test.lua
@@ -21,7 +21,7 @@ test:do_execsql_test(
     [[
         CREATE TABLE Item(
            a integer PRIMARY KEY NOT NULL ,
-           b double NULL ,
+           b NUMBER NULL ,
            c int NOT NULL DEFAULT 0
         );
         CREATE TABLE Undo(id INTEGER PRIMARY KEY, UndoAction TEXT);
diff --git a/test/sql-tap/types.test.lua b/test/sql-tap/types.test.lua
index 1cbb577ac..2306433fa 100755
--- a/test/sql-tap/types.test.lua
+++ b/test/sql-tap/types.test.lua
@@ -166,7 +166,7 @@ test:do_execsql_test(
 test:do_execsql_test(
     "types-2.2.1",
     [[
-        CREATE TABLE t2(id  INT primary key, a float);
+        CREATE TABLE t2(id  INT primary key, a NUMBER);
         INSERT INTO t2 VALUES(1, 0.0);
         INSERT INTO t2 VALUES(2, 12345.678);
         INSERT INTO t2 VALUES(3, -12345.678);
diff --git a/test/sql-tap/where7.test.lua b/test/sql-tap/where7.test.lua
index ecd0d247d..70209545d 100755
--- a/test/sql-tap/where7.test.lua
+++ b/test/sql-tap/where7.test.lua
@@ -332,7 +332,7 @@ test:do_test(
     "where7-2.1",
     function()
         return test:execsql [[
-            CREATE TABLE t2(a INTEGER PRIMARY KEY,b INT,c INT,d REAL,e REAL,f TEXT,g TEXT);
+            CREATE TABLE t2(a INTEGER PRIMARY KEY,b INT,c INT,d NUMBER,e NUMBER,f TEXT,g TEXT);
             INSERT INTO t2 VALUES(1,11,1001,1.001,100.1,'bcdefghij','yxwvuts');
             INSERT INTO t2 VALUES(2,22,1001,2.002,100.1,'cdefghijk','yxwvuts');
             INSERT INTO t2 VALUES(3,33,1001,3.0029999999999997,100.1,'defghijkl','xwvutsr');
@@ -439,7 +439,7 @@ test:do_test(
             CREATE INDEX t2e ON t2(e);
             CREATE INDEX t2f ON t2(f);
             CREATE INDEX t2g ON t2(g);
-            CREATE TABLE t3(a INTEGER PRIMARY KEY,b INT,c INT,d REAL,e REAL,f TEXT,g TEXT);
+            CREATE TABLE t3(a INTEGER PRIMARY KEY,b INT,c INT,d NUMBER,e NUMBER,f TEXT,g TEXT);
             INSERT INTO t3 SELECT * FROM t2;
             CREATE INDEX t3b ON t3(b,c);
             CREATE INDEX t3c ON t3(c,e);
diff --git a/test/sql-tap/whereA.test.lua b/test/sql-tap/whereA.test.lua
index 2c8cb45f9..b82575f5b 100755
--- a/test/sql-tap/whereA.test.lua
+++ b/test/sql-tap/whereA.test.lua
@@ -23,7 +23,7 @@ test:do_test(
     "whereA-1.1",
     function()
         return test:execsql [[
-            CREATE TABLE t1(a INTEGER PRIMARY KEY, b REAL UNIQUE, c TEXT);
+            CREATE TABLE t1(a INTEGER PRIMARY KEY, b NUMBER UNIQUE, c TEXT);
             INSERT INTO t1 VALUES(1,2,'3');
             INSERT INTO t1 values(2,55,'world');
             INSERT INTO t1 VALUES(3,4.53,NULL);
diff --git a/test/sql-tap/whereB.test.lua b/test/sql-tap/whereB.test.lua
index f75d0772c..d98645fdc 100755
--- a/test/sql-tap/whereB.test.lua
+++ b/test/sql-tap/whereB.test.lua
@@ -321,7 +321,7 @@ test:do_execsql_test(
         CREATE TABLE t1(x  INT primary key, y SCALAR);    -- affinity of t1.y is NONE
         INSERT INTO t1 VALUES(1,'99');
 
-        CREATE TABLE t2(a  INT primary key, b FLOAT);  -- affinity of t2.b is NUMERIC
+        CREATE TABLE t2(a  INT primary key, b NUMBER);  -- affinity of t2.b is NUMERIC
         CREATE INDEX t2b ON t2(b);
         INSERT INTO t2 VALUES(2,99);
 
@@ -521,7 +521,7 @@ test:do_execsql_test(
         CREATE TABLE t1(x  INT primary key, y SCALAR);    -- affinity of t1.y is NONE
         INSERT INTO t1 VALUES(1,'99');
 
-        CREATE TABLE t2(a  INT primary key, b FLOAT);  -- affinity of t2.b is REAL
+        CREATE TABLE t2(a  INT primary key, b NUMBER);  -- affinity of t2.b is REAL
         CREATE INDEX t2b ON t2(b);
         INSERT INTO t2 VALUES(2,99.0);
 
@@ -618,7 +618,7 @@ test:do_execsql_test(
         DROP TABLE t1;
         DROP TABLE t2;
 
-        CREATE TABLE t1(x  INT primary key, y FLOAT);  -- affinity of t1.y is NUMERIC
+        CREATE TABLE t1(x  INT primary key, y NUMBER);  -- affinity of t1.y is NUMERIC
         INSERT INTO t1 VALUES(1,99);
 
         CREATE TABLE t2(a  INT primary key, b SCALAR);  -- affinity of t2.b is NONE
@@ -818,7 +818,7 @@ test:do_execsql_test(
         DROP TABLE t1;
         DROP TABLE t2;
 
-        CREATE TABLE t1(x  INT primary key, y FLOAT);  -- affinity of t1.y is REAL
+        CREATE TABLE t1(x  INT primary key, y NUMBER);  -- affinity of t1.y is REAL
         INSERT INTO t1 VALUES(1,99.0);
 
         CREATE TABLE t2(a  INT primary key, b SCALAR);  -- affinity of t2.b is NONE
diff --git a/test/sql/bind.result b/test/sql/bind.result
index 3f677b9c5..cd0fcc0b1 100644
--- a/test/sql/bind.result
+++ b/test/sql/bind.result
@@ -4,7 +4,7 @@ netbox = require('net.box')
 test_run = require('test_run').new()
 ---
 ...
-box.execute('CREATE TABLE test (id INT PRIMARY KEY, a FLOAT, b TEXT)')
+box.execute('CREATE TABLE test (id INT PRIMARY KEY, a NUMBER, b TEXT)')
 ---
 - row_count: 1
 ...
diff --git a/test/sql/bind.test.lua b/test/sql/bind.test.lua
index 3e0eed29a..f311a0a71 100644
--- a/test/sql/bind.test.lua
+++ b/test/sql/bind.test.lua
@@ -1,7 +1,7 @@
 netbox = require('net.box')
 test_run = require('test_run').new()
 
-box.execute('CREATE TABLE test (id INT PRIMARY KEY, a FLOAT, b TEXT)')
+box.execute('CREATE TABLE test (id INT PRIMARY KEY, a NUMBER, b TEXT)')
 box.space.TEST:replace{1, 2, '3'}
 box.space.TEST:replace{7, 8.5, '9'}
 box.space.TEST:replace{10, 11, box.NULL}
diff --git a/test/sql/checks.result b/test/sql/checks.result
index 5279ae08d..b20514993 100644
--- a/test/sql/checks.result
+++ b/test/sql/checks.result
@@ -116,7 +116,7 @@ box.space._space:delete({513})
 - [513, 1, 'test', 'memtx', 0, {'checks': [{'expr': 'X>5'}]}, [{'name': 'X', 'type': 'unsigned'}]]
 ...
 -- Create table with checks in sql.
-box.execute("CREATE TABLE t1(x INTEGER CONSTRAINT ONE CHECK( x<5 ), y REAL CONSTRAINT TWO CHECK( y>x ), z INTEGER PRIMARY KEY);")
+box.execute("CREATE TABLE t1(x INTEGER CONSTRAINT ONE CHECK( x<5 ), y NUMBER CONSTRAINT TWO CHECK( y>x ), z INTEGER PRIMARY KEY);")
 ---
 - row_count: 1
 ...
@@ -153,7 +153,7 @@ box.execute("DROP TABLE t1")
 - row_count: 1
 ...
 -- Test space creation rollback on spell error in ck constraint.
-box.execute("CREATE TABLE first (id FLOAT PRIMARY KEY CHECK(id < 5), a INT CONSTRAINT ONE CHECK(a >< 5));")
+box.execute("CREATE TABLE first (id NUMBER PRIMARY KEY CHECK(id < 5), a INT CONSTRAINT ONE CHECK(a >< 5));")
 ---
 - error: Syntax error near '<'
 ...
diff --git a/test/sql/checks.test.lua b/test/sql/checks.test.lua
index cacba597c..cde213f8b 100644
--- a/test/sql/checks.test.lua
+++ b/test/sql/checks.test.lua
@@ -46,7 +46,7 @@ box.space._ck_constraint:delete({513, 'CK_CONSTRAINT_01'})
 box.space._space:delete({513})
 
 -- Create table with checks in sql.
-box.execute("CREATE TABLE t1(x INTEGER CONSTRAINT ONE CHECK( x<5 ), y REAL CONSTRAINT TWO CHECK( y>x ), z INTEGER PRIMARY KEY);")
+box.execute("CREATE TABLE t1(x INTEGER CONSTRAINT ONE CHECK( x<5 ), y NUMBER CONSTRAINT TWO CHECK( y>x ), z INTEGER PRIMARY KEY);")
 box.space._ck_constraint:count()
 box.execute("INSERT INTO t1 VALUES (7, 1, 1)")
 box.space.T1:insert({7, 1, 1})
@@ -57,7 +57,7 @@ box.space.T1:update({1}, {{'+', 1, 5}})
 box.execute("DROP TABLE t1")
 
 -- Test space creation rollback on spell error in ck constraint.
-box.execute("CREATE TABLE first (id FLOAT PRIMARY KEY CHECK(id < 5), a INT CONSTRAINT ONE CHECK(a >< 5));")
+box.execute("CREATE TABLE first (id NUMBER PRIMARY KEY CHECK(id < 5), a INT CONSTRAINT ONE CHECK(a >< 5));")
 box.space.FIRST == nil
 box.space._ck_constraint:count() == 0
 
diff --git a/test/sql/drop-index.result b/test/sql/drop-index.result
index 1104b5f67..e8eb642b3 100644
--- a/test/sql/drop-index.result
+++ b/test/sql/drop-index.result
@@ -10,7 +10,7 @@ box.execute('pragma sql_default_engine=\''..engine..'\'')
 ...
 -- box.cfg()
 -- create space
-box.execute("CREATE TABLE zzoobar (c1 FLOAT, c2 INT PRIMARY KEY, c3 TEXT, c4 FLOAT)")
+box.execute("CREATE TABLE zzoobar (c1 NUMBER, c2 INT PRIMARY KEY, c3 TEXT, c4 NUMBER)")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/drop-index.test.lua b/test/sql/drop-index.test.lua
index 9ce3da0c9..8cd86ee94 100644
--- a/test/sql/drop-index.test.lua
+++ b/test/sql/drop-index.test.lua
@@ -5,7 +5,7 @@ box.execute('pragma sql_default_engine=\''..engine..'\'')
 -- box.cfg()
 
 -- create space
-box.execute("CREATE TABLE zzoobar (c1 FLOAT, c2 INT PRIMARY KEY, c3 TEXT, c4 FLOAT)")
+box.execute("CREATE TABLE zzoobar (c1 NUMBER, c2 INT PRIMARY KEY, c3 TEXT, c4 NUMBER)")
 
 box.execute("CREATE UNIQUE INDEX zoobar2 ON zzoobar(c1, c4)")
 box.execute("CREATE        INDEX zoobar3 ON zzoobar(c3)")
diff --git a/test/sql/errinj.result b/test/sql/errinj.result
index 8846e5ee8..cb15a8359 100644
--- a/test/sql/errinj.result
+++ b/test/sql/errinj.result
@@ -58,7 +58,7 @@ box.execute('DROP TABLE t4')
 ---
 - row_count: 1
 ...
-box.execute('create table test (id int primary key, a float, b text)')
+box.execute('create table test (id int primary key, a NUMBER, b text)')
 ---
 - row_count: 1
 ...
@@ -306,7 +306,7 @@ box.execute("DROP TABLE t2;")
 -- Tests which are aimed at verifying work of commit/rollback
 -- triggers on _fk_constraint space.
 --
-box.execute("CREATE TABLE t3 (id FLOAT PRIMARY KEY, a INT REFERENCES t3, b INT UNIQUE);")
+box.execute("CREATE TABLE t3 (id NUMBER PRIMARY KEY, a INT REFERENCES t3, b INT UNIQUE);")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/errinj.test.lua b/test/sql/errinj.test.lua
index 48b80a443..16358c505 100644
--- a/test/sql/errinj.test.lua
+++ b/test/sql/errinj.test.lua
@@ -18,7 +18,7 @@ errinj.set('ERRINJ_MEMTX_DELAY_GC', false)
 errinj.set('ERRINJ_TUPLE_FORMAT_COUNT', -1)
 box.execute('DROP TABLE t4')
 
-box.execute('create table test (id int primary key, a float, b text)')
+box.execute('create table test (id int primary key, a NUMBER, b text)')
 box.schema.user.grant('guest','read,write,execute', 'universe')
 cn = remote.connect(box.cfg.listen)
 cn:ping()
@@ -95,7 +95,7 @@ box.execute("DROP TABLE t2;")
 -- Tests which are aimed at verifying work of commit/rollback
 -- triggers on _fk_constraint space.
 --
-box.execute("CREATE TABLE t3 (id FLOAT PRIMARY KEY, a INT REFERENCES t3, b INT UNIQUE);")
+box.execute("CREATE TABLE t3 (id NUMBER PRIMARY KEY, a INT REFERENCES t3, b INT UNIQUE);")
 t = box.space._fk_constraint:select{}[1]:totable()
 errinj = box.error.injection
 errinj.set("ERRINJ_WAL_IO", true)
diff --git a/test/sql/gh-2929-primary-key.result b/test/sql/gh-2929-primary-key.result
index abb38fb86..815b16e0b 100644
--- a/test/sql/gh-2929-primary-key.result
+++ b/test/sql/gh-2929-primary-key.result
@@ -22,15 +22,15 @@ box.execute("CREATE TABLE t2(a INT UNIQUE, b INT)")
 ---
 - error: 'Failed to create space ''T2'': PRIMARY KEY missing'
 ...
-box.execute("CREATE TABLE t3(a FLOAT)")
+box.execute("CREATE TABLE t3(a NUMBER)")
 ---
 - error: 'Failed to create space ''T3'': PRIMARY KEY missing'
 ...
-box.execute("CREATE TABLE t4(a FLOAT, b TEXT)")
+box.execute("CREATE TABLE t4(a NUMBER, b TEXT)")
 ---
 - error: 'Failed to create space ''T4'': PRIMARY KEY missing'
 ...
-box.execute("CREATE TABLE t5(a FLOAT, b FLOAT UNIQUE)")
+box.execute("CREATE TABLE t5(a NUMBER, b NUMBER UNIQUE)")
 ---
 - error: 'Failed to create space ''T5'': PRIMARY KEY missing'
 ...
diff --git a/test/sql/gh-2929-primary-key.test.lua b/test/sql/gh-2929-primary-key.test.lua
index 870e65abc..9cc6cd51e 100644
--- a/test/sql/gh-2929-primary-key.test.lua
+++ b/test/sql/gh-2929-primary-key.test.lua
@@ -11,9 +11,9 @@ box.cfg{}
 box.execute("CREATE TABLE t1(a INT PRIMARY KEY, b INT UNIQUE)")
 box.execute("CREATE TABLE t2(a INT UNIQUE, b INT)")
 
-box.execute("CREATE TABLE t3(a FLOAT)")
-box.execute("CREATE TABLE t4(a FLOAT, b TEXT)")
-box.execute("CREATE TABLE t5(a FLOAT, b FLOAT UNIQUE)")
+box.execute("CREATE TABLE t3(a NUMBER)")
+box.execute("CREATE TABLE t4(a NUMBER, b TEXT)")
+box.execute("CREATE TABLE t5(a NUMBER, b NUMBER UNIQUE)")
 
 box.execute("DROP TABLE t1")
 
diff --git a/test/sql/gh2251-multiple-update.result b/test/sql/gh2251-multiple-update.result
index d685ddbe4..42ebf7f55 100644
--- a/test/sql/gh2251-multiple-update.result
+++ b/test/sql/gh2251-multiple-update.result
@@ -35,7 +35,7 @@ box.execute("SELECT e FROM t1")
   - [7]
   - [8]
 ...
-box.execute("CREATE TABLE t2(a integer primary key, b INT UNIQUE, c FLOAT, d FLOAT, e INT,  UNIQUE(c,d));")
+box.execute("CREATE TABLE t2(a integer primary key, b INT UNIQUE, c NUMBER, d NUMBER, e INT,  UNIQUE(c,d));")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/gh2251-multiple-update.test.lua b/test/sql/gh2251-multiple-update.test.lua
index a852c4bb4..4d5509606 100644
--- a/test/sql/gh2251-multiple-update.test.lua
+++ b/test/sql/gh2251-multiple-update.test.lua
@@ -13,7 +13,7 @@ box.execute("UPDATE t1 SET e=e+1 WHERE b IN (SELECT b FROM t1);")
 
 box.execute("SELECT e FROM t1")
 
-box.execute("CREATE TABLE t2(a integer primary key, b INT UNIQUE, c FLOAT, d FLOAT, e INT,  UNIQUE(c,d));")
+box.execute("CREATE TABLE t2(a integer primary key, b INT UNIQUE, c NUMBER, d NUMBER, e INT,  UNIQUE(c,d));")
 box.execute("INSERT INTO t2 VALUES(1,2,3,4,5);")
 box.execute("INSERT INTO t2 VALUES(2,3,4,4,6);")
 
diff --git a/test/sql/integer-overflow.result b/test/sql/integer-overflow.result
index 528e7a6d6..a9a90f539 100644
--- a/test/sql/integer-overflow.result
+++ b/test/sql/integer-overflow.result
@@ -143,7 +143,7 @@ box.space.T:drop()
 -- Make sure that integers stored in NUMBER field are converted
 -- to floating point properly.
 --
-box.execute("CREATE TABLE t(id INT PRIMARY KEY, a FLOAT);")
+box.execute("CREATE TABLE t(id INT PRIMARY KEY, a NUMBER);")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/integer-overflow.test.lua b/test/sql/integer-overflow.test.lua
index d5635d5af..1b3e8cec1 100644
--- a/test/sql/integer-overflow.test.lua
+++ b/test/sql/integer-overflow.test.lua
@@ -46,7 +46,7 @@ box.space.T:drop()
 -- Make sure that integers stored in NUMBER field are converted
 -- to floating point properly.
 --
-box.execute("CREATE TABLE t(id INT PRIMARY KEY, a FLOAT);")
+box.execute("CREATE TABLE t(id INT PRIMARY KEY, a NUMBER);")
 box.space.T:insert({1, 18446744073709551615ULL})
 box.space.T:insert({2, -1})
 box.execute("SELECT * FROM t;")
diff --git a/test/sql/iproto.result b/test/sql/iproto.result
index 7b3463a0d..c0d5df460 100644
--- a/test/sql/iproto.result
+++ b/test/sql/iproto.result
@@ -11,7 +11,7 @@ box.execute('pragma sql_default_engine=\''..engine..'\'')
 ---
 - row_count: 0
 ...
-box.execute('create table test (id int primary key, a float, b text)')
+box.execute('create table test (id int primary key, a NUMBER, b text)')
 ---
 - row_count: 1
 ...
diff --git a/test/sql/iproto.test.lua b/test/sql/iproto.test.lua
index 5979c58af..dd60afe79 100644
--- a/test/sql/iproto.test.lua
+++ b/test/sql/iproto.test.lua
@@ -3,7 +3,7 @@ test_run = require('test_run').new()
 engine = test_run:get_cfg('engine')
 box.execute('pragma sql_default_engine=\''..engine..'\'')
 
-box.execute('create table test (id int primary key, a float, b text)')
+box.execute('create table test (id int primary key, a NUMBER, b text)')
 space = box.space.TEST
 space:replace{1, 2, '3'}
 space:replace{4, 5, '6'}
diff --git a/test/sql/persistency.result b/test/sql/persistency.result
index 3508a22e8..fcb5d2362 100644
--- a/test/sql/persistency.result
+++ b/test/sql/persistency.result
@@ -290,7 +290,7 @@ box.execute("SELECT COUNT(*) FROM foobar WHERE bar='cacodaemon'")
 ...
 -- multi-index
 -- create space
-box.execute("CREATE TABLE barfoo (bar TEXT, foo FLOAT PRIMARY KEY)")
+box.execute("CREATE TABLE barfoo (bar TEXT, foo NUMBER PRIMARY KEY)")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/persistency.test.lua b/test/sql/persistency.test.lua
index 12c949e08..196445349 100644
--- a/test/sql/persistency.test.lua
+++ b/test/sql/persistency.test.lua
@@ -41,7 +41,7 @@ box.execute("SELECT COUNT(*) FROM foobar WHERE bar='cacodaemon'")
 -- multi-index
 
 -- create space
-box.execute("CREATE TABLE barfoo (bar TEXT, foo FLOAT PRIMARY KEY)")
+box.execute("CREATE TABLE barfoo (bar TEXT, foo NUMBER PRIMARY KEY)")
 box.execute("CREATE UNIQUE INDEX barfoo2 ON barfoo(bar)")
 
 -- prepare data
diff --git a/test/sql/transition.result b/test/sql/transition.result
index 6f5e7636b..e7794742e 100644
--- a/test/sql/transition.result
+++ b/test/sql/transition.result
@@ -287,7 +287,7 @@ box.execute("SELECT COUNT(*) FROM foobar WHERE bar='cacodaemon'")
 ...
 -- multi-index
 -- create space
-box.execute("CREATE TABLE barfoo (bar TEXT, foo FLOAT PRIMARY KEY)")
+box.execute("CREATE TABLE barfoo (bar TEXT, foo NUMBER PRIMARY KEY)")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/transition.test.lua b/test/sql/transition.test.lua
index c76ab93da..a05c26a76 100644
--- a/test/sql/transition.test.lua
+++ b/test/sql/transition.test.lua
@@ -40,7 +40,7 @@ box.execute("SELECT COUNT(*) FROM foobar WHERE bar='cacodaemon'")
 -- multi-index
 
 -- create space
-box.execute("CREATE TABLE barfoo (bar TEXT, foo FLOAT PRIMARY KEY)")
+box.execute("CREATE TABLE barfoo (bar TEXT, foo NUMBER PRIMARY KEY)")
 box.execute("CREATE UNIQUE INDEX barfoo2 ON barfoo(bar)")
 
 -- prepare data
diff --git a/test/sql/triggers.result b/test/sql/triggers.result
index dcb66b0b9..76e87c8f2 100644
--- a/test/sql/triggers.result
+++ b/test/sql/triggers.result
@@ -308,7 +308,7 @@ box.execute("PRAGMA sql_default_engine('memtx');")
 ---
 - row_count: 0
 ...
-box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 REAL);")
+box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 NUMBER);")
 ---
 - row_count: 1
 ...
@@ -351,7 +351,7 @@ box.execute("PRAGMA sql_default_engine('vinyl');")
 ---
 - row_count: 0
 ...
-box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 REAL);")
+box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 NUMBER);")
 ---
 - row_count: 1
 ...
diff --git a/test/sql/triggers.test.lua b/test/sql/triggers.test.lua
index f9d50b4c7..f0397dc7d 100644
--- a/test/sql/triggers.test.lua
+++ b/test/sql/triggers.test.lua
@@ -104,7 +104,7 @@ box.execute("PRAGMA sql_default_engine ('vinyl');")
 box.execute("CREATE TABLE m (s0 INT PRIMARY KEY, s1 TEXT UNIQUE);")
 box.execute("CREATE TRIGGER m1 BEFORE UPDATE ON m FOR EACH ROW BEGIN UPDATE n SET s2 = 'now'; END;")
 box.execute("PRAGMA sql_default_engine('memtx');")
-box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 REAL);")
+box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 NUMBER);")
 box.execute("INSERT INTO m VALUES (0, '0');")
 box.execute("INSERT INTO n VALUES (0, '',null);")
 box.execute("UPDATE m SET s1 = 'The Rain In Spain';")
@@ -120,7 +120,7 @@ box.execute("PRAGMA sql_default_engine ('memtx');")
 box.execute("CREATE TABLE m (s0 INT PRIMARY KEY, s1 TEXT UNIQUE);")
 box.execute("CREATE TRIGGER m1 BEFORE UPDATE ON m FOR EACH ROW BEGIN UPDATE n SET s2 = 'now'; END;")
 box.execute("PRAGMA sql_default_engine('vinyl');")
-box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 REAL);")
+box.execute("CREATE TABLE n (s0 INT PRIMARY KEY, s1 TEXT UNIQUE, s2 NUMBER);")
 box.execute("INSERT INTO m VALUES (0, '0');")
 box.execute("INSERT INTO n VALUES (0, '',null);")
 box.execute("UPDATE m SET s1 = 'The Rain In Spain';")
diff --git a/test/sql/types.result b/test/sql/types.result
index 0dc90d5a4..780a23d51 100644
--- a/test/sql/types.result
+++ b/test/sql/types.result
@@ -31,7 +31,7 @@ box.execute("CREATE TABLE t1 (id INT PRIMARY KEY, a INT, b UNIQUE);")
 ...
 -- gh-3104: real type is stored in space format.
 --
-box.execute("CREATE TABLE t1 (id TEXT PRIMARY KEY, a REAL, b INT, c TEXT, d SCALAR);")
+box.execute("CREATE TABLE t1 (id TEXT PRIMARY KEY, a NUMBER, b INT, c TEXT, d SCALAR);")
 ---
 - row_count: 1
 ...
@@ -799,7 +799,7 @@ box.execute("SELECT CAST(true AS TEXT);")
   rows:
   - ['TRUE']
 ...
-box.execute("SELECT CAST(true AS FLOAT);")
+box.execute("SELECT CAST(true AS NUMBER);")
 ---
 - error: 'Type mismatch: can not convert true to number'
 ...
@@ -1640,10 +1640,10 @@ box.space.T1:drop()
 ...
 -- Test CAST facilities.
 --
-box.execute("SELECT CAST(18446744073709551615 AS FLOAT);")
+box.execute("SELECT CAST(18446744073709551615 AS NUMBER);")
 ---
 - metadata:
-  - name: CAST(18446744073709551615 AS FLOAT)
+  - name: CAST(18446744073709551615 AS NUMBER)
     type: number
   rows:
   - [1.844674407371e+19]
diff --git a/test/sql/types.test.lua b/test/sql/types.test.lua
index 06de8c977..cd862123f 100644
--- a/test/sql/types.test.lua
+++ b/test/sql/types.test.lua
@@ -11,7 +11,7 @@ box.execute("CREATE TABLE t1 (id INT PRIMARY KEY, a INT, b UNIQUE);")
 
 -- gh-3104: real type is stored in space format.
 --
-box.execute("CREATE TABLE t1 (id TEXT PRIMARY KEY, a REAL, b INT, c TEXT, d SCALAR);")
+box.execute("CREATE TABLE t1 (id TEXT PRIMARY KEY, a NUMBER, b INT, c TEXT, d SCALAR);")
 box.space.T1:format()
 box.execute("CREATE VIEW v1 AS SELECT b + a, b - a FROM t1;")
 box.space.V1:format()
@@ -191,7 +191,7 @@ box.space.V:drop()
 --
 box.execute("SELECT CAST(true AS INTEGER);")
 box.execute("SELECT CAST(true AS TEXT);")
-box.execute("SELECT CAST(true AS FLOAT);")
+box.execute("SELECT CAST(true AS NUMBER);")
 box.execute("SELECT CAST(true AS SCALAR);")
 box.execute("SELECT CAST(1 AS BOOLEAN);")
 box.execute("SELECT CAST(1.123 AS BOOLEAN);")
@@ -377,7 +377,7 @@ box.space.T1:drop()
 
 -- Test CAST facilities.
 --
-box.execute("SELECT CAST(18446744073709551615 AS FLOAT);")
+box.execute("SELECT CAST(18446744073709551615 AS NUMBER);")
 box.execute("SELECT CAST(18446744073709551615 AS TEXT);")
 box.execute("SELECT CAST(18446744073709551615 AS SCALAR);")
 box.execute("SELECT CAST(18446744073709551615 AS BOOLEAN);")
-- 
2.15.1





More information about the Tarantool-patches mailing list