]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add window functions lag() and lead().
authordan <dan@noemail.net>
Thu, 7 Jun 2018 20:08:59 +0000 (20:08 +0000)
committerdan <dan@noemail.net>
Thu, 7 Jun 2018 20:08:59 +0000 (20:08 +0000)
FossilOrigin-Name: ef34207073c21ce8618486777671ae78d23f290acd6d3c37e91a49b69cb506ac

manifest
manifest.uuid
src/window.c
test/window3.tcl
test/window3.test
test/window4.tcl
test/window4.test

index e66ca94c15104c1ee10f6c76425c8f972472d8e2..46253784356c0a86856e2734d806712601802573 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\ssupport\sfor\swindow\sfunction\sfirst_value().
-D 2018-06-07T17:45:22.248
+C Add\swindow\sfunctions\slag()\sand\slead().
+D 2018-06-07T20:08:59.730
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in bfc40f350586923e0419d2ea4b559c37ec10ee4b6e210e08c14401f8e340f0da
@@ -583,7 +583,7 @@ F src/where.c 60ec752fcbe9f9e0271ac60548d159a540a1ee47a4f9fedc85e88a3d0e392dd1
 F src/whereInt.h cbae2bcd37cfebdb7812a8b188cdb19634ced2b9346470d1c270556b0c33ea53
 F src/wherecode.c 728c7f70731430ccdac807a79969873e1af6968bf1c4745dff3f9dd35f636cc8
 F src/whereexpr.c e90b2e76dcabc81edff56633bf281bc01d93b71e0c81482dc06925ce39f5844a
-F src/window.c c48dd2d726123532f37d88084119e832ade7f61e4d7ce6a8e9c9b4125f7e6040
+F src/window.c 4a476f74f11eb02447fa51ef9465c13d1e888b839441d4aa8c742234df8afb48
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
 F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
@@ -1619,10 +1619,10 @@ F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc
 F test/window1.test 905fe0842eacfd61e2f30ef7b0a84a7325ffa5cbbcd717ca30f25a142c3bca90
 F test/window2.tcl 0983de5eade5eeda49469244799d5331bfe3199fca3f6c6d2a836aa08f4fba1b
 F test/window2.test 79747b2edde4ad424e0752b27529aedc86e91f3d8d88846fa17ff0cb67f65086
-F test/window3.tcl 4941d89c74dd12a3d0fa74548887a98cf101b2707b2fe5cb77581197f5074025
-F test/window3.test 4962a83e7f6ad1b5c8538424b4f9797513ab16d78777cd156c2744e402d63d90
-F test/window4.tcl 23918c0c0e3da95087c5993fab4f049962aec3576f9cc158e37faf7dead0351e
-F test/window4.test 0d89f694ffa9857e22b48e4b50a2d5284288c852eb1947a868b51af937b2b9ac
+F test/window3.tcl 8fdcd16a6de3e0ccc1c6f218268ba202d2f74f640e66b3cc624aeee6f2f8653b
+F test/window3.test 30da147abfe6b7e3f54b2902ccfa551966a46f3875154106c9ee34d5fa2ac455
+F test/window4.tcl 46f5d6adb4c8ad48508f28488586450a7ae010bac654ee871605f3c2217d910f
+F test/window4.test aab06a0a1be4cd9cf4ca015d04b072c9164aca508410e6ac01e2e389fa73b830
 F test/with1.test 58475190cd8caaeebea8cfeb2a264ec97a0c492b8ffe9ad20cefbb23df462f96
 F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
 F test/with3.test 5e8ce2c585170bbbc0544e2a01a4941fa0be173ba5265e5c92eb588cd99a232d
@@ -1739,7 +1739,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 63002b9a090397668b94fe341a035c42f84e4837af85395bce4cd1c2777c5209
-R f143e70c0a392b68a47207212ca0721c
+P 060b26402880daab085ad01f5f0dbde957c7a22cd219be5b8ec94fba883051a0
+R a6d08205275dc3d4fe75aeb0f2cd2aa0
 U dan
