Fix a problem with handling of statements containing two or more different
windows. FossilOrigin-Name: 567e09ef2a8cd84a2481117e52595bed0f3b588745a9e441aae0f87680f3a2e8
This commit is contained in:
parent
9a94722d48
commit
303451a8f7
18
manifest
18
manifest
@ -1,5 +1,5 @@
|
||||
C Fix\sproblem\swith\swindow\sfunctions\smin()\sand\smax()\swhen\sused\swith\sa\sPARTITION\nclause\sand\sa\sframe\sstarting\spoint\sother\sthan\s"UNBOUNDED\sPRECEDING".
|
||||
D 2018-06-14T19:06:36.904
|
||||
C Fix\sa\sproblem\swith\shandling\sof\sstatements\scontaining\stwo\sor\smore\sdifferent\nwindows.
|
||||
D 2018-06-14T20:52:08.656
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F Makefile.in 498b77b89a8cb42f2ee20fcd6317f279a45c0d6ff40d27825f94b69884c09bbe
|
||||
@ -583,7 +583,7 @@ F src/where.c 0bcbf9e191ca07f9ea2008aa80e70ded46bcdffd26560c83397da501f00aece6
|
||||
F src/whereInt.h b90ef9b9707ef750eab2a7a080c48fb4900315033274689def32d0cf5a81ebe4
|
||||
F src/wherecode.c 3317f2b083a66d3e65a03edf316ade4ccb0a99c9956273282ebb579b95d4ba96
|
||||
F src/whereexpr.c 19cf35cdd9bf6d5589d8a5c960d99259761136187a2319a6e14d11cf1abe14c2
|
||||
F src/window.c 3fc03f5ac20516d218933bc9eaf37863a511d9b9fffb3e37a9409e7a25efca99
|
||||
F src/window.c 8d9999b2dd3c0d9fe49523480b20100478875eedf652bfc7811046f4db54c761
|
||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||
F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
|
||||
F test/affinity3.test 6a101af2fc945ce2912f6fe54dd646018551710d
|
||||
@ -1150,7 +1150,7 @@ F test/pcache.test c8acbedd3b6fd0f9a7ca887a83b11d24a007972b
|
||||
F test/pcache2.test af7f3deb1a819f77a6d0d81534e97d1cf62cd442
|
||||
F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
|
||||
F test/permutations.test 5c2167e03dc55ff697e11bb3abf10c66ba452e4afb2dbd85a2b144048355300e
|
||||
F test/pg_common.tcl b50727fe1ee3369d0421eadea2c2fd247bfb9d89a8e06ececf2f6866de17abd8
|
||||
F test/pg_common.tcl 5cd48d499eacc5e2c446c2ed6e0774d2539f93f3d5fa184763cde02dd824d0c8
|
||||
F test/pragma.test 7c8cfc328a1717a95663cf8edb06c52ddfeaf97bb0aee69ae7457132e8d39e7d
|
||||
F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
|
||||
F test/pragma3.test 14c12bc5352b1e100e0b6b44f371053a81ccf8ed
|
||||
@ -1622,8 +1622,8 @@ F test/window2.tcl 0983de5eade5eeda49469244799d5331bfe3199fca3f6c6d2a836aa08f4fb
|
||||
F test/window2.test 79747b2edde4ad424e0752b27529aedc86e91f3d8d88846fa17ff0cb67f65086
|
||||
F test/window3.tcl 654d61d73e10db089b22514d498bb23ec310f720c0f4b5f69f67fda83d672048
|
||||
F test/window3.test 41727668ee31d2ba50f78efcb5bf1bda2c5cffd889aa65243511004669d1ac25
|
||||
F test/window4.tcl 3388b29669144bccd012bf5e237d165cf8eff2a310c26cc43a70279775f2fb01
|
||||
F test/window4.test f14ecc20c004a2a0d5fd8530266ea4255e3c0a55681bce1fea24af04ea82005f
|
||||
F test/window4.tcl 9a04d14649ba625608a7b0ddd1640b41619632ee5550bdb772d466b628ede95a
|
||||
F test/window4.test 2959afeb5dc86c85711a80ad920f7f65d7d158d7bbce37bf2460c862b8c74de6
|
||||
F test/with1.test 58475190cd8caaeebea8cfeb2a264ec97a0c492b8ffe9ad20cefbb23df462f96
|
||||
F test/with2.test e0030e2f0267a910d6c0e4f46f2dfe941c1cc0d4f659ba69b3597728e7e8f1ab
|
||||
F test/with3.test 5e8ce2c585170bbbc0544e2a01a4941fa0be173ba5265e5c92eb588cd99a232d
|
||||
@ -1740,7 +1740,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 5cf5f1808a51f9c2cfc98dd49b4f1ce860b53e935287f89868ce2fdbace8eb06
|
||||
R ef2b7f57cdc1146bf754373b3823f53c
|
||||
P 43eb1e75a4d7ac0973ed8589bbaf379c24cdc8eacc4e613610d2d4c24d385dc1
|
||||
R 8fa685be6b05cccf51d69be1e42b3c72
|
||||
U dan
|
||||
Z e015141b8a297bc169625a565b97966a
|
||||
Z 5df8e391006a1a484745351d3ef4fda5
|
||||
|
@ -1 +1 @@
|
||||
43eb1e75a4d7ac0973ed8589bbaf379c24cdc8eacc4e613610d2d4c24d385dc1
|
||||
567e09ef2a8cd84a2481117e52595bed0f3b588745a9e441aae0f87680f3a2e8
|
@ -1937,8 +1937,8 @@ Window *sqlite3WindowDup(sqlite3 *db, Expr *pOwner, Window *p){
|
||||
pNew->eType = p->eType;
|
||||
pNew->eEnd = p->eEnd;
|
||||
pNew->eStart = p->eStart;
|
||||
pNew->pStart = sqlite3ExprDup(db, pNew->pStart, 0);
|
||||
pNew->pEnd = sqlite3ExprDup(db, pNew->pEnd, 0);
|
||||
pNew->pStart = sqlite3ExprDup(db, p->pStart, 0);
|
||||
pNew->pEnd = sqlite3ExprDup(db, p->pEnd, 0);
|
||||
pNew->pOwner = pOwner;
|
||||
}
|
||||
}
|
||||
|
@ -74,7 +74,10 @@ proc execsql_float_test {tn sql} {
|
||||
set F "%.2f"
|
||||
set res [execsql $sql]
|
||||
set res2 [list]
|
||||
foreach r $res { lappend res2 [format $F $r] }
|
||||
foreach r $res {
|
||||
if {$r != ""} { set r [format $F $r] }
|
||||
lappend res2 $r
|
||||
}
|
||||
|
||||
puts $::fd "do_test $tn {"
|
||||
puts $::fd " set myres {}"
|
||||
|
@ -167,21 +167,29 @@ execsql_test 4.4 {
|
||||
set lPart [list "PARTITION BY b" "PARTITION BY b, a" "" "PARTITION BY a"]
|
||||
set lOrder [list "ORDER BY a" "ORDER BY a DESC" "" "ORDER BY b, a"]
|
||||
set lRange {
|
||||
"BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW"
|
||||
"BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING"
|
||||
"BETWEEN CURRENT ROW AND CURRENT ROW"
|
||||
"BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING"
|
||||
"RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW"
|
||||
"RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING"
|
||||
"RANGE BETWEEN CURRENT ROW AND CURRENT ROW"
|
||||
"RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING"
|
||||
}
|
||||
|
||||
set lRows {
|
||||
"ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING"
|
||||
"ROWS BETWEEN 3 PRECEDING AND 2 FOLLOWING"
|
||||
"ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING"
|
||||
"ROWS BETWEEN 0 PRECEDING AND 1 PRECEDING"
|
||||
"ROWS BETWEEN 1 FOLLOWING AND 500 FOLLOWING"
|
||||
}
|
||||
|
||||
set tn 1
|
||||
set SQL {
|
||||
SELECT max(c) OVER ($p1 $o1 RANGE $r1),
|
||||
min(c) OVER ($p2 $o2 RANGE $r2)
|
||||
SELECT max(c) OVER ($p1 $o1 $r1),
|
||||
min(c) OVER ($p2 $o2 $r2)
|
||||
FROM ttt ORDER BY a
|
||||
}
|
||||
set SQL2 {
|
||||
SELECT avg(c) OVER ($p1 $o1 RANGE $r1),
|
||||
avg(c) OVER ($p2 $o2 RANGE $r2)
|
||||
SELECT sum(c) OVER ($p1 $o1 $r1),
|
||||
sum(c) OVER ($p2 $o2 $r2)
|
||||
FROM ttt ORDER BY a
|
||||
}
|
||||
|
||||
@ -191,7 +199,7 @@ set r1 [lindex $lRange 0]
|
||||
set r2 [lindex $lRange 0]
|
||||
foreach p1 $lPart { foreach p2 $lPart {
|
||||
execsql_test 4.5.$tn.1 [subst $SQL]
|
||||
execsql_float_test 4.5.$tn.2 [subst $SQL2]
|
||||
execsql_test 4.5.$tn.2 [subst $SQL2]
|
||||
incr tn
|
||||
}}
|
||||
|
||||
@ -201,7 +209,12 @@ set p1 [lindex $lPart 0]
|
||||
set p2 [lindex $lPart 0]
|
||||
foreach r1 $lRange { foreach r2 $lRange {
|
||||
execsql_test 4.5.$tn.1 [subst $SQL]
|
||||
execsql_float_test 4.5.$tn.2 [subst $SQL2]
|
||||
execsql_test 4.5.$tn.2 [subst $SQL2]
|
||||
incr tn
|
||||
}}
|
||||
foreach r1 $lRows { foreach r2 $lRows {
|
||||
execsql_test 4.5.$tn.1 [subst $SQL]
|
||||
execsql_test 4.5.$tn.2 [subst $SQL2]
|
||||
incr tn
|
||||
}}
|
||||
|
||||
@ -211,7 +224,7 @@ set p1 [lindex $lPart 0]
|
||||
set p2 [lindex $lPart 0]
|
||||
foreach o1 $lOrder { foreach o2 $lOrder {
|
||||
execsql_test 4.5.$tn.1 [subst $SQL]
|
||||
execsql_float_test 4.5.$tn.2 [subst $SQL2]
|
||||
execsql_test 4.5.$tn.2 [subst $SQL2]
|
||||
incr tn
|
||||
}}
|
||||
|
||||
|
1014
test/window4.test
1014
test/window4.test
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user