/ Check-in [bbfb2908]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Refinement to check-in [348e7f193a963390] that avoids unreachable branches.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: bbfb2908ecd113c88e69a0984cbe2550463cdd3a67648b0e4e3578e80630136e
User & Date: drh 2019-07-19 15:00:32
Context
2019-07-19
15:03
New test cases added to test/fuzzdata8.db. check-in: 39be3c61 user: drh tags: trunk
15:00
Refinement to check-in [348e7f193a963390] that avoids unreachable branches. check-in: bbfb2908 user: drh tags: trunk
14:32
Fix a problem with renaming a table when the schema contains an invocation of a window function that is not currently registered. check-in: ff290feb user: dan tags: trunk
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to src/walker.c.

21
22
23
24
25
26
27

28

29

30






31

32

33
34
35
36
37
38
39
/*
** Walk all expressions linked into the list of Window objects passed
** as the second argument.
*/
static int walkWindowList(Walker *pWalker, Window *pList){
  Window *pWin;
  for(pWin=pList; pWin; pWin=pWin->pNextWin){

    if( sqlite3WalkExprList(pWalker, pWin->pOrderBy) ) return WRC_Abort;

    if( sqlite3WalkExprList(pWalker, pWin->pPartition) ) return WRC_Abort;

    if( sqlite3WalkExpr(pWalker, pWin->pFilter) ) return WRC_Abort;






    if( sqlite3WalkExpr(pWalker, pWin->pStart) ) return WRC_Abort;

    if( sqlite3WalkExpr(pWalker, pWin->pEnd) ) return WRC_Abort;

  }
  return WRC_Continue;
}
#endif

/*
** Walk an expression tree.  Invoke the callback once for each node







>
|
>
|
>
|
>
>
>
>
>
>
|
>
|
>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
** Walk all expressions linked into the list of Window objects passed
** as the second argument.
*/
static int walkWindowList(Walker *pWalker, Window *pList){
  Window *pWin;
  for(pWin=pList; pWin; pWin=pWin->pNextWin){
    int rc;
    rc = sqlite3WalkExprList(pWalker, pWin->pOrderBy);
    if( rc ) return WRC_Abort;
    rc = sqlite3WalkExprList(pWalker, pWin->pPartition);
    if( rc ) return WRC_Abort;
    rc = sqlite3WalkExpr(pWalker, pWin->pFilter);
    if( rc ) return WRC_Abort;

    /* The next two are purely for calls to sqlite3RenameExprUnmap()
    ** within sqlite3WindowOffsetExpr().  Because of constraints imposed
    ** by sqlite3WindowOffsetExpr(), they can never fail.  The results do
    ** not matter anyhow. */
    rc = sqlite3WalkExpr(pWalker, pWin->pStart);
    if( NEVER(rc) ) return WRC_Abort;
    rc = sqlite3WalkExpr(pWalker, pWin->pEnd);
    if( NEVER(rc) ) return WRC_Abort;
  }
  return WRC_Continue;
}
#endif

/*
** Walk an expression tree.  Invoke the callback once for each node