/ Check-in [2a1cc632]
Login
SQLite training in Houston TX on 2019-11-05 (details)
Part of the 2019 Tcl Conference

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

Overview
Comment:Give symbolic names to the special prepared statements used to implement incremental blob I/O.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | named-blob-I/O
Files: files | file ages | folders
SHA3-256: 2a1cc6327a3d8f2f65a296f5bed7fb43665b812c4c45871798db917a99481c14
User & Date: drh 2019-01-06 01:46:00
Context
2019-01-06
01:46
Give symbolic names to the special prepared statements used to implement incremental blob I/O. Leaf check-in: 2a1cc632 user: drh tags: named-blob-I/O
2019-01-05
21:56
Add the exprNodeCopy() routine that will safely memcpy() an Expr node that might be a size-reduced node. check-in: a874c649 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/vdbeblob.c.

268
269
270
271
272
273
274










275
276
277
278
279
280
281
        {OP_Column,         0, 0, 1},  /* 3  */
        {OP_ResultRow,      1, 0, 0},  /* 4  */
        {OP_Halt,           0, 0, 0},  /* 5  */
      };
      Vdbe *v = (Vdbe *)pBlob->pStmt;
      int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
      VdbeOp *aOp;











      sqlite3VdbeAddOp4Int(v, OP_Transaction, iDb, wrFlag, 
                           pTab->pSchema->schema_cookie,
                           pTab->pSchema->iGeneration);
      sqlite3VdbeChangeP5(v, 1);
      assert( sqlite3VdbeCurrentAddr(v)==2 || db->mallocFailed );
      aOp = sqlite3VdbeAddOpList(v, ArraySize(openBlob), openBlob, iLn);







>
>
>
>
>
>
>
>
>
>







268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
        {OP_Column,         0, 0, 1},  /* 3  */
        {OP_ResultRow,      1, 0, 0},  /* 4  */
        {OP_Halt,           0, 0, 0},  /* 5  */
      };
      Vdbe *v = (Vdbe *)pBlob->pStmt;
      int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
      VdbeOp *aOp;

#ifdef SQLITE_DEBUG
      char *zName;
      zName = sqlite3MPrintf(db, "-- sqlite3_blob_open(%s,%s,%s)",
                              zDb, zTable, zColumn);
      if( zName ){
        sqlite3VdbeSetSql(v, zName, (int)strlen(zName), 0);
        sqlite3DbFree(db, zName);
      }
#endif

      sqlite3VdbeAddOp4Int(v, OP_Transaction, iDb, wrFlag, 
                           pTab->pSchema->schema_cookie,
                           pTab->pSchema->iGeneration);
      sqlite3VdbeChangeP5(v, 1);
      assert( sqlite3VdbeCurrentAddr(v)==2 || db->mallocFailed );
      aOp = sqlite3VdbeAddOpList(v, ArraySize(openBlob), openBlob, iLn);