-C Fix\sa\sbuffer\soverread\sthat\scould\soccur\sin\sfts3\swith\scorrupt\s%_stat\srecords.
-D 2019-12-04T03:46:50.817
+C Fix\san\sassert()\sfailure\sthat\scould\soccur\sin\sALTER\sTABLE\scode\swhen\sthe\sschema\scontains\sa\sview\sthat\suses\sa\sCTE.
+D 2019-12-04T14:26:38.017
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c 01730734ad46d7a72bdbe736e755ef23337c46f493d5ae117fb4875169113024
+F src/alter.c 3101da361810ab2904b39e3c824ffd0770c77262d72bf97a7baba7e8b89cc3fe
F src/analyze.c b3ceec3fc052df8a96ca8a8c858d455dc5029ba681b4be98bb5c5a9162cfa58c
F src/attach.c b30c44333d55a68c0a12920b5b9d40b254cbd3d4509bda77417209eeed8b3d80
F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06
F test/altermalloc2.test fa7b1c1139ea39b8dec407cf1feb032ca8e0076bd429574969b619175ad0174b
F test/altertab.test 4d8b79b0b88b62b90b710390df14fe99e0a3578345526886eaa550e28e3065dc
F test/altertab2.test 8883693952f6d7fb5f754dbf1d694ed780aa883027bef04cb1fb99a3b88c9272
-F test/altertab3.test f40013d333e273da57e329fac6c2268a58aa09d17c3575936b343eeb2fa09180
+F test/altertab3.test 1456b08bd57b5cf978d5c275e08857e00d142cb7d2ba156c1fd360787d5fe06e
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7
F test/analyze3.test 01f0b122e3e54ad2544f14f7cc7dcb4c2cb8753cad5e88c6b8d49615b3fd6a2b
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 96b6a76da09a94182414ec1a56da91728c37329d2b55f889e433054ca21605ce
-R 021dc4e288313b735f102a5cfdb82a99
+P e01fdbf9f700e1bd9dd5283c65547d10d26ce4f4506d3cfef9e1087aecdc2305
+R 28fab4726d1d7a83fe0fc43935cfad37
U dan
-Z 294099ece301ad8081d293396da7a9e9
+Z 9893a89ad8b51bef2a7f272ffbfd52e9
-e01fdbf9f700e1bd9dd5283c65547d10d26ce4f4506d3cfef9e1087aecdc2305
\ No newline at end of file
+75b04a4b0d2e65bfcd02cf4e0b6d8f1954957c590814a9b8f9a9ee2adc2ec022
\ No newline at end of file
return WRC_Continue;
}
+/*
+** Iterate through the Select objects that are part of WITH clauses attached
+** to select statement pSelect.
+*/
+static void renameWalkWith(Walker *pWalker, Select *pSelect){
+ if( pSelect->pWith ){
+ int i;
+ for(i=0; i<pSelect->pWith->nCte; i++){
+ Select *p = pSelect->pWith->a[i].pSelect;
+ NameContext sNC;
+ memset(&sNC, 0, sizeof(sNC));
+ sNC.pParse = pWalker->pParse;
+ sqlite3SelectPrep(sNC.pParse, p, &sNC);
+ sqlite3WalkSelect(pWalker, p);
+ }
+ }
+}
+
/*
** Walker callback used by sqlite3RenameExprUnmap().
*/
sqlite3RenameTokenRemap(pParse, 0, (void*)pSrc->a[i].zName);
}
}
+
+ renameWalkWith(pWalker, p);
return WRC_Continue;
}
}
}
-/*
-** Iterate through the Select objects that are part of WITH clauses attached
-** to select statement pSelect.
-*/
-static void renameWalkWith(Walker *pWalker, Select *pSelect){
- if( pSelect->pWith ){
- int i;
- for(i=0; i<pSelect->pWith->nCte; i++){
- Select *p = pSelect->pWith->a[i].pSelect;
- NameContext sNC;
- memset(&sNC, 0, sizeof(sNC));
- sNC.pParse = pWalker->pParse;
- sqlite3SelectPrep(sNC.pParse, p, &sNC);
- sqlite3WalkSelect(pWalker, p);
- }
- }
-}
-
/*
** This is a Walker select callback. It does nothing. It is only required
** because without a dummy callback, sqlite3WalkExpr() and similar do not
ALTER TABLE t1 RENAME TO t1x;
} {1 {error in trigger r1: 1st ORDER BY term does not match any column in the result set}}
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 19.0 {
+ CREATE TABLE a(a,h CONSTRAINT a UNIQUE ON CONFLICT FAIL,CONSTRAINT a);
+}
+
+foreach {tn v res} {
+ 1 {
+ CREATE VIEW q AS SELECT 123
+
+ WINDOW x AS (
+ RANGE BETWEEN UNBOUNDED PRECEDING AND INDEXED() OVER(
+ PARTITION BY ( WITH x AS(VALUES(col1)) VALUES(453) )
+ )
+ FOLLOWING
+ )
+ } {1 {error in view q: no such column: col1}}
+
+ 2 {
+ CREATE VIEW q AS SELECT
+ CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(CAST(RIGHT
+ AS)AS)AS)AS)AS)AS)AS)AS)AS)AS)AS)WINDOW x AS(RANGE BETWEEN UNBOUNDED
+ PRECEDING AND INDEXED(*)OVER(PARTITION BY
+ CROSS,CROSS,NATURAL,sqlite_master(*)OVER a,(WITH a AS(VALUES(LEFT)UNION
+ VALUES(LEFT)UNION VALUES(LEFT)UNION VALUES(LEFT)UNION VALUES(LEFT)UNION
+ VALUES(LEFT)UNION VALUES(LEFT))VALUES(LEFT))IN
+ STORED,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT)*LEFT FOLLOWING)ORDER BY
+ LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT LIMIT
+ LEFT,INDEXED(*)OVER(PARTITION BY
+ CROSS,CROSS,CROSS,LEFT,INDEXED(*)OVER(PARTITION BY
+ CROSS,CROSS,CROSS),INDEXED(*)OVER(PARTITION BY
+ LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT,LEFT),
+ LEFT,LEFT,INNER,CROSS,CROSS,CROSS,INNER,NATURAL ORDER BY
+ OUTER,NATURAL,NATURAL,NATURAL,NATURAL,NATURAL,NATURAL,NATURAL,INNER,
+ INNER,INNER NULLS LAST GROUPS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED
+ FOLLOWING);
+ } {1 {error in view q: no such column: LEFT}}
+
+ 3 {
+ CREATE VIEW q AS SELECT 99 WINDOW x AS (RANGE BETWEEN UNBOUNDED PRECEDING
+ AND count(*)OVER(PARTITION BY (WITH a AS(VALUES(2),(x3))VALUES(0)))
+ FOLLOWING)ORDER BY x2,sum(1)OVER(PARTITION BY avg(5)OVER(PARTITION BY x1));
+ } {1 {error in view q: no such column: x3}}
+} {
+ do_execsql_test 19.$tn.1 "
+ DROP VIEW IF EXISTS q;
+ $v
+ " {}
+
+ do_catchsql_test 19.$tn.2 {
+ ALTER TABLE a RENAME TO g;
+ } $res
+}
+
finish_test