1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Fix a problem in hash.c when replacing entries in tables configured with copyKey==0. (CVS 4375)

FossilOrigin-Name: a19d3a73a91f2040ec35d913f11743ff4913ffb7
This commit is contained in:
danielk1977
2007-09-03 15:03:20 +00:00
parent d1a793126a
commit cd2543b6ae
5 changed files with 40 additions and 14 deletions

View File

@@ -1,5 +1,5 @@
C Improvements\sto\sthe\sxRandomness()\smethod\son\sthe\sdefault\swindows\sVFS.\nTicket\s#2615.\s(CVS\s4374) C Fix\sa\sproblem\sin\shash.c\swhen\sreplacing\sentries\sin\stables\sconfigured\swith\scopyKey==0.\s(CVS\s4375)
D 2007-09-03T13:06:12 D 2007-09-03T15:03:21
F Makefile.in bfcc303429a5d9dcd552d807ee016c77427418c3 F Makefile.in bfcc303429a5d9dcd552d807ee016c77427418c3
F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499 F Makefile.linux-gcc 65241babba6faf1152bf86574477baab19190499
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -92,7 +92,7 @@ F src/delete.c 849846d06d29851dde0d9f424a5de5817eb140d1
F src/experimental.c 1b2d1a6cd62ecc39610e97670332ca073c50792b F src/experimental.c 1b2d1a6cd62ecc39610e97670332ca073c50792b
F src/expr.c 7853a8161ec0b0fce62fc8da921db557899f1ec1 F src/expr.c 7853a8161ec0b0fce62fc8da921db557899f1ec1
F src/func.c 9d88141c4cffb3a04719e5a0fda65cde34bfa1e5 F src/func.c 9d88141c4cffb3a04719e5a0fda65cde34bfa1e5
F src/hash.c 8fe2fa52bd17869c87748e42cff5b1e7fbf90822 F src/hash.c 06c69a3a038b713c43353c79023372bcfe7f5180
F src/hash.h 3ad3da76bfb954978d227bf495568b0e6da2c19e F src/hash.h 3ad3da76bfb954978d227bf495568b0e6da2c19e
F src/insert.c b11e5ca0d68bf2a7a56f47a052a0ee67dd4e2f89 F src/insert.c b11e5ca0d68bf2a7a56f47a052a0ee67dd4e2f89
F src/journal.c 63f8a40827e871997272eb2598f5cd9e66aa0947 F src/journal.c 63f8a40827e871997272eb2598f5cd9e66aa0947
@@ -143,7 +143,7 @@ F src/test4.c c2c0f5dc907f1346f5d4b65eb5799f11eb9e4071
F src/test5.c 3a6a5717a149d7ca2e6d14f5be72cf7555d54dc4 F src/test5.c 3a6a5717a149d7ca2e6d14f5be72cf7555d54dc4
F src/test6.c 0513982dfef4da2a4154b538d2bf538b84ca21d3 F src/test6.c 0513982dfef4da2a4154b538d2bf538b84ca21d3
F src/test7.c a9d509d0e9ad214b4772696f49f6e61be26213d1 F src/test7.c a9d509d0e9ad214b4772696f49f6e61be26213d1
F src/test8.c 146cb2c2e7e9bac0e30e4890e7880ffe3e223a68 F src/test8.c f113aa3723a52113d0fa7c28155ecd37e7e04077
F src/test9.c b46c8fe02ac7cca1a7316436d8d38d50c66f4b2f F src/test9.c b46c8fe02ac7cca1a7316436d8d38d50c66f4b2f
F src/test_async.c 8b6aa6a5701bf3cf52708db178379ee608b44b0c F src/test_async.c 8b6aa6a5701bf3cf52708db178379ee608b44b0c
F src/test_autoext.c 855157d97aa28cf84233847548bfacda21807436 F src/test_autoext.c 855157d97aa28cf84233847548bfacda21807436
@@ -470,7 +470,7 @@ F test/vacuum.test cf839fc3ff24d601057319bbb5c700ce9c8e0fb0
F test/vacuum2.test e198d81a1cbc3f3f6b8aeee27cadfffea8995d42 F test/vacuum2.test e198d81a1cbc3f3f6b8aeee27cadfffea8995d42
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102 F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
F test/view.test 852bd4101e6d171c46ad682eb5c5faf662b2eba4 F test/view.test 852bd4101e6d171c46ad682eb5c5faf662b2eba4
F test/vtab1.test 607cddf5b425ff3076b8caacc6d6b4422f66ffab F test/vtab1.test 2f0afae624babc671af2052e88e98b4ac4aafd1e
F test/vtab2.test 94bb3bf691ac10e34cf7dad46b1cf94b861d513c F test/vtab2.test 94bb3bf691ac10e34cf7dad46b1cf94b861d513c
F test/vtab3.test f38d6d7d19f08bffdadce4d5b8cba078f8118587 F test/vtab3.test f38d6d7d19f08bffdadce4d5b8cba078f8118587
F test/vtab4.test a9d7104d41a787754a734740d7aa61c807a69f87 F test/vtab4.test a9d7104d41a787754a734740d7aa61c807a69f87
@@ -568,7 +568,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P e89d4131a1b55da1a7f226d7f7b416f02f5e2c6e P 91b50f31e35652a40d51f5d9bf22efce36d515e4
R 70eed1b737d2685751d3043c11b74d10 R 1f20fef17ef49080f07da6476975a4c8
U drh U danielk1977
Z 3dfc552072668685c58ab6fae3991bd7 Z a985adb5f326fdf3ef20c1c9a11c8b46

