Fossil SCM
Print a warning if there are unfinalized SQL statements when fossil shuts down. Take care to finalize all statements in the "commit" command.
Commit
94d8e9cd4b454a2982241ffb6f44be9833c4f0e8
Parent
6fd2ff1b09a8468…
2 files changed
+1
-1
+5
+1
-1
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -813,11 +813,11 @@ | ||
| 813 | 813 | blob_appendf(&manifest, " %s", zUuid); |
| 814 | 814 | checkin_verify_younger(mid, zUuid, zDate); |
| 815 | 815 | free(zUuid); |
| 816 | 816 | } |
| 817 | 817 | } |
| 818 | - db_reset(&q2); | |
| 818 | + db_finalize(&q2); | |
| 819 | 819 | |
| 820 | 820 | blob_appendf(&manifest, "\n"); |
| 821 | 821 | blob_appendf(&manifest, "R %b\n", &cksum1); |
| 822 | 822 | if( zBranch && zBranch[0] ){ |
| 823 | 823 | Stmt q; |
| 824 | 824 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -813,11 +813,11 @@ | |
| 813 | blob_appendf(&manifest, " %s", zUuid); |
| 814 | checkin_verify_younger(mid, zUuid, zDate); |
| 815 | free(zUuid); |
| 816 | } |
| 817 | } |
| 818 | db_reset(&q2); |
| 819 | |
| 820 | blob_appendf(&manifest, "\n"); |
| 821 | blob_appendf(&manifest, "R %b\n", &cksum1); |
| 822 | if( zBranch && zBranch[0] ){ |
| 823 | Stmt q; |
| 824 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -813,11 +813,11 @@ | |
| 813 | blob_appendf(&manifest, " %s", zUuid); |
| 814 | checkin_verify_younger(mid, zUuid, zDate); |
| 815 | free(zUuid); |
| 816 | } |
| 817 | } |
| 818 | db_finalize(&q2); |
| 819 | |
| 820 | blob_appendf(&manifest, "\n"); |
| 821 | blob_appendf(&manifest, "R %b\n", &cksum1); |
| 822 | if( zBranch && zBranch[0] ){ |
| 823 | Stmt q; |
| 824 |
M
src/db.c
+5
| --- src/db.c | ||
| +++ src/db.c | ||
| @@ -894,15 +894,20 @@ | ||
| 894 | 894 | |
| 895 | 895 | /* |
| 896 | 896 | ** Close the database connection. |
| 897 | 897 | */ |
| 898 | 898 | void db_close(void){ |
| 899 | + sqlite3_stmt *pStmt; | |
| 899 | 900 | if( g.db==0 ) return; |
| 900 | 901 | while( pAllStmt ){ |
| 901 | 902 | db_finalize(pAllStmt); |
| 902 | 903 | } |
| 903 | 904 | db_end_transaction(1); |
| 905 | + pStmt = 0; | |
| 906 | + while( (pStmt = sqlite3_next_stmt(g.db, pStmt))!=0 ){ | |
| 907 | + fossil_warning("unfinalized SQL statement: [%s]", sqlite3_sql(pStmt)); | |
| 908 | + } | |
| 904 | 909 | g.repositoryOpen = 0; |
| 905 | 910 | g.localOpen = 0; |
| 906 | 911 | g.configOpen = 0; |
| 907 | 912 | sqlite3_wal_checkpoint(g.db, 0); |
| 908 | 913 | sqlite3_close(g.db); |
| 909 | 914 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -894,15 +894,20 @@ | |
| 894 | |
| 895 | /* |
| 896 | ** Close the database connection. |
| 897 | */ |
| 898 | void db_close(void){ |
| 899 | if( g.db==0 ) return; |
| 900 | while( pAllStmt ){ |
| 901 | db_finalize(pAllStmt); |
| 902 | } |
| 903 | db_end_transaction(1); |
| 904 | g.repositoryOpen = 0; |
| 905 | g.localOpen = 0; |
| 906 | g.configOpen = 0; |
| 907 | sqlite3_wal_checkpoint(g.db, 0); |
| 908 | sqlite3_close(g.db); |
| 909 |
| --- src/db.c | |
| +++ src/db.c | |
| @@ -894,15 +894,20 @@ | |
| 894 | |
| 895 | /* |
| 896 | ** Close the database connection. |
| 897 | */ |
| 898 | void db_close(void){ |
| 899 | sqlite3_stmt *pStmt; |
| 900 | if( g.db==0 ) return; |
| 901 | while( pAllStmt ){ |
| 902 | db_finalize(pAllStmt); |
| 903 | } |
| 904 | db_end_transaction(1); |
| 905 | pStmt = 0; |
| 906 | while( (pStmt = sqlite3_next_stmt(g.db, pStmt))!=0 ){ |
| 907 | fossil_warning("unfinalized SQL statement: [%s]", sqlite3_sql(pStmt)); |
| 908 | } |
| 909 | g.repositoryOpen = 0; |
| 910 | g.localOpen = 0; |
| 911 | g.configOpen = 0; |
| 912 | sqlite3_wal_checkpoint(g.db, 0); |
| 913 | sqlite3_close(g.db); |
| 914 |