Make sure the 3rd parameter to sqlite3_prepare() is honored. Ticket #1650. (CVS 3040)
FossilOrigin-Name: 9d53cc880fd2aa3bd4b4a59f666b57b0b7864e8f
This commit is contained in:
parent
f28b266d43
commit
9051a420d6
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Clarify\sthat\sthe\snBytes\sparameter\sto\ssqlite3_prepare\sis\salways\sthe\nnumber\sof\sbytes\sand\snever\sthe\snumber\sof\scharacters.\s\sTicket\s#1646.\s(CVS\s3039)
|
||||
D 2006-01-30T22:12:31
|
||||
C Make\ssure\sthe\s3rd\sparameter\sto\ssqlite3_prepare()\sis\shonored.\s\sTicket\s#1650.\s(CVS\s3040)
|
||||
D 2006-01-30T22:35:44
|
||||
F Makefile.in e936c6fc3134838318aa0335a85041e6da31f6ee
|
||||
F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec
|
||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||
@ -63,7 +63,7 @@ F src/pager.c c9fdc3f4026f22e73d8fa586c4f58e14129036bb
|
||||
F src/pager.h e0acb095b3ad0bca48f2ab00c87346665643f64f
|
||||
F src/parse.y 4285cd2d0f31a8db4c4d54325f88e500452fa029
|
||||
F src/pragma.c 4496cc77dc35824e1c978c3d1413b8a5a4c777d3
|
||||
F src/prepare.c 9753e8e5876faf806ecce8008ca8e5ed6ef768b7
|
||||
F src/prepare.c 40ae23c8aeb641dc7b9bb271eb5e295b815154a7
|
||||
F src/printf.c c7d6ad9efb71c466305297a448308f467b6e2b6e
|
||||
F src/random.c d40f8d356cecbd351ccfab6eaedd7ec1b54f5261
|
||||
F src/select.c daee9b20702ba51cf3807fc1b130edd8846e3e48
|
||||
@ -132,7 +132,7 @@ F test/btree7.test a6d3b842db22af97dd14b989e90a2fd96066b72f
|
||||
F test/btree8.test fadc112bcbd6a0c622d34c813fc8a648eacf8804
|
||||
F test/busy.test 0271c854738e23ad76e10d4096a698e5af29d211
|
||||
F test/capi2.test b9354d6c37e6f8f858c08952ebc9709712581221
|
||||
F test/capi3.test e573d6b8b67e8a25aeb471b20ed527a975d43c7d
|
||||
F test/capi3.test f36912f21457fa713ace874e73f2b54d55d1b9dd
|
||||
F test/capi3b.test 5f0bc94b104e11086b1103b20277e1910f59c7f4
|
||||
F test/cast.test aabdcb3873bb2f40d855bf63950f6d99a5a196c7
|
||||
F test/check.test 55ad950d7ad24d6eb3328c54149f90d38a39a962
|
||||
@ -349,7 +349,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
|
||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
|
||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||
P 6537b5713a9541ec5712ae2564a801a07f93f4c8
|
||||
R 266b57c79998c7761e70c9e0903587ae
|
||||
P 8efc8c57103cab61bc06842391744bec69c24428
|
||||
R 67662a16bac53c6b6882b43161155881
|
||||
U drh
|
||||
Z 21899a16ae1af06f390fe8c9764e27e4
|
||||
Z 3ce9dce65c4451fa921d25ff4c0e8dad
|
||||
|
@ -1 +1 @@
|
||||
8efc8c57103cab61bc06842391744bec69c24428
|
||||
9d53cc880fd2aa3bd4b4a59f666b57b0b7864e8f
|
@ -13,7 +13,7 @@
|
||||
** interface, and routines that contribute to loading the database schema
|
||||
** from disk.
|
||||
**
|
||||
** $Id: prepare.c,v 1.29 2006/01/25 22:50:38 drh Exp $
|
||||
** $Id: prepare.c,v 1.30 2006/01/30 22:35:44 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include "os.h"
|
||||
@ -530,7 +530,14 @@ int sqlite3_prepare(
|
||||
|
||||
memset(&sParse, 0, sizeof(sParse));
|
||||
sParse.db = db;
|
||||
sqlite3RunParser(&sParse, zSql, &zErrMsg);
|
||||
if( nBytes>=0 && zSql[nBytes]!=0 ){
|
||||
char *zSqlCopy = sqlite3StrNDup(zSql, nBytes);
|
||||
sqlite3RunParser(&sParse, zSqlCopy, &zErrMsg);
|
||||
sParse.zTail += zSql - zSqlCopy;
|
||||
sqliteFree(zSqlCopy);
|
||||
}else{
|
||||
sqlite3RunParser(&sParse, zSql, &zErrMsg);
|
||||
}
|
||||
|
||||
if( sqlite3MallocFailed() ){
|
||||
sParse.rc = SQLITE_NOMEM;
|
||||
|
@ -11,7 +11,7 @@
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this script testing the callback-free C/C++ API.
|
||||
#
|
||||
# $Id: capi3.test,v 1.40 2006/01/23 21:37:32 drh Exp $
|
||||
# $Id: capi3.test,v 1.41 2006/01/30 22:35:44 drh Exp $
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
@ -885,5 +885,22 @@ do_test capi3-14.1 {
|
||||
lappend rc $msg
|
||||
} {1 SQLITE_MISUSE}
|
||||
|
||||
# Ticket #1650: Honor the nBytes parameter to sqlite3_prepare.
|
||||
#
|
||||
do_test capi3-15.1 {
|
||||
set sql {SELECT * FROM t2}
|
||||
set nbytes [string length $sql]
|
||||
append sql { WHERE a==1}
|
||||
set STMT [sqlite3_prepare $DB $sql $nbytes TAIL]
|
||||
sqlite3_step $STMT
|
||||
sqlite3_column_int $STMT 0
|
||||
} {1}
|
||||
do_test capi3-15.2 {
|
||||
sqlite3_step $STMT
|
||||
sqlite3_column_int $STMT 0
|
||||
} {2}
|
||||
do_test capi3-15.3 {
|
||||
sqlite3_finalize $STMT
|
||||
} {SQLITE_OK}
|
||||
|
||||
finish_test
|
||||
|
Loading…
x
Reference in New Issue
Block a user