SQLite

Check-in [6838bf3ac1]
Login

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

Overview
Comment:Ensure successive scans of pragma virtual tables return consistent rowids.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 6838bf3ac130c5862f5fbc718b3e49ece154fa840b6539af2616cffa31e73808
User & Date: dan 2024-05-07 17:58:07.671
Context
2024-05-07
19:45
Fix bug in test script sessionconflict.test. (check-in: e29decb8b1 user: dan tags: trunk)
17:58
Ensure successive scans of pragma virtual tables return consistent rowids. (check-in: 6838bf3ac1 user: dan tags: trunk)
13:20
Fix a compilation error in test/lemon-test01.y, reported in forum post f0ad095705. (check-in: 576b68c8b5 user: stephan tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/pragma.c.
2907
2908
2909
2910
2911
2912
2913

2914
2915
2916
2917
2918
2919
2920
}

/* Clear all content from pragma virtual table cursor. */
static void pragmaVtabCursorClear(PragmaVtabCursor *pCsr){
  int i;
  sqlite3_finalize(pCsr->pPragma);
  pCsr->pPragma = 0;

  for(i=0; i<ArraySize(pCsr->azArg); i++){
    sqlite3_free(pCsr->azArg[i]);
    pCsr->azArg[i] = 0;
  }
}

/* Close a pragma virtual table cursor */







>







2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
}

/* Clear all content from pragma virtual table cursor. */
static void pragmaVtabCursorClear(PragmaVtabCursor *pCsr){
  int i;
  sqlite3_finalize(pCsr->pPragma);
  pCsr->pPragma = 0;
  pCsr->iRowid = 0;
  for(i=0; i<ArraySize(pCsr->azArg); i++){
    sqlite3_free(pCsr->azArg[i]);
    pCsr->azArg[i] = 0;
  }
}

/* Close a pragma virtual table cursor */
Changes to test/pragma4.test.
278
279
280
281
282
283
284




























285
286
    SELECT t.name, f."table", f."from", i.name, i.pk
      FROM pragma_table_list() AS t
           JOIN pragma_foreign_key_list(t.name, t.schema) AS f
           JOIN pragma_table_info(f."table", t.schema) AS i
     WHERE i.pk;
  } {t2 t1 d a 1}
}





























finish_test







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>


278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
    SELECT t.name, f."table", f."from", i.name, i.pk
      FROM pragma_table_list() AS t
           JOIN pragma_foreign_key_list(t.name, t.schema) AS f
           JOIN pragma_table_info(f."table", t.schema) AS i
     WHERE i.pk;
  } {t2 t1 d a 1}
}

# 2024-05-08 https://sqlite.org/forum/forumpost/cf29a33e94
#
ifcapable vtab {
  do_execsql_test 7.0 {
    CREATE TABLE t3 ("a" TEXT, "b" TEXT);
    CREATE TABLE t4 ("a" TEXT, "b" TEXT, "c" TEXT); 
  }
  
  do_execsql_test 7.1 {
    CREATE TABLE pragma_t3 AS SELECT * FROM pragma_table_info('t3');
    CREATE TABLE pragma_t4 AS SELECT * FROM pragma_table_info('t4');
  }
  
  do_execsql_test 7.2 {
    SELECT pragma_t4.name, pragma_t3.name 
      FROM pragma_t4 RIGHT JOIN pragma_t3 ON (pragma_t4.name=pragma_t3.name);
  } {a a b b}
  
  do_execsql_test 7.3 {
    SELECT t4.name, t3.name 
    FROM pragma_table_info('t4') t4 
    RIGHT JOIN pragma_table_info('t3') t3 ON (t4.name=t3.name);
  } {a a b b}
}




finish_test