Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Clean shutdown in the "fossil sql" command. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
fbb15cc4a8610588303c2679c77d753b |
User & Date: | drh 2020-05-22 16:19:19.039 |
Context
2020-05-22
| ||
17:54 | Update the built-in SQLite to version 3.32.0. ... (check-in: f82e054f user: drh tags: trunk) | |
16:19 | Clean shutdown in the "fossil sql" command. ... (check-in: fbb15cc4 user: drh tags: trunk) | |
12:26 | For Download links, only include the tail-name of the file in the Content-Disposition header. ... (check-in: 0feb4128 user: drh tags: trunk) | |
Changes
Changes to src/db.c.
︙ | ︙ | |||
2379 2380 2381 2382 2383 2384 2385 | if( g.fSqlPrint ){ for(i=0; i<argc; i++){ char c = i==argc-1 ? '\n' : ' '; fossil_print("%s%c", sqlite3_value_text(argv[i]), c); } } } | > > > > | > > > > > > > > | 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 | if( g.fSqlPrint ){ for(i=0; i<argc; i++){ char c = i==argc-1 ? '\n' : ' '; fossil_print("%s%c", sqlite3_value_text(argv[i]), c); } } } /* ** Callback for sqlite3_trace_v2(); */ int db_sql_trace(unsigned m, void *notUsed, void *pP, void *pX){ sqlite3_stmt *pStmt = (sqlite3_stmt*)pP; char *zSql; int n; const char *zArg = (const char*)pX; char zEnd[40]; if( m & SQLITE_TRACE_CLOSE ){ /* If we are tracking closes, that means we want to clean up static ** prepared statements. */ while( db.pAllStmt ){ db_finalize(db.pAllStmt); } return 0; } if( zArg[0]=='-' ) return 0; if( m & SQLITE_TRACE_PROFILE ){ sqlite3_int64 nNano = *(sqlite3_int64*)pX; double rMillisec = 0.000001 * nNano; sqlite3_snprintf(sizeof(zEnd),zEnd," /* %.3fms */\n", rMillisec); }else{ zEnd[0] = '\n'; |
︙ | ︙ |
Changes to src/sqlcmd.c.
︙ | ︙ | |||
162 163 164 165 166 167 168 169 170 171 172 173 174 175 | ** database connection to be more useful to the human operator. */ static int sqlcmd_autoinit( sqlite3 *db, const char **pzErrMsg, const void *notUsed ){ add_content_sql_commands(db); db_add_aux_functions(db); re_add_sql_func(db); search_sql_setup(db); foci_register(db); deltafunc_init(db); g.repositoryOpen = 1; | > | 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | ** database connection to be more useful to the human operator. */ static int sqlcmd_autoinit( sqlite3 *db, const char **pzErrMsg, const void *notUsed ){ int mTrace = SQLITE_TRACE_CLOSE; add_content_sql_commands(db); db_add_aux_functions(db); re_add_sql_func(db); search_sql_setup(db); foci_register(db); deltafunc_init(db); g.repositoryOpen = 1; |
︙ | ︙ | |||
184 185 186 187 188 189 190 191 192 193 194 195 196 197 | } if( g.zConfigDbName ){ char *zSql = sqlite3_mprintf("ATTACH %Q AS 'configdb' KEY ''", g.zConfigDbName); sqlite3_exec(db, zSql, 0, 0, 0); sqlite3_free(zSql); } return SQLITE_OK; } /* ** atexit() handler that cleans up global state modified by this module. */ static void sqlcmd_atexit(void) { | > > > > | 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | } if( g.zConfigDbName ){ char *zSql = sqlite3_mprintf("ATTACH %Q AS 'configdb' KEY ''", g.zConfigDbName); sqlite3_exec(db, zSql, 0, 0, 0); sqlite3_free(zSql); } /* Arrange to trace close operations so that static prepared statements ** will get cleaned up when the shell closes the database connection */ if( g.fSqlTrace ) mTrace |= SQLITE_TRACE_PROFILE; sqlite3_trace_v2(db, mTrace, db_sql_trace, 0); return SQLITE_OK; } /* ** atexit() handler that cleans up global state modified by this module. */ static void sqlcmd_atexit(void) { |
︙ | ︙ |