SQLite

Changes On Branch subquery-limit-opt
Login

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

Changes In Branch subquery-limit-opt Excluding Merge-Ins

This is equivalent to a diff from f3db02f4 to c21628e9

2017-06-20
17:43
Ensure that the query planner knows that any column of a flattened LEFT JOIN can be NULL even if that column is labeled with "NOT NULL". Fix for ticket [892fc34f173e99d8]. (check-in: 48346268 user: dan tags: trunk)
2017-06-19
11:44
Experimental "PRAGMA secure_delete=FAST" pragma. The intent is to overwrite deleted content with zeros without increasing the amount of disk I/O. (Closed-Leaf check-in: f1682f0f user: drh tags: fast-secure-delete)
2017-06-17
19:06
Avoid adding an artifical "LIMIT 1" on scalar subqueries that do not need it. This seems like a pointless optimization as it makes minimal run-time difference but does increase code complexity. Parked on a branch for historical reference. (Leaf check-in: c21628e9 user: drh tags: subquery-limit-opt)
18:49
Fix a missing comma in the previous check-in. (check-in: f3db02f4 user: drh tags: trunk)
17:55
Rework the code in ctime.c a bit to report on more compile time options. And to only output configuration options passed in to SQLite, not the default values of #define symbols set automatically. Also generate the large array in ctime.c using new script tool/mkctime.tcl, instead of entering it manually. (check-in: 9a443397 user: dan tags: trunk)

Changes to src/expr.c.

2713
2714
2715
2716
2717
2718
2719



2720
2721



2722
2723
2724
2725
2726
2727
2728
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722


2723
2724
2725
2726
2727
2728
2729
2730
2731
2732







+
+
+
-
-
+
+
+







        VdbeComment((v, "Init subquery result"));
      }else{
        dest.eDest = SRT_Exists;
        sqlite3VdbeAddOp2(v, OP_Integer, 0, dest.iSDParm);
        VdbeComment((v, "Init EXISTS result"));
      }
      sqlite3ExprDelete(pParse->db, pSel->pLimit);
      if( (pSel->selFlags & SF_Aggregate)!=0 && pSel->pGroupBy==0 ){
        pSel->pLimit = 0;
      }else{
      pSel->pLimit = sqlite3ExprAlloc(pParse->db, TK_INTEGER,
                                  &sqlite3IntTokens[1], 0);
        pSel->pLimit = sqlite3ExprAlloc(pParse->db, TK_INTEGER,
                                    &sqlite3IntTokens[1], 0);
      }
      pSel->iLimit = 0;
      pSel->selFlags &= ~SF_MultiValue;
      if( sqlite3Select(pParse, pSel, &dest) ){
        return 0;
      }
      rReg = dest.iSDParm;
      ExprSetVVAProperty(pExpr, EP_NoReduce);