|
@@ -382,7 +382,7 @@ extern "C" {
|
|
|
*/
|
|
*/
|
|
|
#define SQLITE_VERSION "3.15.0"
|
|
#define SQLITE_VERSION "3.15.0"
|
|
|
#define SQLITE_VERSION_NUMBER 3015000
|
|
#define SQLITE_VERSION_NUMBER 3015000
|
|
|
-#define SQLITE_SOURCE_ID "2016-08-19 15:15:55 083f9e6270fa4faa402b91231271da4f3915c79f"
|
|
|
|
|
|
|
+#define SQLITE_SOURCE_ID "2016-08-26 12:00:50 7090147903337864d54ecfb2cd84a3f823973167"
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
** CAPI3REF: Run-Time Library Version Numbers
|
|
@@ -2244,8 +2244,18 @@ struct sqlite3_mem_methods {
|
|
|
** be a NULL pointer, in which case the new setting is not reported back.
|
|
** be a NULL pointer, in which case the new setting is not reported back.
|
|
|
** </dd>
|
|
** </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>
|
|
** </dl>
|
|
|
*/
|
|
*/
|
|
|
|
|
+#define SQLITE_DBCONFIG_MAINDBNAME 1000 /* const char* */
|
|
|
#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
|
|
#define SQLITE_DBCONFIG_LOOKASIDE 1001 /* void* int int */
|
|
|
#define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */
|
|
#define SQLITE_DBCONFIG_ENABLE_FKEY 1002 /* int int* */
|
|
|
#define SQLITE_DBCONFIG_ENABLE_TRIGGER 1003 /* int int* */
|
|
#define SQLITE_DBCONFIG_ENABLE_TRIGGER 1003 /* int int* */
|
|
@@ -98349,8 +98359,8 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
|
|
|
if( pParse->nTableLock>0 && db->init.busy==0 ){
|
|
if( pParse->nTableLock>0 && db->init.busy==0 ){
|
|
|
sqlite3UserAuthInit(db);
|
|
sqlite3UserAuthInit(db);
|
|
|
if( db->auth.authLevel<UAUTH_User ){
|
|
if( db->auth.authLevel<UAUTH_User ){
|
|
|
- pParse->rc = SQLITE_AUTH_USER;
|
|
|
|
|
sqlite3ErrorMsg(pParse, "user not authenticated");
|
|
sqlite3ErrorMsg(pParse, "user not authenticated");
|
|
|
|
|
+ pParse->rc = SQLITE_AUTH_USER;
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -109167,15 +109177,15 @@ SQLITE_PRIVATE int sqlite3OpenTableAndIndices(
|
|
|
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
|
|
for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
|
|
|
int iIdxCur = iBase++;
|
|
int iIdxCur = iBase++;
|
|
|
assert( pIdx->pSchema==pTab->pSchema );
|
|
assert( pIdx->pSchema==pTab->pSchema );
|
|
|
|
|
+ if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
|
|
|
|
|
+ if( piDataCur ) *piDataCur = iIdxCur;
|
|
|
|
|
+ p5 = 0;
|
|
|
|
|
+ }
|
|
|
if( aToOpen==0 || aToOpen[i+1] ){
|
|
if( aToOpen==0 || aToOpen[i+1] ){
|
|
|
sqlite3VdbeAddOp3(v, op, iIdxCur, pIdx->tnum, iDb);
|
|
sqlite3VdbeAddOp3(v, op, iIdxCur, pIdx->tnum, iDb);
|
|
|
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
|
|
sqlite3VdbeSetP4KeyInfo(pParse, pIdx);
|
|
|
- VdbeComment((v, "%s", pIdx->zName));
|
|
|
|
|
- }
|
|
|
|
|
- if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
|
|
|
|
|
- if( piDataCur ) *piDataCur = iIdxCur;
|
|
|
|
|
- }else{
|
|
|
|
|
sqlite3VdbeChangeP5(v, p5);
|
|
sqlite3VdbeChangeP5(v, p5);
|
|
|
|
|
+ VdbeComment((v, "%s", pIdx->zName));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if( iBase>pParse->nTab ) pParse->nTab = iBase;
|
|
if( iBase>pParse->nTab ) pParse->nTab = iBase;
|
|
@@ -138390,6 +138400,11 @@ SQLITE_API int SQLITE_CDECL sqlite3_db_config(sqlite3 *db, int op, ...){
|
|
|
int rc;
|
|
int rc;
|
|
|
va_start(ap, op);
|
|
va_start(ap, op);
|
|
|
switch( op ){
|
|
switch( op ){
|
|
|
|
|
+ case SQLITE_DBCONFIG_MAINDBNAME: {
|
|
|
|
|
+ db->aDb[0].zDbSName = va_arg(ap,char*);
|
|
|
|
|
+ rc = SQLITE_OK;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
case SQLITE_DBCONFIG_LOOKASIDE: {
|
|
case SQLITE_DBCONFIG_LOOKASIDE: {
|
|
|
void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */
|
|
void *pBuf = va_arg(ap, void*); /* IMP: R-26835-10964 */
|
|
|
int sz = va_arg(ap, int); /* IMP: R-47871-25994 */
|
|
int sz = va_arg(ap, int); /* IMP: R-47871-25994 */
|
|
@@ -139491,6 +139506,8 @@ SQLITE_API int SQLITE_STDCALL sqlite3_trace_v2(
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
sqlite3_mutex_enter(db->mutex);
|
|
sqlite3_mutex_enter(db->mutex);
|
|
|
|
|
+ if( mTrace==0 ) xTrace = 0;
|
|
|
|
|
+ if( xTrace==0 ) mTrace = 0;
|
|
|
db->mTrace = mTrace;
|
|
db->mTrace = mTrace;
|
|
|
db->xTrace = xTrace;
|
|
db->xTrace = xTrace;
|
|
|
db->pTraceArg = pArg;
|
|
db->pTraceArg = pArg;
|