mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-10 01:02:56 +03:00
In the treeview.c module, break out the display of SrcList into a separate
subroutine, so that it can be invoked while debugging. FossilOrigin-Name: 8c74065f0031274d9bc711d5d53c39aefcfb2b2679811105974a2c7c7a9e1dcb
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\sa\sproblem\swith\sthe\shandling\sof\sSQLITE_FCNTL_PRAGMA\sin\sthe\stest_onefile.c\ndemo.
|
C In\sthe\streeview.c\smodule,\sbreak\sout\sthe\sdisplay\sof\sSrcList\sinto\sa\sseparate\nsubroutine,\sso\sthat\sit\scan\sbe\sinvoked\swhile\sdebugging.
|
||||||
D 2018-11-07T14:39:22.900
|
D 2018-11-08T22:53:06.181
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F Makefile.in edbb6e20bb1decf65f6c64c9e61004a69bdf8afb39cdce5337c916b03dfcd1e3
|
F Makefile.in edbb6e20bb1decf65f6c64c9e61004a69bdf8afb39cdce5337c916b03dfcd1e3
|
||||||
@@ -509,7 +509,7 @@ F src/shell.c.in 060ccc327959bdc85c895015eb382017fd0cd000ebd47b7e8dda42f8aab0b66
|
|||||||
F src/sqlite.h.in 1383b2fbce61bd3634caeafb2513205326a297e988ea749d4f6dec7da7a281c9
|
F src/sqlite.h.in 1383b2fbce61bd3634caeafb2513205326a297e988ea749d4f6dec7da7a281c9
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 960f1b86c3610fa23cb6a267572a97dcf286e77aa0dd3b9b23292ffaa1ea8683
|
F src/sqlite3ext.h 960f1b86c3610fa23cb6a267572a97dcf286e77aa0dd3b9b23292ffaa1ea8683
|
||||||
F src/sqliteInt.h 8aef40f6e756120d51de73537dbdcd624f2b2b028fc59baad85e38a83e35d838
|
F src/sqliteInt.h cad10b3a482bd5b11f586df9877ff5f637ce14534291a438430d1f1a2b882296
|
||||||
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
|
F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
|
||||||
F src/status.c 46e7aec11f79dad50965a5ca5fa9de009f7d6bde08be2156f1538a0a296d4d0e
|
F src/status.c 46e7aec11f79dad50965a5ca5fa9de009f7d6bde08be2156f1538a0a296d4d0e
|
||||||
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
|
F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
|
||||||
@@ -568,7 +568,7 @@ F src/test_window.c cdae419fdcea5bad6dcd9368c685abdad6deb59e9fc8b84b153de513d394
|
|||||||
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
|
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
|
||||||
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
|
F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
|
||||||
F src/tokenize.c 9e781e1ca80eefe7b5d6a9e2cd5c678c847da55fd6f093781fad7950934d4c83
|
F src/tokenize.c 9e781e1ca80eefe7b5d6a9e2cd5c678c847da55fd6f093781fad7950934d4c83
|
||||||
F src/treeview.c 0ef7dc77d6fe03172ba65dddfd3b3c557b7b7e217ca1963b7665beb266a0e2c0
|
F src/treeview.c 7b12ac059de54c939b6eb0dbffc9410c29c80d2470cee5cbe07d5ff9ea2d9253
|
||||||
F src/trigger.c d3d78568f37fb2e6cdcc2d1e7b60156f15b0b600adec55b83c5d42f6cad250bd
|
F src/trigger.c d3d78568f37fb2e6cdcc2d1e7b60156f15b0b600adec55b83c5d42f6cad250bd
|
||||||
F src/update.c 1816d56c1bca1ba4e0ef98cac2f49be62858e9df1dc08844c7067eb41cc44274
|
F src/update.c 1816d56c1bca1ba4e0ef98cac2f49be62858e9df1dc08844c7067eb41cc44274
|
||||||
F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
|
F src/upsert.c 0dd81b40206841814d46942a7337786932475f085716042d0cb2fc7791bf8ca4
|
||||||
@@ -1776,7 +1776,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P cbf85284beb60d068b446c52f000d694a810d4de9096ad2951523a4c88e7334c
|
P 13e21b7da8fe754e230b09ca0b9f1f69cd9aa20d4407ddd8b95ca3fb18c9abeb
|
||||||
R 088caf8858ff5594a1a4116e158cb2b6
|
R 915a30395d1ecdd8d23bc571af6386b9
|
||||||
U dan
|
U drh
|
||||||
Z 62eba71f05524b2e0125783d546c8de7
|
Z 043032fb93e658994b3c5096b42d8a7a
|
||||||
|
@@ -1 +1 @@
|
|||||||
13e21b7da8fe754e230b09ca0b9f1f69cd9aa20d4407ddd8b95ca3fb18c9abeb
|
8c74065f0031274d9bc711d5d53c39aefcfb2b2679811105974a2c7c7a9e1dcb
|
@@ -3783,6 +3783,7 @@ char *sqlite3VMPrintf(sqlite3*,const char*, va_list);
|
|||||||
void sqlite3TreeViewExpr(TreeView*, const Expr*, u8);
|
void sqlite3TreeViewExpr(TreeView*, const Expr*, u8);
|
||||||
void sqlite3TreeViewBareExprList(TreeView*, const ExprList*, const char*);
|
void sqlite3TreeViewBareExprList(TreeView*, const ExprList*, const char*);
|
||||||
void sqlite3TreeViewExprList(TreeView*, const ExprList*, u8, const char*);
|
void sqlite3TreeViewExprList(TreeView*, const ExprList*, u8, const char*);
|
||||||
|
void sqlite3TreeViewSrcList(TreeView*, const SrcList*);
|
||||||
void sqlite3TreeViewSelect(TreeView*, const Select*, u8);
|
void sqlite3TreeViewSelect(TreeView*, const Select*, u8);
|
||||||
void sqlite3TreeViewWith(TreeView*, const With*, u8);
|
void sqlite3TreeViewWith(TreeView*, const With*, u8);
|
||||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||||
|
@@ -121,6 +121,42 @@ void sqlite3TreeViewWith(TreeView *pView, const With *pWith, u8 moreToFollow){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Generate a human-readable description of a SrcList object.
|
||||||
|
*/
|
||||||
|
void sqlite3TreeViewSrcList(TreeView *pView, const SrcList *pSrc){
|
||||||
|
int i;
|
||||||
|
for(i=0; i<pSrc->nSrc; i++){
|
||||||
|
const struct SrcList_item *pItem = &pSrc->a[i];
|
||||||
|
StrAccum x;
|
||||||
|
char zLine[100];
|
||||||
|
sqlite3StrAccumInit(&x, 0, zLine, sizeof(zLine), 0);
|
||||||
|
sqlite3_str_appendf(&x, "{%d,*}", pItem->iCursor);
|
||||||
|
if( pItem->zDatabase ){
|
||||||
|
sqlite3_str_appendf(&x, " %s.%s", pItem->zDatabase, pItem->zName);
|
||||||
|
}else if( pItem->zName ){
|
||||||
|
sqlite3_str_appendf(&x, " %s", pItem->zName);
|
||||||
|
}
|
||||||
|
if( pItem->pTab ){
|
||||||
|
sqlite3_str_appendf(&x, " tabname=%Q", pItem->pTab->zName);
|
||||||
|
}
|
||||||
|
if( pItem->zAlias ){
|
||||||
|
sqlite3_str_appendf(&x, " (AS %s)", pItem->zAlias);
|
||||||
|
}
|
||||||
|
if( pItem->fg.jointype & JT_LEFT ){
|
||||||
|
sqlite3_str_appendf(&x, " LEFT-JOIN");
|
||||||
|
}
|
||||||
|
sqlite3StrAccumFinish(&x);
|
||||||
|
sqlite3TreeViewItem(pView, zLine, i<pSrc->nSrc-1);
|
||||||
|
if( pItem->pSelect ){
|
||||||
|
sqlite3TreeViewSelect(pView, pItem->pSelect, 0);
|
||||||
|
}
|
||||||
|
if( pItem->fg.isTabFunc ){
|
||||||
|
sqlite3TreeViewExprList(pView, pItem->u1.pFuncArg, 0, "func-args:");
|
||||||
|
}
|
||||||
|
sqlite3TreeViewPop(pView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Generate a human-readable description of a Select object.
|
** Generate a human-readable description of a Select object.
|
||||||
@@ -175,39 +211,9 @@ void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 moreToFollow){
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if( p->pSrc && p->pSrc->nSrc ){
|
if( p->pSrc && p->pSrc->nSrc ){
|
||||||
int i;
|
|
||||||
pView = sqlite3TreeViewPush(pView, (n--)>0);
|
pView = sqlite3TreeViewPush(pView, (n--)>0);
|
||||||
sqlite3TreeViewLine(pView, "FROM");
|
sqlite3TreeViewLine(pView, "FROM");
|
||||||
for(i=0; i<p->pSrc->nSrc; i++){
|
sqlite3TreeViewSrcList(pView, p->pSrc);
|
||||||
struct SrcList_item *pItem = &p->pSrc->a[i];
|
|
||||||
StrAccum x;
|
|
||||||
char zLine[100];
|
|
||||||
sqlite3StrAccumInit(&x, 0, zLine, sizeof(zLine), 0);
|
|
||||||
sqlite3_str_appendf(&x, "{%d,*}", pItem->iCursor);
|
|
||||||
if( pItem->zDatabase ){
|
|
||||||
sqlite3_str_appendf(&x, " %s.%s", pItem->zDatabase, pItem->zName);
|
|
||||||
}else if( pItem->zName ){
|
|
||||||
sqlite3_str_appendf(&x, " %s", pItem->zName);
|
|
||||||
}
|
|
||||||
if( pItem->pTab ){
|
|
||||||
sqlite3_str_appendf(&x, " tabname=%Q", pItem->pTab->zName);
|
|
||||||
}
|
|
||||||
if( pItem->zAlias ){
|
|
||||||
sqlite3_str_appendf(&x, " (AS %s)", pItem->zAlias);
|
|
||||||
}
|
|
||||||
if( pItem->fg.jointype & JT_LEFT ){
|
|
||||||
sqlite3_str_appendf(&x, " LEFT-JOIN");
|
|
||||||
}
|
|
||||||
sqlite3StrAccumFinish(&x);
|
|
||||||
sqlite3TreeViewItem(pView, zLine, i<p->pSrc->nSrc-1);
|
|
||||||
if( pItem->pSelect ){
|
|
||||||
sqlite3TreeViewSelect(pView, pItem->pSelect, 0);
|
|
||||||
}
|
|
||||||
if( pItem->fg.isTabFunc ){
|
|
||||||
sqlite3TreeViewExprList(pView, pItem->u1.pFuncArg, 0, "func-args:");
|
|
||||||
}
|
|
||||||
sqlite3TreeViewPop(pView);
|
|
||||||
}
|
|
||||||
sqlite3TreeViewPop(pView);
|
sqlite3TreeViewPop(pView);
|
||||||
}
|
}
|
||||||
if( p->pWhere ){
|
if( p->pWhere ){
|
||||||
|
Reference in New Issue
Block a user