View File

@@ -1 +1 @@
91b50f31e35652a40d51f5d9bf22efce36d515e4 a19d3a73a91f2040ec35d913f11743ff4913ffb7

View File

@@ -12,7 +12,7 @@
** This is the implementation of generic hash-tables ** This is the implementation of generic hash-tables
** used in SQLite. ** used in SQLite.
** **
** $Id: hash.c,v 1.22 2007/08/29 12:31:26 danielk1977 Exp $ ** $Id: hash.c,v 1.23 2007/09/03 15:03:21 danielk1977 Exp $
*/ */
#include "sqliteInt.h" #include "sqliteInt.h"
#include <assert.h> #include <assert.h>
@@ -362,6 +362,10 @@ void *sqlite3HashInsert(Hash *pH, const void *pKey, int nKey, void *data){
removeElementGivenHash(pH,elem,h); removeElementGivenHash(pH,elem,h);
}else{ }else{
elem->data = data; elem->data = data;
if( !pH->copyKey ){
elem->pKey = (void *)pKey;
}
assert(nKey==elem->nKey);
} }
return old_data; return old_data;
} }

View File

@@ -13,7 +13,7 @@
** is not included in the SQLite library. It is used for automated ** is not included in the SQLite library. It is used for automated
** testing of the SQLite library. ** testing of the SQLite library.
** **
** $Id: test8.c,v 1.56 2007/09/03 11:51:50 danielk1977 Exp $ ** $Id: test8.c,v 1.57 2007/09/03 15:03:21 danielk1977 Exp $
*/ */
#include "sqliteInt.h" #include "sqliteInt.h"
#include "tcl.h" #include "tcl.h"
@@ -452,6 +452,14 @@ static int echoCreate(
zSql = sqlite3MPrintf(0, "CREATE TABLE %Q(logmsg)", pVtab->zLogName); zSql = sqlite3MPrintf(0, "CREATE TABLE %Q(logmsg)", pVtab->zLogName);
rc = sqlite3_exec(db, zSql, 0, 0, 0); rc = sqlite3_exec(db, zSql, 0, 0, 0);
sqlite3_free(zSql); sqlite3_free(zSql);
if( rc!=SQLITE_OK ){
*pzErr = sqlite3StrDup(sqlite3_errmsg(db));
}
}
if( *ppVtab && rc!=SQLITE_OK ){
echoDestructor(*ppVtab);
*ppVtab = 0;
} }
return rc; return rc;

View File

@@ -11,7 +11,7 @@
# This file implements regression tests for SQLite library. The # This file implements regression tests for SQLite library. The
# focus of this file is creating and dropping virtual tables. # focus of this file is creating and dropping virtual tables.
# #
# $Id: vtab1.test,v 1.45 2007/08/22 02:57:17 drh Exp $ # $Id: vtab1.test,v 1.46 2007/09/03 15:03:21 danielk1977 Exp $
set testdir [file dirname $argv0] set testdir [file dirname $argv0]
source $testdir/tester.tcl source $testdir/tester.tcl
@@ -179,10 +179,24 @@ do_test vtab1-1.15 {
} {1 {no such module: echo}} } {1 {no such module: echo}}
register_echo_module [sqlite3_connection_pointer db] register_echo_module [sqlite3_connection_pointer db]
do_test vtab1-1.X { register_echo_module [sqlite3_connection_pointer db]
# Test an error message returned from a v-table constructor.
#
do_test vtab1-1.16 {
execsql { execsql {
DROP TABLE techo; DROP TABLE techo;
CREATE TABLE logmsg(log);
}
catchsql {
CREATE VIRTUAL TABLE techo USING echo(treal, logmsg);
}
} {1 {table 'logmsg' already exists}}
do_test vtab1-1.17 {
execsql {
DROP TABLE treal; DROP TABLE treal;
DROP TABLE logmsg;
SELECT sql FROM sqlite_master; SELECT sql FROM sqlite_master;
} }
} {} } {}