mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Detect and report circularly defined views even if the views have the
columns defined in the CREATE VIEW statement. FossilOrigin-Name: 9ab9c8c6d747647f8ade58c2c4812fc69a813368
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Remove\san\sunreachable\sbranch\sin\sthe\squery\sflattener\ssubstitution\slogic.
|
C Detect\sand\sreport\scircularly\sdefined\sviews\seven\sif\sthe\sviews\shave\sthe\ncolumns\sdefined\sin\sthe\sCREATE\sVIEW\sstatement.
|
||||||
D 2015-10-11T20:08:31.981
|
D 2015-10-11T20:39:46.984
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in f0088ff0d2ac949fce6de7c00f13a99ac5bdb663
|
F Makefile.in f0088ff0d2ac949fce6de7c00f13a99ac5bdb663
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@@ -343,7 +343,7 @@ F src/printf.c 0c4bcdd1c2e2521024f0a69cb5eb334f86b3652a
|
|||||||
F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
|
F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
|
||||||
F src/resolve.c 1954a0f01bf65d78d7d559aea3d5c67f33376d91
|
F src/resolve.c 1954a0f01bf65d78d7d559aea3d5c67f33376d91
|
||||||
F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
|
F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
|
||||||
F src/select.c f70b36caa607655a8417198389f1802a56b1c8b6
|
F src/select.c 0bc9cd2e1cacfdc9cdc9a83884cc100f166e80a4
|
||||||
F src/shell.c d25df04168d6ba5a4fa05bdbf859df667f9eb621
|
F src/shell.c d25df04168d6ba5a4fa05bdbf859df667f9eb621
|
||||||
F src/sqlite.h.in 4b76d74d69af48c534c58fb723137dc6944bdedc
|
F src/sqlite.h.in 4b76d74d69af48c534c58fb723137dc6944bdedc
|
||||||
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
|
F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
|
||||||
@@ -1253,7 +1253,7 @@ F test/vacuum3.test 77ecdd54592b45a0bcb133339f99f1ae0ae94d0d
|
|||||||
F test/vacuum4.test d3f8ecff345f166911568f397d2432c16d2867d9
|
F test/vacuum4.test d3f8ecff345f166911568f397d2432c16d2867d9
|
||||||
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
|
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
|
||||||
F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
|
F test/veryquick.test 57ab846bacf7b90cf4e9a672721ea5c5b669b661
|
||||||
F test/view.test 0d8935e64867ae01492347884f5cbb47f056f4c8
|
F test/view.test f6c3a39e0c819891265e1d0754e99960d81ef6c9
|
||||||
F test/vtab1.test 6210e076997f176bedc300a87ad6404651b601dd
|
F test/vtab1.test 6210e076997f176bedc300a87ad6404651b601dd
|
||||||
F test/vtab2.test f8cd1bb9aba7143eba97812d9617880a36d247ad
|
F test/vtab2.test f8cd1bb9aba7143eba97812d9617880a36d247ad
|
||||||
F test/vtab3.test b45f47d20f225ccc9c28dc915d92740c2dee311e
|
F test/vtab3.test b45f47d20f225ccc9c28dc915d92740c2dee311e
|
||||||
@@ -1390,7 +1390,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
|
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 3d0bd95e977db50c314d33ec292f99e0539d7b4a
|
P 46ee3453a31b5e793d5aaad471cec1b1a11ab2cf
|
||||||
R 0631d5a91a7b127155b4e818909096dd
|
R f02e8925b44dc59b1569a7e5ccbd6813
|
||||||
U drh
|
U drh
|
||||||
Z ec249e682dee8ecef8754c1790b6f485
|
Z 2390f857ae51a8bc2278cbec6c80566a
|
||||||
|
@@ -1 +1 @@
|
|||||||
46ee3453a31b5e793d5aaad471cec1b1a11ab2cf
|
9ab9c8c6d747647f8ade58c2c4812fc69a813368
|
@@ -4248,6 +4248,7 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|||||||
pTab->nRef++;
|
pTab->nRef++;
|
||||||
#if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
|
#if !defined(SQLITE_OMIT_VIEW) || !defined (SQLITE_OMIT_VIRTUALTABLE)
|
||||||
if( pTab->pSelect || IsVirtual(pTab) ){
|
if( pTab->pSelect || IsVirtual(pTab) ){
|
||||||
|
i16 nCol;
|
||||||
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
|
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
|
||||||
assert( pFrom->pSelect==0 );
|
assert( pFrom->pSelect==0 );
|
||||||
if( pFrom->fg.isTabFunc && !IsVirtual(pTab) ){
|
if( pFrom->fg.isTabFunc && !IsVirtual(pTab) ){
|
||||||
@@ -4256,7 +4257,10 @@ static int selectExpander(Walker *pWalker, Select *p){
|
|||||||
}
|
}
|
||||||
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
|
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
|
||||||
sqlite3SelectSetName(pFrom->pSelect, pTab->zName);
|
sqlite3SelectSetName(pFrom->pSelect, pTab->zName);
|
||||||
|
nCol = pTab->nCol;
|
||||||
|
pTab->nCol = -1;
|
||||||
sqlite3WalkSelect(pWalker, pFrom->pSelect);
|
sqlite3WalkSelect(pWalker, pFrom->pSelect);
|
||||||
|
pTab->nCol = nCol;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@@ -499,6 +499,13 @@ do_test view-14.1 {
|
|||||||
SELECT * FROM temp.t1;
|
SELECT * FROM temp.t1;
|
||||||
}
|
}
|
||||||
} {1 {view t1 is circularly defined}}
|
} {1 {view t1 is circularly defined}}
|
||||||
|
do_test view-14.2 {
|
||||||
|
catchsql {
|
||||||
|
DROP VIEW IF EXISTS temp.t1;
|
||||||
|
CREATE TEMP VIEW t1(a,b) AS SELECT a,b FROM t1;
|
||||||
|
SELECT * FROM temp.t1;
|
||||||
|
}
|
||||||
|
} {1 {view t1 is circularly defined}}
|
||||||
|
|
||||||
# Tickets #1688, #1709
|
# Tickets #1688, #1709
|
||||||
#
|
#
|
||||||
|
Reference in New Issue
Block a user