-Z 4ef45732bba3ef90b00747173eba3b6a
+Z a61f4779920493cec5c537f8753f226f
index bb183af53221f5e06b31610d1e3afe87c83d207c..f444258e55d90d21845a2de287c28f8624447c34 100644 (file)
@@ -1 +1 @@
-060b26402880daab085ad01f5f0dbde957c7a22cd219be5b8ec94fba883051a0
\ No newline at end of file
+ef34207073c21ce8618486777671ae78d23f290acd6d3c37e91a49b69cb506ac
\ No newline at end of file
index 50e37c5dbc3644933afbd1c9dcc2973f70b49437..269074717584a67fe57ddfe3fd2808bbca7c0394 100644 (file)
@@ -325,6 +325,36 @@ static void first_valueInverseFunc(
 static void first_valueValueFunc(sqlite3_context *pCtx){
 }
 
+static void leadStepFunc(
+  sqlite3_context *pCtx, 
+  int nArg,
+  sqlite3_value **apArg
+){
+}
+static void leadInverseFunc(
+  sqlite3_context *pCtx, 
+  int nArg,
+  sqlite3_value **apArg
+){
+}
+static void leadValueFunc(sqlite3_context *pCtx){
+}
+
+static void lagStepFunc(
+  sqlite3_context *pCtx, 
+  int nArg,
+  sqlite3_value **apArg
+){
+}
+static void lagInverseFunc(
+  sqlite3_context *pCtx, 
+  int nArg,
+  sqlite3_value **apArg
+){
+}
+static void lagValueFunc(sqlite3_context *pCtx){
+}
+
 #define WINDOWFUNC(name,nArg,extra) {                                      \
   nArg, (SQLITE_UTF8|SQLITE_FUNC_WINDOW|extra), 0, 0,                      \
   name ## StepFunc, name ## ValueFunc, name ## ValueFunc,                  \
@@ -351,6 +381,8 @@ void sqlite3WindowFunctions(void){
     WINDOWFUNCF(last_value, 1, 0),
     WINDOWFUNC(nth_value, 2, 0),
     WINDOWFUNC(first_value, 1, 0),
+    WINDOWFUNC(lead, 1, 0), WINDOWFUNC(lead, 2, 0), WINDOWFUNC(lead, 3, 0),
+    WINDOWFUNC(lag, 1, 0),  WINDOWFUNC(lag, 2, 0),  WINDOWFUNC(lag, 3, 0),
   };
   sqlite3InsertBuiltinFuncs(aWindowFuncs, ArraySize(aWindowFuncs));
 }
@@ -659,6 +691,11 @@ static void windowAggInit(Parse *pParse, Window *pMWin){
       pParse->nMem += 2;
       sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr);
     }
+    else if( p->xSFunc==leadStepFunc || p->xSFunc==lagStepFunc ){
+      assert( pMWin->iEphCsr );
+      pWin->csrApp = pParse->nTab++;
+      sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr);
+    }
   }
 }
 
@@ -747,6 +784,10 @@ static void windowAggStep(
       );
       assert( bInverse==0 || bInverse==1 );
       sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1-bInverse, 1);
+    }else if( pWin->pFunc->xSFunc==leadStepFunc 
+           || pWin->pFunc->xSFunc==lagStepFunc 
+    ){
+      /* no-op */
     }else{
       if( pWin->pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
         CollSeq *pColl;
@@ -877,6 +918,34 @@ static void windowReturnOneRow(
       sqlite3VdbeResolveLabel(v, lbl);
       sqlite3ReleaseTempReg(pParse, tmpReg);
     }
+    else if( pFunc->xSFunc==leadStepFunc || pFunc->xSFunc==lagStepFunc ){
+      int iEph = pWin->iEphCsr;
+      int csr = pWin->csrApp;
+      int lbl = sqlite3VdbeMakeLabel(v);
+      int tmpReg = sqlite3GetTempReg(pParse);
+
+      if( pWin->nArg<3 ){
+        sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
+      }else{
+        sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+2, pWin->regResult);
+      }
+      sqlite3VdbeAddOp2(v, OP_Rowid, iEph, tmpReg);
+      if( pWin->nArg<2 ){
+        int val = (pFunc->xSFunc==leadStepFunc ? 1 : -1);
+        sqlite3VdbeAddOp2(v, OP_AddImm, tmpReg, val);
+      }else{
+        int op = (pFunc->xSFunc==leadStepFunc ? OP_Add : OP_Subtract);
+        int tmpReg2 = sqlite3GetTempReg(pParse);
+        sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+1, tmpReg2);
+        sqlite3VdbeAddOp3(v, op, tmpReg2, tmpReg, tmpReg);
+        sqlite3ReleaseTempReg(pParse, tmpReg2);
+      }
+
+      sqlite3VdbeAddOp3(v, OP_SeekRowid, csr, lbl, tmpReg);
+      sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult);
+      sqlite3VdbeResolveLabel(v, lbl);
+      sqlite3ReleaseTempReg(pParse, tmpReg);
+    }
   }
   sqlite3VdbeAddOp2(v, OP_Gosub, regGosub, addrGosub);
 }
