]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a shared-cache mode problem triggered when sqlite3_open16() was used to open...
authordanielk1977 <danielk1977@noemail.net>
Mon, 28 Apr 2008 16:19:35 +0000 (16:19 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Mon, 28 Apr 2008 16:19:35 +0000 (16:19 +0000)
FossilOrigin-Name: 20946bf6dd704416c41edd863103e85fc7ab4ef2

manifest
manifest.uuid
src/main.c
test/shared.test

index 93d0dd0979408184f950569cbaa43a8d660eca71..09462d54c3b8c1474abfba77bf6332f2acf8aa78 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Work\saround\sa\sNaN\sbug\sin\ssome\sversions\sof\sTcl.\s(CVS\s5058)
-D 2008-04-28T15:23:03
+C Fix\sa\sshared-cache\smode\sproblem\striggered\swhen\ssqlite3_open16()\swas\sused\sto\sopen\sthe\ssecond\sor\ssubsequent\sconnections\sto\sa\sutf-8\sdatabase.\s(CVS\s5059)
+D 2008-04-28T16:19:35
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 25b3282a4ac39388632c2fb0e044ff494d490952
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -103,7 +103,7 @@ F src/insert.c 9d59bf8eb43ce8399e6f818eaf1612a4c1dfeb2e
 F src/journal.c 807bed7a158979ac8d63953e1774e8d85bff65e2
 F src/legacy.c 8267890e6a0a71f13b680794520999c642299081
 F src/loadext.c 5c20a5afeb154e68d62ed6d9c634add1b21387fd
-F src/main.c 3300916fb626e3e3873c25e9cd966a3b311d1c68
+F src/main.c 367b5806a04e0014101fa70e2e5265e12f6a7030
 F src/malloc.c 12c1ae98ef1eff34b13c9eb526e0b7b479e1e820
 F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
 F src/mem1.c fc716ff521b6dd3e43eaa211967383308800e70a
@@ -430,7 +430,7 @@ F test/select6.test 399f14b9ba37b768afe5d2cd8c12e4f340a69db8
 F test/select7.test 7906735805cfbee4dddc0bed4c14e68d7f5f9c5f
 F test/select8.test 391de11bdd52339c30580dabbbbe97e3e9a3c79d
 F test/server1.test f5b790d4c0498179151ca8a7715a65a7802c859c
-F test/shared.test f4501cfdff9236191ac1f9e84e6597a63d0d9600
+F test/shared.test bff836a2c32418f01561d268b4c1d026a454e59b
 F test/shared2.test 0ee9de8964d70e451936a48c41cb161d9134ccf4
 F test/shared3.test 01e3e124dbb3859788aabc7cfb82f7ea04421749
 F test/shared_err.test 202ce115a4bfab2b41da5d4c9431f68a474134a6
@@ -630,7 +630,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 8eb2c07c520c12c2cd4610596dbec451c8275e95
-R 0d20d66feeaace19e07473438052cbbe
-U drh
-Z 82e30186eb61b94a6ebb1cd09ee72fb5
+P 7bf8213ce9f591f4c2ef6c1e19a17712e3bae9e3
+R 613b7949fdaa0711be115c0f2be92a3b
+U danielk1977
+Z 355fdcb5723cd5025089cad5f7c888ad
index b510a04ee942ee8331e365684ec75a7a4f74b728..036e3600416df3e8838b2b0bda3911cf3ad037a1 100644 (file)
@@ -1 +1 @@
-7bf8213ce9f591f4c2ef6c1e19a17712e3bae9e3
\ No newline at end of file
+20946bf6dd704416c41edd863103e85fc7ab4ef2
\ No newline at end of file
index 940a3c1c2aaba591ab811355b5109e058885ab39..06fc5c1b9a63a9bb307624797d94fe19950797be 100644 (file)
@@ -14,7 +14,7 @@
 ** other files are for internal use by SQLite and should not be
 ** accessed by users of the library.
 **
-** $Id: main.c,v 1.434 2008/04/16 00:49:12 drh Exp $
+** $Id: main.c,v 1.435 2008/04/28 16:19:35 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -1248,12 +1248,8 @@ int sqlite3_open16(
     rc = openDatabase(zFilename8, ppDb,
                       SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);
     assert( *ppDb || rc==SQLITE_NOMEM );
-    if( rc==SQLITE_OK ){
+    if( rc==SQLITE_OK && !DbHasProperty(*ppDb, 0, DB_SchemaLoaded) ){
       ENC(*ppDb) = SQLITE_UTF16NATIVE;
-      if( rc!=SQLITE_OK ){
-        sqlite3_close(*ppDb);
-        *ppDb = 0;
-      }
     }
   }
   sqlite3ValueFree(pVal);
index 0b51e23299ae5dced495635700ef550e9b28e695..f05e9651a2b3cebd754c0806787420689a9b751f 100644 (file)
@@ -9,7 +9,7 @@
 #
 #***********************************************************************
 #
-# $Id: shared.test,v 1.30 2008/02/08 18:25:48 danielk1977 Exp $
+# $Id: shared.test,v 1.31 2008/04/28 16:19:35 danielk1977 Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -636,6 +636,7 @@ ifcapable utf16 {
   do_test shared-$av.8.1.2 {
     string range [execsql {PRAGMA encoding;}] 0 end-2
   } {UTF-16}
+
   do_test shared-$av.8.1.3 {
     sqlite3 db2 test.db
     execsql {
@@ -654,6 +655,7 @@ ifcapable utf16 {
       PRAGMA encoding;
     }
   } {UTF-8}
+
   file delete -force test2.db test2.db-journal
   do_test shared-$av.8.2.1 {
     execsql {
@@ -670,6 +672,35 @@ ifcapable utf16 {
     string range [execsql {PRAGMA encoding;} db2] 0 end-2
   } {UTF-16}
 
+  catch {db close}
+  catch {db2 close}
+  file delete -force test.db test2.db
+
+  do_test shared-$av.8.3.2 {
+    sqlite3 db test.db
+    execsql { CREATE TABLE def(d, e, f) }
+    execsql { PRAGMA encoding }
+  } {UTF-8}
+  do_test shared-$av.8.3.3 {
+    set zDb16 "[encoding convertto unicode test.db]\x00\x00"
+    set db16 [sqlite3_open16 $zDb16 {}]
+
+    set stmt [sqlite3_prepare $db16 "SELECT sql FROM sqlite_master" -1 DUMMY]
+    sqlite3_step $stmt
+    set sql [sqlite3_column_text $stmt 0]
+    sqlite3_finalize $stmt
+    set sql
+  } {CREATE TABLE def(d, e, f)}
+  do_test shared-$av.8.3.4 {
+    set stmt [sqlite3_prepare $db16 "PRAGMA encoding" -1 DUMMY]
+    sqlite3_step $stmt
+    set enc [sqlite3_column_text $stmt 0]
+    sqlite3_finalize $stmt
+    set enc
+  } {UTF-8}
+
+  sqlite3_close $db16
+
 # Bug #2547 is causing this to fail.
 if 0 {
   do_test shared-$av.8.2.3 {