From: drh <> Date: Mon, 8 May 2023 13:47:38 +0000 (+0000) Subject: Improved error handling when ".open" fails in the CLI. X-Git-Tag: version-3.42.0~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bbd0ae2e87a93805482a83df1c9399d2b52ad74f;p=thirdparty%2Fsqlite.git Improved error handling when ".open" fails in the CLI. FossilOrigin-Name: 38544b11f0e19cc6c6f8230a89d28e36c7c3587481deaac6cedbf82338ca0d47 --- diff --git a/manifest b/manifest index c46c202af7..25749f8ec3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C In\seditPage(),\sif\san\sattempt\sis\smade\sto\sedit\san\sempty\s64KB\spage,\sthen\stake\nthe\sslow\spath\sthrough\srebuildPage(),\sin\sorder\sto\smaintain\sstrict\sinvariants\nin\sthe\seditPage()\scode.\n[forum:/forumpost/0f37727c0d|Forum\spost\s0f37727c0d]. -D 2023-05-08T13:38:14.485 +C Improved\serror\shandling\swhen\s".open"\sfails\sin\sthe\sCLI. +D 2023-05-08T13:47:38.883 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -636,7 +636,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c F src/resolve.c 3e53e02ce87c9582bd7e7d22f13f4094a271678d9dc72820fa257a2abb5e4032 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 F src/select.c f9333ef8181192c22662f5cb8d257efc4a2880f9ee4853c6c4616f783d27e1b5 -F src/shell.c.in 39ea3d9c17c65c42c6c415222d89a32ae683b245c8af7b4bfc544d9246055d16 +F src/shell.c.in e0ca294a4ca6322fd0888bc090d34047347ff591ca9ac8846adc57b13ab91bee F src/sqlite.h.in 27ca1d4b2eda8feee468af5735182390e8fe4696522751eec0136d17323201ad F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4 @@ -2068,8 +2068,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P c335737c2889722ea05b732a5efff8a2f31140c18ca038c41e05c2a26e0db5bd -R a4c80707056958d556ff67539a7c1798 +P a865e574e510c1ca192d0bd5293fb583def90f7ed086af2c89ca856ce93d115b +R c59c0ab602565c9462d7f8be44cc8aca U drh -Z b12cc07b0d2ae6aee47dbd1c24cec27b +Z da3351fa0642cbfa8d9f8540ca3ba271 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 3354f0fd77..9962ca64fa 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a865e574e510c1ca192d0bd5293fb583def90f7ed086af2c89ca856ce93d115b \ No newline at end of file +38544b11f0e19cc6c6f8230a89d28e36c7c3587481deaac6cedbf82338ca0d47 \ No newline at end of file diff --git a/src/shell.c.in b/src/shell.c.in index bf804aca9f..567752e9b0 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -5380,11 +5380,21 @@ static void open_db(ShellState *p, int openFlags){ if( p->db==0 || SQLITE_OK!=sqlite3_errcode(p->db) ){ utf8_printf(stderr,"Error: unable to open database \"%s\": %s\n", zDbFilename, sqlite3_errmsg(p->db)); - if( openFlags & OPEN_DB_KEEPALIVE ){ - sqlite3_open(":memory:", &p->db); - return; + if( (openFlags & OPEN_DB_KEEPALIVE)==0 ){ + exit(1); + } + sqlite3_close(p->db); + sqlite3_open(":memory:", &p->db); + if( p->db==0 || SQLITE_OK!=sqlite3_errcode(p->db) ){ + utf8_printf(stderr, + "Also: unable to open substitute in-memory database.\n" + ); + exit(1); + }else{ + utf8_printf(stderr, + "Notice: using substitute in-memory database instead of \"%s\"\n", + zDbFilename); } - exit(1); } sqlite3_db_config(p->db, SQLITE_DBCONFIG_STMT_SCANSTATUS, (int)0, (int*)0);