@@ -1600,6 +1669,8 @@ void sqlite3WindowCodeStep(
     if( (pFunc->funcFlags & SQLITE_FUNC_WINDOW_SIZE)
      || (pFunc->xSFunc==nth_valueStepFunc)
      || (pFunc->xSFunc==first_valueStepFunc)
+     || (pFunc->xSFunc==leadStepFunc)
+     || (pFunc->xSFunc==lagStepFunc)
     ){
       windowCodeCacheStep(pParse, p, pWInfo, regGosub, addrGosub);
       return;
index 74f30b78889afe844d0ff8e8aff7ce5484316949..9cdcfa2e62b69b6a36c45de77bced7bbeaf9d0f6 100644 (file)
@@ -242,6 +242,44 @@ foreach {tn window} {
   execsql_test 1.$tn.11.6 "
     SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
   "
+
+  execsql_test 1.$tn.12.1 "
+    SELECT lead(b,b) OVER (ORDER BY a $window) FROM t2
+  "
+  execsql_test 1.$tn.12.2 "
+    SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
+  "
+  execsql_test 1.$tn.12.3 "
+    SELECT lead(b,b) OVER ( ORDER BY b,a $window ) FROM t2
+  "
+  execsql_test 1.$tn.12.4 "
+    SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
+  "
+  execsql_test 1.$tn.12.5 "
+    SELECT lead(b,b) OVER ( ORDER BY b%10,a $window ) FROM t2
+  "
+  execsql_test 1.$tn.12.6 "
+    SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
+  "
+
+  execsql_test 1.$tn.13.1 "
+    SELECT lag(b,b) OVER (ORDER BY a $window) FROM t2
+  "
+  execsql_test 1.$tn.13.2 "
+    SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a $window) FROM t2
+  "
+  execsql_test 1.$tn.13.3 "
+    SELECT lag(b,b) OVER ( ORDER BY b,a $window ) FROM t2
+  "
+  execsql_test 1.$tn.13.4 "
+    SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a $window ) FROM t2
+  "
+  execsql_test 1.$tn.13.5 "
+    SELECT lag(b,b) OVER ( ORDER BY b%10,a $window ) FROM t2
+  "
+  execsql_test 1.$tn.13.6 "
+    SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 $window) FROM t2
+  "
 }
 
 finish_test
index 1744a57dbd2a1e9653f4c768164c4c7877e9e599..5b41daf6af40623308b4e9418f46ce0e9375128c 100644 (file)
@@ -345,6 +345,54 @@ do_execsql_test 1.1.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.1.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.1.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.1.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.1.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.1.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.1.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.2.2.1 {
   SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
 } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
@@ -633,6 +681,54 @@ do_execsql_test 1.2.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.2.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.2.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.2.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.2.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.2.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.2.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.3.2.1 {
   SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
 } {0   74   41   74   23   99   26   33   2   89   81   96   59   38   68   39   62   91   46   6   99   97   27   46   78   54   97   8   67   29   93   84   77   23   16   16   93   65   35   47   7   86   74   61   91   85   24   85   43   59   12   32   56   3   91   22   90   55   15   28   89   25   47   1   56   40   43   56   16   75   36   89   98   76   81   4   94   42   30   78   33   29   53   63   2   87   37   80   84   72   41   9   61   73   95   65   13   58   96   98   1   21   74   65   35   5   73   11   51   87   41   12   8   20   31   31   15   95   22   73   79   88   34   8   11   49   34   90   59   96   60   55   75   77   44   2   7   85   57   74   29   70   59   19   39   26   26   47   80   90   36   58   47   9   72   72   66   33   93   75   64   81   9   23   37   13   12   14   62   91   36   91   33   15   34   36   99   3   95   69   58   52   30   50   84   10   84   33   21   39   44   58   30   38   34   83   27   82   17   7}
@@ -921,6 +1017,54 @@ do_execsql_test 1.3.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.3.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.3.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.3.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.3.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.3.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.3.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.4.2.1 {
   SELECT max(b) OVER ( ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
 } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   95   95   84   84   84   84   84   84   84   84   83   83   83   83   83   83   83   83   83   82   82   17   7}
