aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2016-08-25 22:31:44 +0000
committerdrh <drh@noemail.net>2016-08-25 22:31:44 +0000
commit3cc19132dae32c875308af463debd2410f3a4caf (patch)
tree5c546035b5e5f75a5adf287a897bec32888fae8c
parente347d3e8132c56ef59b12889605a4f3f0ad082ec (diff)
parentfb82820a3807a51b7fd93676826e4f5f6b4f7acf (diff)
downloadsqlite-3cc19132dae32c875308af463debd2410f3a4caf.tar.gz
sqlite-3cc19132dae32c875308af463debd2410f3a4caf.zip
Merge recent changes from trunk.
FossilOrigin-Name: 5789aab8ef59ae1cdfdae123b078ee03da6e08ed
-rw-r--r--Makefile.msc11
-rw-r--r--autoconf/Makefile.msc8
-rw-r--r--manifest24
-rw-r--r--manifest.uuid2
-rw-r--r--src/build.c2
-rw-r--r--src/main.c7
-rw-r--r--src/sqlite.h.in10
-rw-r--r--src/test1.c24
-rw-r--r--test/misc8.test26
9 files changed, 96 insertions, 18 deletions
diff --git a/Makefile.msc b/Makefile.msc
index cd866ce4a..6c7211651 100644
--- a/Makefile.msc
+++ b/Makefile.msc
@@ -24,6 +24,13 @@ USE_AMALGAMATION = 1
USE_FULLWARN = 0
!ENDIF
+# Set this non-0 to enable full runtime error checks (-RTC1, etc). This
+# has no effect if (any) optimizations are enabled.
+#
+!IFNDEF USE_RUNTIME_CHECKS
+USE_RUNTIME_CHECKS = 0
+!ENDIF
+
# Set this non-0 to use "stdcall" calling convention for the core library
# and shell executable.
#
@@ -835,6 +842,10 @@ RCC = $(RCC) -D_DEBUG
!IF $(DEBUG)>1 || $(OPTIMIZATIONS)==0
TCC = $(TCC) -Od
BCC = $(BCC) -Od
+!IF $(USE_RUNTIME_CHECKS)!=0
+TCC = $(TCC) -RTC1
+BCC = $(BCC) -RTC1
+!ENDIF
!ELSEIF $(OPTIMIZATIONS)>=3
TCC = $(TCC) -Ox
BCC = $(BCC) -Ox
diff --git a/autoconf/Makefile.msc b/autoconf/Makefile.msc
index d3bbc6b4d..46c1e2671 100644
--- a/autoconf/Makefile.msc
+++ b/autoconf/Makefile.msc
@@ -456,12 +456,12 @@ RCC = $(RC) -DSQLITE_OS_WIN=1 -I. -I$(TOP) $(RCOPTS) $(RCCOPTS)
#
!IF $(USE_STDCALL)!=0 || $(FOR_WIN10)!=0
!IF "$(PLATFORM)"=="x86"
-CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall
-SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall
+CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall
+SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall
!ELSE
!IFNDEF PLATFORM
-CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall
-SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall
+CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall
+SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_STDCALL=__stdcall
!ELSE
CORE_CCONV_OPTS =
SHELL_CCONV_OPTS =
diff --git a/manifest b/manifest
index 5805cde82..5713d8493 100644
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
-C Refactor\sthe\ssqlite3ExprCodeIN()\sroutine\sfor\simproved\smaintainability.
-D 2016-08-25T21:14:34.728
+C Merge\srecent\schanges\sfrom\strunk.
+D 2016-08-25T22:31:44.503
F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
-F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
+F Makefile.msc 5017381e4853b1472e01d5bb926be1268eba429c
F README.md 8ecc12493ff9f820cdea6520a9016001cb2e59b7
F VERSION 25e2e333adeff5965520bc8db999c658898c972d
F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
@@ -11,7 +11,7 @@ F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
F autoconf/INSTALL 83e4a25da9fd053c7b3665eaaaf7919707915903
F autoconf/Makefile.am 1a47d071e3d5435f8f7ebff7eb6703848bbd65d4
-F autoconf/Makefile.msc 7a909aa9b538138a21c0626e3ffc4b1f4519f50e
+F autoconf/Makefile.msc a535edafb6165629715b0ba8e21c98ab80732e80
F autoconf/README.first 6c4f34fe115ff55d4e8dbfa3cecf04a0188292f7
F autoconf/README.txt 4f04b0819303aabaa35fff5f7b257fb0c1ef95f1
F autoconf/configure.ac cacf2616abf6e4a569bde2ef365c143caeec40bc
@@ -331,7 +331,7 @@ F src/btmutex.c bc87dd3b062cc26edfe79918de2200ccb8d41e73
F src/btree.c 2551bd3ecb8b8988fb8b23aabadfb214dbc38e46
F src/btree.h 075c45707c0f8f8af118f739f36df8098a08b7da
F src/btreeInt.h c18b7d2a3494695133e4e60ee36061d37f45d9a5
-F src/build.c d32cacbb59a403b68e1c2ec962ca31b6f3aad4fc
+F src/build.c c2ccfcdd99e18894a8750e215b8d9c5398a3c073
F src/callback.c 2e76147783386374bf01b227f752c81ec872d730
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
F src/ctime.c e77f3dc297b4b65c96da78b4ae4272fdfae863d7
@@ -350,7 +350,7 @@ F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
F src/insert.c a255eb795cf475e7a0659297144fc80f70eb4e30
F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e
F src/loadext.c dd7a2b77902cc66c22555aef02e1a682554b7aec
-F src/main.c 8dc7adfeace35ee1f4c489b503ee8fe6bc1fa802
+F src/main.c 0bfcf1a5b612dddb4dd0fd04b53ef08ace0f48ff
F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b
@@ -387,7 +387,7 @@ F src/resolve.c d67b9a5cc33339256e2088c5a722745fc2ff5219
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
F src/select.c cf90abce32567023c940ecabf5707c4714c61c92
F src/shell.c 79dda477be6c96eba6e952a934957ad36f87acc7
-F src/sqlite.h.in 0f7580280d1b009b507d8beec1ff0f197ba0cc99
+F src/sqlite.h.in 4a030e254e204570444b34bf7d40fb4a5416089e
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
F src/sqliteInt.h db8aa0c875b1a3cdb26e1cee47662c30a34882fd
@@ -395,7 +395,7 @@ F src/sqliteLimit.h c0373387c287c8d0932510b5547ecde31b5da247
F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
F src/table.c 5226df15ab9179b9ed558d89575ea0ce37b03fc9
F src/tclsqlite.c bdae822f21e229b6daced15938b6343ce44ef454
-F src/test1.c 0a0909cf7962d2359db329c08d15b90b4b6e724f
+F src/test1.c 8574e41c1bf103727909b37351b3690cc07bc8a7
F src/test2.c b7174313e993754303a8b33c43df7c44b46857ab
F src/test3.c 1339a40be39650ae83894b6578f971dc7f96ea8a
F src/test4.c 18ec393bb4d0ad1de729f0b94da7267270f3d8e6
@@ -943,7 +943,7 @@ F test/misc4.test 0d8be3466adf123a7791a66ba2bc8e8d229e87f3
F test/misc5.test fff0f75e834bc09a39f6079320dd8c37de956f4f
F test/misc6.test 953cc693924d88e6117aeba16f46f0bf5abede91
F test/misc7.test edd0b63e2ee29a256900b0514f6fff27e19e9bb2
-F test/misc8.test 21ac9d35a5e110279ae9e1588b8914f54de1c60b
+F test/misc8.test ba03aaa08f02d62fbb8d3b2f5595c1b33aa9bbc5
F test/misuse.test 3c34719944ba045cc6c188a4852ba04680728912
F test/mmap1.test d2cfc1635171c434dcff0ece2f1c8e0a658807ce
F test/mmap2.test 9d6dd9ddb4ad2379f29cc78f38ce1e63ed418022
@@ -1521,7 +1521,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P f474aeac4fa62d87e73189868d7c7a295ffb7265
-R 015c67366edd8d396f4d5202834c4796
+P b56705ae6374db9db82613ef89faa1a1e6b00a18 37e6c54b1afc634844026b3fe874dd2d550c6558
+R 2a905e6de196a1adbfb5e3026f93f057
U drh
-Z ec6ee7d7de4c92376a0d667aef9d24cc
+Z 71128db26f4e518aa8ba75a034627d25
diff --git a/manifest.uuid b/manifest.uuid
index b8c92ac02..d27311b40 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-b56705ae6374db9db82613ef89faa1a1e6b00a18 \ No newline at end of file
+5789aab8ef59ae1cdfdae123b078ee03da6e08ed \ No newline at end of file
diff --git a/src/build.c b/src/build.c
index 15c005f4e..ca4802cd0 100644
--- a/src/build.c
+++ b/src/build.c
@@ -153,8 +153,8 @@ void sqlite3FinishCoding(Parse *pParse){
if( pParse->nTableLock>0 && db->init.busy==0 ){
sqlite3UserAuthInit(db);
if( db->auth.authLevel<UAUTH_User ){
- pParse->rc = SQLITE_AUTH_USER;
sqlite3ErrorMsg(pParse, "user not authenticated");
+ pParse->rc = SQLITE_AUTH_USER;
return;
}
}
diff --git a/src/main.c b/src/main.c
index e719e7628..a46b5aded 100644
--- a/src/main.c
+++ b/src/main.c
@@ -789,6 +789,11 @@ int sqlite3_db_config(sqlite3 *db, int op, ...){
int rc;
va_start(ap, op);
switch( op ){
+ case SQLITE_DBCONFIG_MAINDBNAME: {
+ db->aDb[0].zDbSName = va_arg(ap,char*);
+ rc = SQLITE_OK;
+ break;
+ }
case SQLITE_DBCONFIG_LOOKASIDE: {
void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */
int sz = va_arg(ap, int); /* IMP: R-47871-25994 */
@@ -1838,6 +1843,8 @@ int sqlite3_trace_v2(
}
#endif
sqlite3_mutex_enter(db->mutex);
+ if( mTrace==0 ) xTrace = 0;
+ if( xTrace==0 ) mTrace = 0;
db->mTrace = mTrace;
db->xTrace = xTrace;
db->pTraceArg = pArg;
diff --git a/src/sqlite.h.in b/src/sqlite.h.in
index 1ee39b679..73c908272 100644
--- a/src/sqlite.h.in
+++ b/src/sqlite.h.in
@@ -1969,8 +1969,18 @@ struct sqlite3_mem_methods {
** be a NULL pointer, in which case the new setting is not reported back.
** </dd>
**
+** <dt>SQLITE_DBCONFIG_MAINDBNAME</dt>
+** <dd> ^This option is used to change the name of the "main" database
+** schema. ^The sole argument is a pointer to a constant UTF8 string
+** which will become the new schema name in place of "main". ^SQLite
+** does not make a copy of the new main schema name string, so the application
+** must ensure that the argument passed into this DBCONFIG option is unchanged
+** until after the database connection closes.
+** </dd>
+**
** </dl>
*/
+#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
#define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_TRIGGER 1003 /* int int* */
diff --git a/src/test1.c b/src/test1.c
index aced55217..367bcc1f7 100644
--- a/src/test1.c
+++ b/src/test1.c
@@ -7196,6 +7196,29 @@ static int SQLITE_TCLAPI test_sqlite3_db_config(
}
/*
+** Change the name of the main database schema from "main" to "icecube".
+*/
+static int SQLITE_TCLAPI test_dbconfig_maindbname_icecube(
+ void * clientData,
+ Tcl_Interp *interp,
+ int objc,
+ Tcl_Obj *CONST objv[]
+){
+ int rc;
+ sqlite3 *db;
+ extern int getDbPointer(Tcl_Interp*, const char*, sqlite3**);
+ if( objc!=2 ){
+ Tcl_WrongNumArgs(interp, 1, objv, "DB");
+ return TCL_ERROR;
+ }else{
+ if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR;
+ rc = sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "icecube");
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(rc));
+ return TCL_OK;
+ }
+}
+
+/*
** Register commands with the TCL interpreter.
*/
int Sqlitetest1_Init(Tcl_Interp *interp){
@@ -7328,6 +7351,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
{ "sqlite3_enable_load_extension", test_enable_load, 0},
{ "sqlite3_extended_result_codes", test_extended_result_codes, 0},
{ "sqlite3_limit", test_limit, 0},
+ { "dbconfig_maindbname_icecube", test_dbconfig_maindbname_icecube },
{ "save_prng_state", save_prng_state, 0 },
{ "restore_prng_state", restore_prng_state, 0 },
diff --git a/test/misc8.test b/test/misc8.test
index 3817cadf9..b639dd146 100644
--- a/test/misc8.test
+++ b/test/misc8.test
@@ -108,4 +108,30 @@ do_execsql_test misc8-3.0 {
ORDER BY 1;
} {0 1 6 0 1 7}
+# The SQLITE_DBCONFIG_MAINDBNAME interface
+#
+db close
+forcedelete test.db test2.db
+sqlite3 db test.db
+do_execsql_test misc8-4.0 {
+ CREATE TABLE t1(a,b,c);
+ INSERT INTO t1 VALUES(1,2,3);
+ ATTACH 'test2.db' AS aux2;
+ CREATE TABLE aux2.t2(c,d,e);
+ INSERT INTO t2 VALUES(4,5,6);
+ SELECT * FROM t1, t2;
+} {1 2 3 4 5 6}
+do_execsql_test misc8-4.1 {
+ PRAGMA database_list;
+} {/0 main .* 2 aux2/}
+dbconfig_maindbname_icecube db
+do_execsql_test misc8-4.2 {
+ SELECT name FROM icecube.sqlite_master;
+} {t1}
+do_execsql_test misc8-4.3 {
+ PRAGMA database_list;
+} {/0 icecube .* 2 aux2/}
+
+
+
finish_test