@@ -1209,6 +1353,54 @@ do_execsql_test 1.4.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.4.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.4.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.4.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.4.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.4.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.4.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 RANGE BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.5.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
 } {{}   {}   {}   {}   0   74   74   74   74   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
@@ -1497,6 +1689,54 @@ do_execsql_test 1.5.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
 } {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
 
+do_execsql_test 1.5.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.5.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.5.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.5.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.5.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.5.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.6.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
 } {{}   {}   0   74   74   74   74   99   99   99   33   89   89   96   96   96   68   68   68   91   91   91   99   99   99   97   78   78   97   97   97   67   93   93   93   84   77   23   93   93   93   65   47   86   86   86   91   91   91   85   85   85   59   59   56   56   91   91   91   90   90   55   89   89   89   47   56   56   56   56   56   75   75   89   98   98   98   81   94   94   94   78   78   78   53   63   63   87   87   87   84   84   84   72   61   73   95   95   95   65   96   98   98   98   74   74   74   65   73   73   73   87   87   87   41   20   31   31   31   95   95   95   79   88   88   88   34   49   49   90   90   96   96   96   75   77   77   77   44   85   85   85   74   74   70   70   59   39   39   47   80   90   90   90   58   58   72   72   72   72   93   93   93   81   81   81   37   37   37   14   62   91   91   91   91   91   34   36   99   99   99   95   95   69   58   52   84   84   84   84   84   39   44   58   58   58   38   83   83   83}
@@ -1785,6 +2025,54 @@ do_execsql_test 1.6.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
 } {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
 
+do_execsql_test 1.6.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.6.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.6.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.6.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.6.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.6.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 PRECEDING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.7.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
 } {0   74   74   74   74   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
@@ -2073,6 +2361,54 @@ do_execsql_test 1.7.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.7.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.7.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.7.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.7.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.7.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.7.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.8.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
 } {0   74   74   74   74   99   99   99   99   99   89   96   96   96   96   96   68   91   91   91   99   99   99   99   99   97   97   97   97   97   97   93   93   93   93   84   93   93   93   93   93   86   86   86   91   91   91   91   91   85   85   85   59   59   91   91   91   91   91   90   90   89   89   89   89   56   56   56   56   75   75   89   98   98   98   98   98   94   94   94   94   78   78   78   63   87   87   87   87   87   84   84   84   73   95   95   95   95   96   98   98   98   98   98   74   74   74   73   73   87   87   87   87   87   41   31   31   95   95   95   95   95   88   88   88   88   49   90   90   96   96   96   96   96   77   77   77   85   85   85   85   85   74   74   70   70   59   47   80   90   90   90   90   90   72   72   72   72   93   93   93   93   93   81   81   81   37   37   62   91   91   91   91   91   91   91   99   99   99   99   99   95   95   69   84   84   84   84   84   84   84   58   58   58   58   83   83   83   83   83}
@@ -2361,6 +2697,54 @@ do_execsql_test 1.8.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.8.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.8.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.8.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.8.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.8.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.8.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.9.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
 } {0   74   41   74   23   99   26   33   2   89   81   96   59   38   68   39   62   91   46   6   99   97   27   46   78   54   97   8   67   29   93   84   77   23   16   16   93   65   35   47   7   86   74   61   91   85   24   85   43   59   12   32   56   3   91   22   90   55   15   28   89   25   47   1   56   40   43   56   16   75   36   89   98   76   81   4   94   42   30   78   33   29   53   63   2   87   37   80   84   72   41   9   61   73   95   65   13   58   96   98   1   21   74   65   35   5   73   11   51   87   41   12   8   20   31   31   15   95   22   73   79   88   34   8   11   49   34   90   59   96   60   55   75   77   44   2   7   85   57   74   29   70   59   19   39   26   26   47   80   90   36   58   47   9   72   72   66   33   93   75   64   81   9   23   37   13   12   14   62   91   36   91   33   15   34   36   99   3   95   69   58   52   30   50   84   10   84   33   21   39   44   58   30   38   34   83   27   82   17   7}
@@ -2649,6 +3033,54 @@ do_execsql_test 1.9.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.9.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.9.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.9.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.9.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.9.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND CURRENT ROW ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.9.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND CURRENT ROW) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.10.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
 } {74   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
@@ -2937,6 +3369,54 @@ do_execsql_test 1.10.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.10.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.10.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.10.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.10.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.10.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.10.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.11.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
 } {74   74   74   99   99   99   99   99   99   99   96   96   96   96   96   96   91   91   99   99   99   99   99   99   99   97   97   97   97   97   97   93   93   93   93   93   93   93   93   93   93   86   91   91   91   91   91   91   91   85   85   85   91   91   91   91   91   91   91   90   90   89   89   89   89   56   56   75   75   89   98   98   98   98   98   98   98   94   94   94   94   78   78   87   87   87   87   87   87   87   84   84   95   95   95   95   96   98   98   98   98   98   98   98   74   74   74   87   87   87   87   87   87   87   41   95   95   95   95   95   95   95   88   88   88   90   90   96   96   96   96   96   96   96   77   85   85   85   85   85   85   85   74   74   70   70   80   90   90   90   90   90   90   90   72   72   93   93   93   93   93   93   93   81   81   81   62   91   91   91   91   91   91   91   99   99   99   99   99   99   99   95   95   84   84   84   84   84   84   84   84   58   58   83   83   83   83   83   83   83}
@@ -3225,6 +3705,54 @@ do_execsql_test 1.11.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.11.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.11.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.11.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.11.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.11.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.11.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND 2 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.12.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
 } {74   99   99   99   99   99   89   96   96   96   96   96   68   91   91   91   99   99   99   99   99   97   97   97   97   97   97   93   93   93   93   84   93   93   93   93   93   86   86   86   91   91   91   91   91   85   85   85   59   59   91   91   91   91   91   90   90   89   89   89   89   56   56   56   56   75   75   89   98   98   98   98   98   94   94   94   94   78   78   78   63   87   87   87   87   87   84   84   84   73   95   95   95   95   96   98   98   98   98   98   74   74   74   73   73   87   87   87   87   87   41   31   31   95   95   95   95   95   88   88   88   88   49   90   90   96   96   96   96   96   77   77   77   85   85   85   85   85   74   74   70   70   59   47   80   90   90   90   90   90   72   72   72   72   93   93   93   93   93   81   81   81   37   37   62   91   91   91   91   91   91   91   99   99   99   99   99   95   95   69   84   84   84   84   84   84   84   58   58   58   58   83   83   83   83   83   82   82   17   7}
@@ -3513,6 +4041,54 @@ do_execsql_test 1.12.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.12.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.12.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.12.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.12.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.12.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.12.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.13.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
 } {74   99   99   99   33   89   89   96   96   96   68   68   68   91   91   91   99   99   99   97   78   78   97   97   97   67   93   93   93   84   77   23   93   93   93   65   47   86   86   86   91   91   91   85   85   85   59   59   56   56   91   91   91   90   90   55   89   89   89   47   56   56   56   56   56   75   75   89   98   98   98   81   94   94   94   78   78   78   53   63   63   87   87   87   84   84   84   72   61   73   95   95   95   65   96   98   98   98   74   74   74   65   73   73   73   87   87   87   41   20   31   31   31   95   95   95   79   88   88   88   34   49   49   90   90   96   96   96   75   77   77   77   44   85   85   85   74   74   70   70   59   39   39   47   80   90   90   90   58   58   72   72   72   72   93   93   93   81   81   81   37   37   37   14   62   91   91   91   91   91   34   36   99   99   99   95   95   69   58   52   84   84   84   84   84   39   44   58   58   58   38   83   83   83   82   82   17   7   {}   {}}
@@ -3801,6 +4377,54 @@ do_execsql_test 1.13.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
 } {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
 
+do_execsql_test 1.13.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.13.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.13.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.13.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.13.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.13.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 2 FOLLOWING    AND 4 FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.14.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
 } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99}
@@ -4089,6 +4713,54 @@ do_execsql_test 1.14.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.14.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.14.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.14.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.14.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.14.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.14.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.15.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
 } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   95   95   84   84   84   84   84   84   84   84   83   83   83   83   83   83   83   83   83}
@@ -4377,6 +5049,54 @@ do_execsql_test 1.15.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.15.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.15.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.15.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.15.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.15.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.15.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 PRECEDING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.16.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
 } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   95   95   84   84   84   84   84   84   84   84   83   83   83   83   83   83   83   83   83   82   82   17   7}
@@ -4665,6 +5385,54 @@ do_execsql_test 1.16.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
 } {0   74   74   26   2   96   38   68   62   46   6   46   78   54   8   84   16   16   86   74   24   12   32   56   22   90   28   56   40   56   16   36   98   76   4   94   42   30   78   2   80   84   72   58   96   98   74   12   8   20   22   88   34   8   34   90   96   60   44   2   74   70   26   26   80   90   36   58   72   72   66   64   12   14   62   36   34   36   58   52   30   50   84   10   84   44   58   30   38   34   82   41   23   99   33   89   81   59   39   91   99   97   27   97   67   29   93   77   23   93   65   35   47   7   61   91   85   85   43   59   3   91   55   15   89   25   47   1   43   75   89   81   33   29   53   63   87   37   41   9   61   73   95   65   13   1   21   65   35   5   73   11   51   87   41   31   31   15   95   73   79   11   49   59   55   75   77   7   85   57   29   59   19   39   47   47   9   33   93   75   81   9   23   37   13   91   91   33   15   99   3   95   69   33   21   39   83   27   17   7}
 
+do_execsql_test 1.16.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.16.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.16.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.16.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.16.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.16.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN CURRENT ROW         AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 do_execsql_test 1.17.2.1 {
   SELECT max(b) OVER ( ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
 } {99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   99   95   95   84   84   84   84   84   84   84   84   83   83   83   83   83   83   83   83   83   82   82   17   7   {}   {}   {}   {}}
@@ -4953,4 +5721,52 @@ do_execsql_test 1.17.11.6 {
   SELECT first_value(b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
 } {{}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
 
+do_execsql_test 1.17.12.1 {
+  SELECT lead(b,b) OVER (ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   4   61   42   8   35   77   7   81   96   9   11   89   32   53   91   30   51   56   54   73   22   59   75   74   78   8   16   65   15   8   31   87   90   12   32   96   74   76   37   85   90   15   35   2   60   36   75   9   51   47   63   51   90   26   42   26   8   76   80   90   37   87   56   79   5   87   8   2   39   73   64   36   90   72   78   36   73   51   33   20   41   2   26   37   33   8   14   33   81   55   1   9   12   39   64   87   72   34   82   21   34   99   62   74   41   69   22   75   27   58   8   79   77   26   26   55   {}   29   30   7   {}   66   55   2   34   64   {}   33   {}   44   84   {}   {}   95   85   19   {}   83   {}   91   {}   {}   9   50   91   33   34   {}   {}   84   {}   7   9   {}   {}   {}   44   {}   {}   {}   {}   91   84   {}   95   95   52   {}   {}   {}   {}   {}   21   {}   {}   {}   58   {}   {}   {}   {}   {}   {}   {}   83   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.12.2 {
+  SELECT lead(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   81   {}   {}   {}   21   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   12   {}   62   {}   {}   {}   12   {}   {}   {}   72   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   53   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   95   {}   {}   {}   {}   {}   {}   85   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   56   {}   36   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   57   {}   {}   {}   {}   {}   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.12.3 {
+  SELECT lead(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   1   2   2   3   3   5   6   7   8   8   9   9   10   11   12   12   13   13   14   15   16   16   17   19   20   21   22   23   23   24   25   26   26   27   28   29   30   31   31   33   33   33   33   34   34   35   36   36   36   37   37   38   39   39   40   41   41   42   43   44   46   47   47   47   47   49   51   52   53   54   55   56   56   57   58   58   58   59   59   59   61   61   62   63   65   65   65   67   69   70   72   72   73   74   74   74   74   75   76   77   78   80   81   81   83   84   84   84   85   85   87   87   88   89   89   90   90   90   91   91   91   93   93   95   95   96   96   97   98   99   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.12.4 {
+  SELECT lead(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   80   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   11   61   81   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   12   12   72   82   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   13   23   63   73   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   34   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   35   85   85   95   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   26   76   86   96   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   37   47   47   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   58   58   68   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   39   49   59   99   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.12.5 {
+  SELECT lead(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   64   42   81   94   1   44   73   74   44   85   22   33   41   72   93   34   65   54   5   15   81   15   63   84   21   2   62   54   93   43   33   2   75   16   86   23   12   85   62   13   53   94   12   75   23   73   72   96   46   33   55   25   26   74   34   87   84   87   55   53   25   84   75   56   66   54   36   97   55   78   84   84   95   74   65   17   87   77   96   8   47   95   34   89   98   7   46   6   96   8   47   95   56   89   59   36   36   78   96   89   29   37   95   56   39   {}   8   58   67   85   86   {}   58   49   {}   29   76   {}   77   {}   78   56   98   36   97   {}   59   89   89   47   78   {}   {}   {}   38   68   58   {}   58   38   {}   98   {}   {}   {}   19   57   9   {}   9   {}   {}   7   {}   {}   {}   39   89   38   78   39   {}   {}   8   19   {}   {}   {}   {}   89   {}   39   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   9   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.12.6 {
+  SELECT lead(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.13.1 {
+  SELECT lag(b,b) OVER (ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   26   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   38   {}   {}   {}   {}   {}   {}   {}   6   {}   0   {}   {}   {}   81   46   6   {}   {}   74   {}   23   {}   {}   {}   {}   {}   27   {}   99   {}   35   6   {}   12   {}   23   {}   41   61   84   {}   93   39   47   2   54   46   96   56   {}   16   {}   {}   {}   {}   89   {}   16   43   74   85   56   29   99   53   {}   59   33   23   91   59   53   84   99   {}   93   63   47   41   74   98   33   67   35   75   1   23   13   55   27   75   98   35   73   63   2   21   27   13   24   86   23   84   31   20   94   61   65   75   23   36   94   55   90   41   77   96   56   29   40   12   89   63   11   5   73   79   1   16   28   31   73   5   39   53   63   41   11   40   2   13   33   9   29   90   47   72   9   73   30   44   33   74   93   29   74   42   34   63   41   34   96   47   77   1   36   74   72   14   36   26   77   9   72   64   8   91   31   52   30}
+
+do_execsql_test 1.17.13.2 {
+  SELECT lag(b,b) OVER (PARTITION BY b%10 ORDER BY a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   {}   81   {}   {}   {}   {}   1   {}   {}   {}   41   {}   {}   {}   {}   {}   {}   22   {}   {}   {}   12   {}   {}   62   {}   {}   {}   {}   {}   {}   {}   {}   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   43   {}   23   {}   {}   {}   {}   {}   {}   {}   {}   54   {}   {}   {}   {}   {}   {}   {}   {}   74   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   75   {}   {}   {}   {}   {}   {}   55   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   47   {}   {}   {}   {}   {}   27   7   {}   {}   {}   {}   {}   {}   {}   {}   {}   68   {}   8   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   89   {}   {}   {}   {}   {}   {}   {}   29   9   {}   {}   {}}
+
+do_execsql_test 1.17.13.3 {
+  SELECT lag(b,b) OVER ( ORDER BY b,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   0   1   1   1   2   2   2   2   2   2   2   2   3   3   3   4   4   5   6   6   6   7   7   7   7   7   8   8   8   8   8   8   9   9   9   9   9   9   9   9   9   9   10   11   11   11   11   11   12   12   12   12   12   12   13   13   13   14   14   15   15   15   15   15   16   16   16   16   17   19   19   20   20   21   21   22   22   22   22   23   23   23   23   23   23   24   25   25   25   26   26   26   26   26   26   26   27   27   27   27   27   27   27   27   27   27   27   28   29   29   29   29   29   30   30   30   30   31   31   31   31   31   32   32   32   32   33   33   33   33   33   33   33   33   33   33   33   33   33   33   34   34   34   34   34   35   35   35   35   36   36   36   36   36   36   36   36   37   37   37   37   37   38   38   38   39   39   39   39   39   39   39   40   41   41   41   41   41   42   43   43   44   43   44   44   44   44   46   46   46   47   47   47   47   47   47   47   49   50}
+
+do_execsql_test 1.17.13.4 {
+  SELECT lag(b,b) OVER ( PARTITION BY b%10 ORDER BY b,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   1   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   2   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
+do_execsql_test 1.17.13.5 {
+  SELECT lag(b,b) OVER ( ORDER BY b%10,a ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING ) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   30   {}   {}   {}   {}   {}   {}   {}   91   {}   {}   {}   61   20   81   {}   {}   {}   0   1   {}   {}   {}   41   91   {}   11   70   91   0   22   {}   81   61   12   {}   {}   62   {}   0   {}   31   81   {}   91   {}   81   23   61   41   90   90   {}   82   {}   {}   21   {}   72   43   32   23   42   {}   30   80   1   {}   60   93   54   {}   90   50   82   23   12   81   11   74   43   90   30   52   53   81   63   41   81   2   34   54   31   30   42   2   3   75   44   91   93   12   31   22   55   41   34   61   33   75   74   65   35   32   23   13   33   75   84   93   2   62   35   5   85   13   15   25   72   85   22   74   73   35   36   85   33   55   63   33   47   34   65   35   96   36   27   7   46   84   84   47   36   73   44   5   23   68   4   8   85   75   15   66   74   44   96   97   24   7   16   84   44   37   89   35   36   36   68   96   58   47   29   9   65   56   7}
+
+do_execsql_test 1.17.13.6 {
+  SELECT lag(b,b) OVER (PARTITION BY b%2,a ORDER BY b%10 ROWS BETWEEN 4 FOLLOWING    AND UNBOUNDED FOLLOWING) FROM t2
+} {0   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}   {}}
+
 finish_test
index 6db83fe972728ba089fba3f0d690abfe5bcd3715..49506d4dbe178b55d7fb90ff7098469ee2e3660f 100644 (file)
@@ -46,6 +46,26 @@ execsql_test 2.1 {
   SELECT a, nth_value(b, c) OVER (ORDER BY a) FROM t4
 }
 
+execsql_test 2.2.1 {
+  SELECT a, lead(b) OVER (ORDER BY a) FROM t4
+}
+execsql_test 2.2.2 {
+  SELECT a, lead(b, 2) OVER (ORDER BY a) FROM t4
+}
+execsql_test 2.2.3 {
+  SELECT a, lead(b, 3, 'abc') OVER (ORDER BY a) FROM t4
+}
+
+execsql_test 2.3.1 {
+  SELECT a, lag(b) OVER (ORDER BY a) FROM t4
+}
+execsql_test 2.3.2 {
+  SELECT a, lag(b, 2) OVER (ORDER BY a) FROM t4
+}
+execsql_test 2.3.3 {
+  SELECT a, lag(b, 3, 'abc') OVER (ORDER BY a) FROM t4
+}
+
 execsql_test 3.0 {
   DROP TABLE IF EXISTS t5;
   CREATE TABLE t5(a INTEGER PRIMARY KEY, b TEXT, c TEXT, d INTEGER);
index b9805aa8690bd08267db2fb41dc7ebf3f6814cbe..506723431f0934432e864e5d492dc35bac951b93 100644 (file)
@@ -121,6 +121,30 @@ do_execsql_test 2.1 {
   SELECT a, nth_value(b, c) OVER (ORDER BY a) FROM t4
 } {1 {}   2 {}   3 B   4 {}   5 E   6 A   7 A   8 B   9 {}   10 D}
 
+do_execsql_test 2.2.1 {
+  SELECT a, lead(b) OVER (ORDER BY a) FROM t4
+} {1 B   2 C   3 D   4 E   5 F   6 G   7 H   8 I   9 J   10 {}}
+
+do_execsql_test 2.2.2 {
+  SELECT a, lead(b, 2) OVER (ORDER BY a) FROM t4
+} {1 C   2 D   3 E   4 F   5 G   6 H   7 I   8 J   9 {}   10 {}}
+
+do_execsql_test 2.2.3 {
+  SELECT a, lead(b, 3, 'abc') OVER (ORDER BY a) FROM t4
+} {1 D   2 E   3 F   4 G   5 H   6 I   7 J   8 abc   9 abc   10 abc}
+
+do_execsql_test 2.3.1 {
+  SELECT a, lag(b) OVER (ORDER BY a) FROM t4
+} {1 {}   2 A   3 B   4 C   5 D   6 E   7 F   8 G   9 H   10 I}
+
+do_execsql_test 2.3.2 {
+  SELECT a, lag(b, 2) OVER (ORDER BY a) FROM t4
+} {1 {}   2 {}   3 A   4 B   5 C   6 D   7 E   8 F   9 G   10 H}
+
+do_execsql_test 2.3.3 {
+  SELECT a, lag(b, 3, 'abc') OVER (ORDER BY a) FROM t4
+} {1 abc   2 abc   3 abc   4 A   5 B   6 C   7 D   8 E   9 F   10 G}
+
 do_execsql_test 3.0 {
   DROP TABLE IF EXISTS t5;
   CREATE TABLE t5(a INTEGER PRIMARY KEY, b TEXT, c TEXT, d INTEGER);
@@ -135,9 +159,6 @@ do_execsql_test 3.1 {
   SELECT a, nth_value(c, d) OVER (ORDER BY b) FROM t5
 } {1 {}   3 five   5 one   2 two   4 three}
 
-explain_i {
-  SELECT a, nth_value(c, d) OVER (PARTITION BY b ORDER BY a) FROM t5
-  }
 do_execsql_test 3.2 {
   SELECT a, nth_value(c, d) OVER (PARTITION BY b ORDER BY a) FROM t5
 } {1 {}   3 {}   5 one   2 {}   4 four}