mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Merge recent trunk enhancements into reuse-schema branch.
FossilOrigin-Name: 92d8f967c9a7e4005c63703af8075b3d2ae5aa43c6b5bc6e599735dc4479bef6
This commit is contained in:
@@ -14,13 +14,8 @@
|
|||||||
|
|
||||||
#define _CRT_SECURE_NO_DEPRECATE
|
#define _CRT_SECURE_NO_DEPRECATE
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#define NO_SHLWAPI_GDI
|
|
||||||
#define NO_SHLWAPI_STREAM
|
|
||||||
#define NO_SHLWAPI_REG
|
|
||||||
#include <shlwapi.h>
|
|
||||||
#pragma comment (lib, "user32.lib")
|
#pragma comment (lib, "user32.lib")
|
||||||
#pragma comment (lib, "kernel32.lib")
|
#pragma comment (lib, "kernel32.lib")
|
||||||
#pragma comment (lib, "shlwapi.lib")
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
@@ -39,15 +34,15 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* protos */
|
/* protos */
|
||||||
|
|
||||||
static int CheckForCompilerFeature(const char *option);
|
static int CheckForCompilerFeature(const char *option);
|
||||||
static int CheckForLinkerFeature(const char *option);
|
static int CheckForLinkerFeature(const char **options, int count);
|
||||||
static int IsIn(const char *string, const char *substring);
|
static int IsIn(const char *string, const char *substring);
|
||||||
static int SubstituteFile(const char *substs, const char *filename);
|
static int SubstituteFile(const char *substs, const char *filename);
|
||||||
static int QualifyPath(const char *path);
|
static int QualifyPath(const char *path);
|
||||||
static const char *GetVersionFromFile(const char *filename, const char *match);
|
static int LocateDependency(const char *keyfile);
|
||||||
|
static const char *GetVersionFromFile(const char *filename, const char *match, int numdots);
|
||||||
static DWORD WINAPI ReadFromPipe(LPVOID args);
|
static DWORD WINAPI ReadFromPipe(LPVOID args);
|
||||||
|
|
||||||
/* globals */
|
/* globals */
|
||||||
@@ -74,6 +69,7 @@ main(
|
|||||||
char msg[300];
|
char msg[300];
|
||||||
DWORD dwWritten;
|
DWORD dwWritten;
|
||||||
int chars;
|
int chars;
|
||||||
|
const char *s;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Make sure children (cl.exe and link.exe) are kept quiet.
|
* Make sure children (cl.exe and link.exe) are kept quiet.
|
||||||
@@ -102,16 +98,16 @@ main(
|
|||||||
}
|
}
|
||||||
return CheckForCompilerFeature(argv[2]);
|
return CheckForCompilerFeature(argv[2]);
|
||||||
case 'l':
|
case 'l':
|
||||||
if (argc != 3) {
|
if (argc < 3) {
|
||||||
chars = snprintf(msg, sizeof(msg) - 1,
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
"usage: %s -l <linker option>\n"
|
"usage: %s -l <linker option> ?<mandatory option> ...?\n"
|
||||||
"Tests for whether link.exe supports an option\n"
|
"Tests for whether link.exe supports an option\n"
|
||||||
"exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
|
"exitcodes: 0 == no, 1 == yes, 2 == error\n", argv[0]);
|
||||||
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
&dwWritten, NULL);
|
&dwWritten, NULL);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
return CheckForLinkerFeature(argv[2]);
|
return CheckForLinkerFeature(&argv[2], argc-2);
|
||||||
case 'f':
|
case 'f':
|
||||||
if (argc == 2) {
|
if (argc == 2) {
|
||||||
chars = snprintf(msg, sizeof(msg) - 1,
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
@@ -153,8 +149,13 @@ main(
|
|||||||
&dwWritten, NULL);
|
&dwWritten, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
printf("%s\n", GetVersionFromFile(argv[2], argv[3]));
|
s = GetVersionFromFile(argv[2], argv[3], *(argv[1]+2) - '0');
|
||||||
return 0;
|
if (s && *s) {
|
||||||
|
printf("%s\n", s);
|
||||||
|
return 0;
|
||||||
|
} else
|
||||||
|
return 1; /* Version not found. Return non-0 exit code */
|
||||||
|
|
||||||
case 'Q':
|
case 'Q':
|
||||||
if (argc != 3) {
|
if (argc != 3) {
|
||||||
chars = snprintf(msg, sizeof(msg) - 1,
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
@@ -166,6 +167,18 @@ main(
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
return QualifyPath(argv[2]);
|
return QualifyPath(argv[2]);
|
||||||
|
|
||||||
|
case 'L':
|
||||||
|
if (argc != 3) {
|
||||||
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
|
"usage: %s -L keypath\n"
|
||||||
|
"Emit the fully qualified path of directory containing keypath\n"
|
||||||
|
"exitcodes: 0 == success, 1 == not found, 2 == error\n", argv[0]);
|
||||||
|
WriteFile(GetStdHandle(STD_ERROR_HANDLE), msg, chars,
|
||||||
|
&dwWritten, NULL);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
return LocateDependency(argv[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
chars = snprintf(msg, sizeof(msg) - 1,
|
chars = snprintf(msg, sizeof(msg) - 1,
|
||||||
@@ -313,7 +326,8 @@ CheckForCompilerFeature(
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
CheckForLinkerFeature(
|
CheckForLinkerFeature(
|
||||||
const char *option)
|
const char **options,
|
||||||
|
int count)
|
||||||
{
|
{
|
||||||
STARTUPINFO si;
|
STARTUPINFO si;
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
@@ -322,7 +336,8 @@ CheckForLinkerFeature(
|
|||||||
char msg[300];
|
char msg[300];
|
||||||
BOOL ok;
|
BOOL ok;
|
||||||
HANDLE hProcess, h, pipeThreads[2];
|
HANDLE hProcess, h, pipeThreads[2];
|
||||||
char cmdline[100];
|
int i;
|
||||||
|
char cmdline[255];
|
||||||
|
|
||||||
hProcess = GetCurrentProcess();
|
hProcess = GetCurrentProcess();
|
||||||
|
|
||||||
@@ -368,7 +383,11 @@ CheckForLinkerFeature(
|
|||||||
* Append our option for testing.
|
* Append our option for testing.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
lstrcat(cmdline, option);
|
for (i = 0; i < count; i++) {
|
||||||
|
lstrcat(cmdline, " \"");
|
||||||
|
lstrcat(cmdline, options[i]);
|
||||||
|
lstrcat(cmdline, "\"");
|
||||||
|
}
|
||||||
|
|
||||||
ok = CreateProcess(
|
ok = CreateProcess(
|
||||||
NULL, /* Module name. */
|
NULL, /* Module name. */
|
||||||
@@ -433,7 +452,9 @@ CheckForLinkerFeature(
|
|||||||
return !(strstr(Out.buffer, "LNK1117") != NULL ||
|
return !(strstr(Out.buffer, "LNK1117") != NULL ||
|
||||||
strstr(Err.buffer, "LNK1117") != NULL ||
|
strstr(Err.buffer, "LNK1117") != NULL ||
|
||||||
strstr(Out.buffer, "LNK4044") != NULL ||
|
strstr(Out.buffer, "LNK4044") != NULL ||
|
||||||
strstr(Err.buffer, "LNK4044") != NULL);
|
strstr(Err.buffer, "LNK4044") != NULL ||
|
||||||
|
strstr(Out.buffer, "LNK4224") != NULL ||
|
||||||
|
strstr(Err.buffer, "LNK4224") != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DWORD WINAPI
|
static DWORD WINAPI
|
||||||
@@ -479,7 +500,8 @@ IsIn(
|
|||||||
static const char *
|
static const char *
|
||||||
GetVersionFromFile(
|
GetVersionFromFile(
|
||||||
const char *filename,
|
const char *filename,
|
||||||
const char *match)
|
const char *match,
|
||||||
|
int numdots)
|
||||||
{
|
{
|
||||||
size_t cbBuffer = 100;
|
size_t cbBuffer = 100;
|
||||||
static char szBuffer[100];
|
static char szBuffer[100];
|
||||||
@@ -497,9 +519,10 @@ GetVersionFromFile(
|
|||||||
p = strstr(szBuffer, match);
|
p = strstr(szBuffer, match);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
/*
|
/*
|
||||||
* Skip to first digit.
|
* Skip to first digit after the match.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
p += strlen(match);
|
||||||
while (*p && !isdigit(*p)) {
|
while (*p && !isdigit(*p)) {
|
||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
@@ -509,7 +532,8 @@ GetVersionFromFile(
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
q = p;
|
q = p;
|
||||||
while (*q && (isalnum(*q) || *q == '.')) {
|
while (*q && (strchr("0123456789.ab", *q)) && ((!strchr(".ab", *q)
|
||||||
|
&& (!strchr("ab", q[-1])) || --numdots))) {
|
||||||
++q;
|
++q;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -619,7 +643,7 @@ SubstituteFile(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* debug: dump the list */
|
/* debug: dump the list */
|
||||||
#ifdef _DEBUG
|
#ifndef NDEBUG
|
||||||
{
|
{
|
||||||
int n = 0;
|
int n = 0;
|
||||||
list_item_t *p = NULL;
|
list_item_t *p = NULL;
|
||||||
@@ -659,6 +683,17 @@ SubstituteFile(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL FileExists(LPCTSTR szPath)
|
||||||
|
{
|
||||||
|
#ifndef INVALID_FILE_ATTRIBUTES
|
||||||
|
#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
|
||||||
|
#endif
|
||||||
|
DWORD pathAttr = GetFileAttributes(szPath);
|
||||||
|
return (pathAttr != INVALID_FILE_ATTRIBUTES &&
|
||||||
|
!(pathAttr & FILE_ATTRIBUTE_DIRECTORY));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* QualifyPath --
|
* QualifyPath --
|
||||||
*
|
*
|
||||||
@@ -672,17 +707,103 @@ QualifyPath(
|
|||||||
const char *szPath)
|
const char *szPath)
|
||||||
{
|
{
|
||||||
char szCwd[MAX_PATH + 1];
|
char szCwd[MAX_PATH + 1];
|
||||||
char szTmp[MAX_PATH + 1];
|
|
||||||
char *p;
|
GetFullPathName(szPath, sizeof(szCwd)-1, szCwd, NULL);
|
||||||
GetCurrentDirectory(MAX_PATH, szCwd);
|
|
||||||
while ((p = strchr(szPath, '/')) && *p)
|
|
||||||
*p = '\\';
|
|
||||||
PathCombine(szTmp, szCwd, szPath);
|
|
||||||
PathCanonicalize(szCwd, szTmp);
|
|
||||||
printf("%s\n", szCwd);
|
printf("%s\n", szCwd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implements LocateDependency for a single directory. See that command
|
||||||
|
* for an explanation.
|
||||||
|
* Returns 0 if found after printing the directory.
|
||||||
|
* Returns 1 if not found but no errors.
|
||||||
|
* Returns 2 on any kind of error
|
||||||
|
* Basically, these are used as exit codes for the process.
|
||||||
|
*/
|
||||||
|
static int LocateDependencyHelper(const char *dir, const char *keypath)
|
||||||
|
{
|
||||||
|
HANDLE hSearch;
|
||||||
|
char path[MAX_PATH+1];
|
||||||
|
int dirlen, keylen, ret;
|
||||||
|
WIN32_FIND_DATA finfo;
|
||||||
|
|
||||||
|
if (dir == NULL || keypath == NULL)
|
||||||
|
return 2; /* Have no real error reporting mechanism into nmake */
|
||||||
|
dirlen = strlen(dir);
|
||||||
|
if ((dirlen + 3) > sizeof(path))
|
||||||
|
return 2;
|
||||||
|
strncpy(path, dir, dirlen);
|
||||||
|
strncpy(path+dirlen, "\\*", 3); /* Including terminating \0 */
|
||||||
|
keylen = strlen(keypath);
|
||||||
|
|
||||||
|
#if 0 /* This function is not available in Visual C++ 6 */
|
||||||
|
/*
|
||||||
|
* Use numerics 0 -> FindExInfoStandard,
|
||||||
|
* 1 -> FindExSearchLimitToDirectories,
|
||||||
|
* as these are not defined in Visual C++ 6
|
||||||
|
*/
|
||||||
|
hSearch = FindFirstFileEx(path, 0, &finfo, 1, NULL, 0);
|
||||||
|
#else
|
||||||
|
hSearch = FindFirstFile(path, &finfo);
|
||||||
|
#endif
|
||||||
|
if (hSearch == INVALID_HANDLE_VALUE)
|
||||||
|
return 1; /* Not found */
|
||||||
|
|
||||||
|
/* Loop through all subdirs checking if the keypath is under there */
|
||||||
|
ret = 1; /* Assume not found */
|
||||||
|
do {
|
||||||
|
int sublen;
|
||||||
|
/*
|
||||||
|
* We need to check it is a directory despite the
|
||||||
|
* FindExSearchLimitToDirectories in the above call. See SDK docs
|
||||||
|
*/
|
||||||
|
if ((finfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0)
|
||||||
|
continue;
|
||||||
|
sublen = strlen(finfo.cFileName);
|
||||||
|
if ((dirlen+1+sublen+1+keylen+1) > sizeof(path))
|
||||||
|
continue; /* Path does not fit, assume not matched */
|
||||||
|
strncpy(path+dirlen+1, finfo.cFileName, sublen);
|
||||||
|
path[dirlen+1+sublen] = '\\';
|
||||||
|
strncpy(path+dirlen+1+sublen+1, keypath, keylen+1);
|
||||||
|
if (FileExists(path)) {
|
||||||
|
/* Found a match, print to stdout */
|
||||||
|
path[dirlen+1+sublen] = '\0';
|
||||||
|
QualifyPath(path);
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while (FindNextFile(hSearch, &finfo));
|
||||||
|
FindClose(hSearch);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LocateDependency --
|
||||||
|
*
|
||||||
|
* Locates a dependency for a package.
|
||||||
|
* keypath - a relative path within the package directory
|
||||||
|
* that is used to confirm it is the correct directory.
|
||||||
|
* The search path for the package directory is currently only
|
||||||
|
* the parent and grandparent of the current working directory.
|
||||||
|
* If found, the command prints
|
||||||
|
* name_DIRPATH=<full path of located directory>
|
||||||
|
* and returns 0. If not found, does not print anything and returns 1.
|
||||||
|
*/
|
||||||
|
static int LocateDependency(const char *keypath)
|
||||||
|
{
|
||||||
|
int i, ret;
|
||||||
|
static const char *paths[] = {"..", "..\\..", "..\\..\\.."};
|
||||||
|
|
||||||
|
for (i = 0; i < (sizeof(paths)/sizeof(paths[0])); ++i) {
|
||||||
|
ret = LocateDependencyHelper(paths[i], keypath);
|
||||||
|
if (ret == 0)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Local variables:
|
* Local variables:
|
||||||
* mode: c
|
* mode: c
|
||||||
|
@@ -657,6 +657,7 @@ int sqlite3_appendvfs_init(
|
|||||||
(void)pzErrMsg;
|
(void)pzErrMsg;
|
||||||
(void)db;
|
(void)db;
|
||||||
pOrig = sqlite3_vfs_find(0);
|
pOrig = sqlite3_vfs_find(0);
|
||||||
|
if( pOrig==0 ) return SQLITE_ERROR;
|
||||||
apnd_vfs.iVersion = pOrig->iVersion;
|
apnd_vfs.iVersion = pOrig->iVersion;
|
||||||
apnd_vfs.pAppData = pOrig;
|
apnd_vfs.pAppData = pOrig;
|
||||||
apnd_vfs.szOsFile = pOrig->szOsFile + sizeof(ApndFile);
|
apnd_vfs.szOsFile = pOrig->szOsFile + sizeof(ApndFile);
|
||||||
|
@@ -823,6 +823,7 @@ static int cksmRegisterVfs(void){
|
|||||||
sqlite3_vfs *pOrig;
|
sqlite3_vfs *pOrig;
|
||||||
if( sqlite3_vfs_find("cksmvfs")!=0 ) return SQLITE_OK;
|
if( sqlite3_vfs_find("cksmvfs")!=0 ) return SQLITE_OK;
|
||||||
pOrig = sqlite3_vfs_find(0);
|
pOrig = sqlite3_vfs_find(0);
|
||||||
|
if( pOrig==0 ) return SQLITE_ERROR;
|
||||||
cksm_vfs.iVersion = pOrig->iVersion;
|
cksm_vfs.iVersion = pOrig->iVersion;
|
||||||
cksm_vfs.pAppData = pOrig;
|
cksm_vfs.pAppData = pOrig;
|
||||||
cksm_vfs.szOsFile = pOrig->szOsFile + sizeof(CksmFile);
|
cksm_vfs.szOsFile = pOrig->szOsFile + sizeof(CksmFile);
|
||||||
@@ -870,9 +871,6 @@ int sqlite3_cksumvfs_init(
|
|||||||
SQLITE_EXTENSION_INIT2(pApi);
|
SQLITE_EXTENSION_INIT2(pApi);
|
||||||
(void)pzErrMsg; /* not used */
|
(void)pzErrMsg; /* not used */
|
||||||
rc = cksmRegisterFunc(db, 0, 0);
|
rc = cksmRegisterFunc(db, 0, 0);
|
||||||
if( rc==SQLITE_OK ){
|
|
||||||
|
|
||||||
}
|
|
||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
rc = cksmRegisterVfs();
|
rc = cksmRegisterVfs();
|
||||||
}
|
}
|
||||||
|
@@ -559,6 +559,7 @@ int sqlite3_memvfs_init(
|
|||||||
int rc = SQLITE_OK;
|
int rc = SQLITE_OK;
|
||||||
SQLITE_EXTENSION_INIT2(pApi);
|
SQLITE_EXTENSION_INIT2(pApi);
|
||||||
mem_vfs.pAppData = sqlite3_vfs_find(0);
|
mem_vfs.pAppData = sqlite3_vfs_find(0);
|
||||||
|
if( mem_vfs.pAppData==0 ) return SQLITE_ERROR;
|
||||||
mem_vfs.szOsFile = sizeof(MemFile);
|
mem_vfs.szOsFile = sizeof(MemFile);
|
||||||
rc = sqlite3_vfs_register(&mem_vfs, 1);
|
rc = sqlite3_vfs_register(&mem_vfs, 1);
|
||||||
#ifdef MEMVFS_TEST
|
#ifdef MEMVFS_TEST
|
||||||
|
@@ -754,6 +754,7 @@ static int vlogCurrentTimeInt64(sqlite3_vfs *pVfs, sqlite3_int64 *p){
|
|||||||
*/
|
*/
|
||||||
int sqlite3_register_vfslog(const char *zArg){
|
int sqlite3_register_vfslog(const char *zArg){
|
||||||
vlog_vfs.pVfs = sqlite3_vfs_find(0);
|
vlog_vfs.pVfs = sqlite3_vfs_find(0);
|
||||||
|
if( vlog_vfs.pVfs==0 ) return SQLITE_ERROR;
|
||||||
vlog_vfs.base.szOsFile = sizeof(VLogFile) + vlog_vfs.pVfs->szOsFile;
|
vlog_vfs.base.szOsFile = sizeof(VLogFile) + vlog_vfs.pVfs->szOsFile;
|
||||||
return sqlite3_vfs_register(&vlog_vfs.base, 1);
|
return sqlite3_vfs_register(&vlog_vfs.base, 1);
|
||||||
}
|
}
|
||||||
|
@@ -806,6 +806,7 @@ int sqlite3_vfsstat_init(
|
|||||||
int rc = SQLITE_OK;
|
int rc = SQLITE_OK;
|
||||||
SQLITE_EXTENSION_INIT2(pApi);
|
SQLITE_EXTENSION_INIT2(pApi);
|
||||||
vstat_vfs.pVfs = sqlite3_vfs_find(0);
|
vstat_vfs.pVfs = sqlite3_vfs_find(0);
|
||||||
|
if( vstat_vfs.pVfs==0 ) return SQLITE_ERROR;
|
||||||
vstat_vfs.base.szOsFile = sizeof(VStatFile) + vstat_vfs.pVfs->szOsFile;
|
vstat_vfs.base.szOsFile = sizeof(VStatFile) + vstat_vfs.pVfs->szOsFile;
|
||||||
rc = sqlite3_vfs_register(&vstat_vfs.base, 1);
|
rc = sqlite3_vfs_register(&vstat_vfs.base, 1);
|
||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
|
@@ -1486,6 +1486,7 @@ static int zipfileBegin(sqlite3_vtab *pVtab){
|
|||||||
static u32 zipfileTime(void){
|
static u32 zipfileTime(void){
|
||||||
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
|
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
|
||||||
u32 ret;
|
u32 ret;
|
||||||
|
if( pVfs==0 ) return 0;
|
||||||
if( pVfs->iVersion>=2 && pVfs->xCurrentTimeInt64 ){
|
if( pVfs->iVersion>=2 && pVfs->xCurrentTimeInt64 ){
|
||||||
i64 ms;
|
i64 ms;
|
||||||
pVfs->xCurrentTimeInt64(pVfs, &ms);
|
pVfs->xCurrentTimeInt64(pVfs, &ms);
|
||||||
|
@@ -56,7 +56,7 @@ void usage(const char *zArgv0){
|
|||||||
|
|
||||||
void report_default_vfs(){
|
void report_default_vfs(){
|
||||||
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
|
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
|
||||||
fprintf(stdout, "default vfs is \"%s\"\n", pVfs->zName);
|
fprintf(stdout, "default vfs is \"%s\"\n", pVfs ? pVfs->zName : "NULL");
|
||||||
}
|
}
|
||||||
|
|
||||||
void report_rbu_vfs(sqlite3rbu *pRbu){
|
void report_rbu_vfs(sqlite3rbu *pRbu){
|
||||||
|
@@ -25,6 +25,11 @@ if {[permutation]=="session_strm" || [permutation]=="session_eec"} {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if {$::tcl_platform(pointerSize)<8} {
|
||||||
|
finish_test
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
set testprefix sessionbig
|
set testprefix sessionbig
|
||||||
|
|
||||||
forcedelete test.db2
|
forcedelete test.db2
|
||||||
|
72
manifest
72
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Update\sthis\sbranch\swith\slatest\schanges\sfrom\strunk.
|
C Merge\srecent\strunk\senhancements\sinto\sreuse-schema\sbranch.
|
||||||
D 2021-06-14T14:35:33.557
|
D 2021-06-17T17:26:53.514
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -29,7 +29,7 @@ F autoconf/tea/pkgIndex.tcl.in 3ef61715cf1c7bdcff56947ffadb26bc991ca39d
|
|||||||
F autoconf/tea/tclconfig/install-sh bdd5e293591621ae60d9824d86a4b1c5f22c3d00
|
F autoconf/tea/tclconfig/install-sh bdd5e293591621ae60d9824d86a4b1c5f22c3d00
|
||||||
F autoconf/tea/tclconfig/tcl.m4 66ddf0a5d5e4b1d29bff472c0985fd7fa89d0fb5
|
F autoconf/tea/tclconfig/tcl.m4 66ddf0a5d5e4b1d29bff472c0985fd7fa89d0fb5
|
||||||
F autoconf/tea/win/makefile.vc a5ff708245260c2794c6aaa0151efe5403d5896566eaf096747be0d9075284e4
|
F autoconf/tea/win/makefile.vc a5ff708245260c2794c6aaa0151efe5403d5896566eaf096747be0d9075284e4
|
||||||
F autoconf/tea/win/nmakehlp.c 247538ad8e8c508f33c03ec1fbd67d3a07ef6291
|
F autoconf/tea/win/nmakehlp.c 190bf8b40f6f90eeb6cbc1e5c13a19fc7ad870e479e0314c88174f71bf9e28a7
|
||||||
F autoconf/tea/win/rules.vc c511f222b80064096b705dbeb97060ee1d6b6d63
|
F autoconf/tea/win/rules.vc c511f222b80064096b705dbeb97060ee1d6b6d63
|
||||||
F config.guess 883205ddf25b46f10c181818bf42c09da9888884af96f79e1719264345053bd6
|
F config.guess 883205ddf25b46f10c181818bf42c09da9888884af96f79e1719264345053bd6
|
||||||
F config.h.in 6376abec766e9a0785178b1823b5a587e9f1ccbc
|
F config.h.in 6376abec766e9a0785178b1823b5a587e9f1ccbc
|
||||||
@@ -287,12 +287,12 @@ F ext/lsm1/tool/mklsm1c.tcl f31561bbee5349f0a554d1ad7236ac1991fc09176626f529f607
|
|||||||
F ext/misc/README.md d6dd0fe1d8af77040216798a6a2b0c46c73054d2f0ea544fbbcdccf6f238c240
|
F ext/misc/README.md d6dd0fe1d8af77040216798a6a2b0c46c73054d2f0ea544fbbcdccf6f238c240
|
||||||
F ext/misc/amatch.c e3ad5532799cee9a97647f483f67f43b38796b84b5a8c60594fe782a4338f358
|
F ext/misc/amatch.c e3ad5532799cee9a97647f483f67f43b38796b84b5a8c60594fe782a4338f358
|
||||||
F ext/misc/anycollseq.c 5ffdfde9829eeac52219136ad6aa7cd9a4edb3b15f4f2532de52f4a22525eddb
|
F ext/misc/anycollseq.c 5ffdfde9829eeac52219136ad6aa7cd9a4edb3b15f4f2532de52f4a22525eddb
|
||||||
F ext/misc/appendvfs.c 500fef0736caafc629ca1dbae348a121367eaa4ed8c385c291cb9ad65ea790fb
|
F ext/misc/appendvfs.c 9642c7a194a2a25dca7ad3e36af24a0a46d7702168c4ad7e59c9f9b0e16a3824
|
||||||
F ext/misc/blobio.c a867c4c4617f6ec223a307ebfe0eabb45e0992f74dd47722b96f3e631c0edb2a
|
F ext/misc/blobio.c a867c4c4617f6ec223a307ebfe0eabb45e0992f74dd47722b96f3e631c0edb2a
|
||||||
F ext/misc/btreeinfo.c d28ce349b40054eaa9473e835837bad7a71deec33ba13e39f963d50933bfa0f9
|
F ext/misc/btreeinfo.c d28ce349b40054eaa9473e835837bad7a71deec33ba13e39f963d50933bfa0f9
|
||||||
F ext/misc/carray.c b75a0f207391038bf1540d3372f482a95c3613511c7c474db51ede1196321c7c
|
F ext/misc/carray.c b75a0f207391038bf1540d3372f482a95c3613511c7c474db51ede1196321c7c
|
||||||
F ext/misc/carray.h de74ac70b2338f416723f7d538026e8ec0b7f1d388319f8f140c9a4d7677f02e
|
F ext/misc/carray.h de74ac70b2338f416723f7d538026e8ec0b7f1d388319f8f140c9a4d7677f02e
|
||||||
F ext/misc/cksumvfs.c 2c6b07714f3be6c1200671c53aa781a86d2c472c0fcb2fff520375362eb94303
|
F ext/misc/cksumvfs.c b42ef52eaaa510d54ec320c87bea149e934a3b06cd232be2093562bf669bd572
|
||||||
F ext/misc/closure.c dbfd8543b2a017ae6b1a5843986b22ddf99ff126ec9634a2f4047cd14c85c243
|
F ext/misc/closure.c dbfd8543b2a017ae6b1a5843986b22ddf99ff126ec9634a2f4047cd14c85c243
|
||||||
F ext/misc/completion.c 6dafd7f4348eecc7be9e920d4b419d1fb2af75d938cd9c59a20cfe8beb2f22b9
|
F ext/misc/completion.c 6dafd7f4348eecc7be9e920d4b419d1fb2af75d938cd9c59a20cfe8beb2f22b9
|
||||||
F ext/misc/compress.c 3354c77a7c8e86e07d849916000cdac451ed96500bfb5bd83b20eb61eee012c9
|
F ext/misc/compress.c 3354c77a7c8e86e07d849916000cdac451ed96500bfb5bd83b20eb61eee012c9
|
||||||
@@ -309,7 +309,7 @@ F ext/misc/ieee754.c cd6ab89f85fda8a020559b3f4d03001a8a62dd856beda5af3f558621d12
|
|||||||
F ext/misc/json1.c 76c5d9e0960fd15b4be79dacb76d872b4d0d983ce13e72ebfe9481d82cb9345d
|
F ext/misc/json1.c 76c5d9e0960fd15b4be79dacb76d872b4d0d983ce13e72ebfe9481d82cb9345d
|
||||||
F ext/misc/memstat.c 3017a0832c645c0f8c773435620d663855f04690172316bd127270d1a7523d4d
|
F ext/misc/memstat.c 3017a0832c645c0f8c773435620d663855f04690172316bd127270d1a7523d4d
|
||||||
F ext/misc/memtrace.c 7c0d115d2ef716ad0ba632c91e05bd119cb16c1aedf3bec9f06196ead2d5537b
|
F ext/misc/memtrace.c 7c0d115d2ef716ad0ba632c91e05bd119cb16c1aedf3bec9f06196ead2d5537b
|
||||||
F ext/misc/memvfs.c ab36f49e02ebcdf85a1e08dc4d8599ea8f343e073ac9e0bca18a98b7e1ec9567
|
F ext/misc/memvfs.c 7dffa8cc89c7f2d73da4bd4ccea1bcbd2bd283e3bb4cea398df7c372a197291b
|
||||||
F ext/misc/mmapwarm.c 347caa99915fb254e8949ec131667b7fae99e2a9ce91bd468efb6dc372d9b7a9
|
F ext/misc/mmapwarm.c 347caa99915fb254e8949ec131667b7fae99e2a9ce91bd468efb6dc372d9b7a9
|
||||||
F ext/misc/nextchar.c 7877914c2a80c2f181dd04c3dbef550dfb54c93495dc03da2403b5dd58f34edd
|
F ext/misc/nextchar.c 7877914c2a80c2f181dd04c3dbef550dfb54c93495dc03da2403b5dd58f34edd
|
||||||
F ext/misc/noop.c 81efe4cad9ec740e64388b14281cb983e6e2c223fed43eb77ab3e34946e0c1ab
|
F ext/misc/noop.c 81efe4cad9ec740e64388b14281cb983e6e2c223fed43eb77ab3e34946e0c1ab
|
||||||
@@ -333,14 +333,14 @@ F ext/misc/uint.c 053fed3bce2e89583afcd4bf804d75d659879bbcedac74d0fa9ed548839a03
|
|||||||
F ext/misc/unionvtab.c 36237f0607ca954ac13a4a0e2d2ac40c33bc6e032a5f55f431713061ef1625f9
|
F ext/misc/unionvtab.c 36237f0607ca954ac13a4a0e2d2ac40c33bc6e032a5f55f431713061ef1625f9
|
||||||
F ext/misc/urifuncs.c f71360d14fa9e7626b563f1f781c6148109462741c5235ac63ae0f8917b9c751
|
F ext/misc/urifuncs.c f71360d14fa9e7626b563f1f781c6148109462741c5235ac63ae0f8917b9c751
|
||||||
F ext/misc/uuid.c 5bb2264c1b64d163efa46509544fd7500cb8769cb7c16dd52052da8d961505cf
|
F ext/misc/uuid.c 5bb2264c1b64d163efa46509544fd7500cb8769cb7c16dd52052da8d961505cf
|
||||||
F ext/misc/vfslog.c 3b25c2f56ba60788db247287be6ab024b53c4afffd412b4876db563389be0d35
|
F ext/misc/vfslog.c 3932ab932eeb2601dbc4447cb14d445aaa9fbe43b863ef5f014401c3420afd20
|
||||||
F ext/misc/vfsstat.c 389ea13983d3af926504c314f06a83cc858d5adc24b40af74aaed1fece00c118
|
F ext/misc/vfsstat.c 474d08efc697b8eba300082cb1eb74a5f0f3df31ed257db1cb07e72ab0e53dfb
|
||||||
F ext/misc/vtablog.c 5538acd0c8ddaae372331bee11608d76973436b77d6a91e8635cfc9432fba5ae
|
F ext/misc/vtablog.c 5538acd0c8ddaae372331bee11608d76973436b77d6a91e8635cfc9432fba5ae
|
||||||
F ext/misc/vtshim.c 1976e6dd68dd0d64508c91a6dfab8e75f8aaf6cd
|
F ext/misc/vtshim.c 1976e6dd68dd0d64508c91a6dfab8e75f8aaf6cd
|
||||||
F ext/misc/wholenumber.c a838d1bea913c514ff316c69695efbb49ea3b8cb37d22afc57f73b6b010b4546
|
F ext/misc/wholenumber.c a838d1bea913c514ff316c69695efbb49ea3b8cb37d22afc57f73b6b010b4546
|
||||||
F ext/misc/zipfile.c acbad31bd9c9ec3540fa72b2e3fcd6f757eb33117d51528c0e13d0da5c836908
|
F ext/misc/zipfile.c b7261ef6dbc2d18924ff80c40fb5d56c9ccfee3f822a7d3d43b7c87af3d27218
|
||||||
F ext/misc/zorder.c b0ff58fa643afa1d846786d51ea8d5c4b6b35aa0254ab5a82617db92f3adda64
|
F ext/misc/zorder.c b0ff58fa643afa1d846786d51ea8d5c4b6b35aa0254ab5a82617db92f3adda64
|
||||||
F ext/rbu/rbu.c b880ca5cb857d6d6f52e72eb7397813058ef48c78c5402cd04ff2b6b5437f622
|
F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8
|
||||||
F ext/rbu/rbu1.test c62904bd9526dcdc3496a21199aaf14ae191bbadbf67f076bf16be6b3f2115c2
|
F ext/rbu/rbu1.test c62904bd9526dcdc3496a21199aaf14ae191bbadbf67f076bf16be6b3f2115c2
|
||||||
F ext/rbu/rbu10.test 0a201c32202143f23c81c0144503da339786fc20acb7a2fda11601b65659f314
|
F ext/rbu/rbu10.test 0a201c32202143f23c81c0144503da339786fc20acb7a2fda11601b65659f314
|
||||||
F ext/rbu/rbu11.test 5c834cf491086b45e071eabf71f708febc143e86a384a92de69e0b1a4cace144
|
F ext/rbu/rbu11.test 5c834cf491086b45e071eabf71f708febc143e86a384a92de69e0b1a4cace144
|
||||||
@@ -447,7 +447,7 @@ F ext/session/sessionH.test b17afdbd3b8f17e9bab91e235acf167cf35485db2ab2df0ea889
|
|||||||
F ext/session/session_common.tcl f613174665456b2d916ae8df3e5735092a1c1712f36f46840172e9a01e8cc53e
|
F ext/session/session_common.tcl f613174665456b2d916ae8df3e5735092a1c1712f36f46840172e9a01e8cc53e
|
||||||
F ext/session/session_speed_test.c dcf0ef58d76b70c8fbd9eab3be77cf9deb8bc1638fed8be518b62d6cbdef88b3
|
F ext/session/session_speed_test.c dcf0ef58d76b70c8fbd9eab3be77cf9deb8bc1638fed8be518b62d6cbdef88b3
|
||||||
F ext/session/sessionat.test efe88965e74ff1bc2af9c310b28358c02d420c1fb2705cc7a28f0c1cc142c3ec
|
F ext/session/sessionat.test efe88965e74ff1bc2af9c310b28358c02d420c1fb2705cc7a28f0c1cc142c3ec
|
||||||
F ext/session/sessionbig.test 5851fc7f9981e2ccf1c7d9e7cb239dc530db07d5e878ebbb2f6d993d27872a43
|
F ext/session/sessionbig.test 890ade19e3f80f3d3a3e83821ff79c5e2af906a67ecb5450879f0015cadf101e
|
||||||
F ext/session/sessiondiff.test ad13dd65664bae26744e1f18eb3cbd5588349b7e9118851d8f9364248d67bcec
|
F ext/session/sessiondiff.test ad13dd65664bae26744e1f18eb3cbd5588349b7e9118851d8f9364248d67bcec
|
||||||
F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7
|
F ext/session/sessionfault.test da273f2712b6411e85e71465a1733b8501dbf6f7
|
||||||
F ext/session/sessionfault2.test dd593f80b6b4786f7adfe83c5939620bc505559770cc181332da26f29cddd7bb
|
F ext/session/sessionfault2.test dd593f80b6b4786f7adfe83c5939620bc505559770cc181332da26f29cddd7bb
|
||||||
@@ -479,7 +479,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
|
|||||||
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
|
||||||
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
|
||||||
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
|
||||||
F src/alter.c f110886a20e92b66fa6f7c3ab29a490ea74b882b6b2d8775a6fc91dbe811eec3
|
F src/alter.c 7ea3ac556f07519db009f5e273094bfe6f3b1e2986692dbd955ea59c1aac7ede
|
||||||
F src/analyze.c 8b522a57784406d75f544e6d67f3fe7a7196702d3d954b7678bb4b4fe789e5a4
|
F src/analyze.c 8b522a57784406d75f544e6d67f3fe7a7196702d3d954b7678bb4b4fe789e5a4
|
||||||
F src/attach.c 74fab1b71a5fef866eae143aa5fa8c66174a4aa5829189764948e621ad3adbd6
|
F src/attach.c 74fab1b71a5fef866eae143aa5fa8c66174a4aa5829189764948e621ad3adbd6
|
||||||
F src/auth.c 08954fdc4cc2da5264ba5b75cfd90b67a6fc7d1710a02ccf917c38eadec77853
|
F src/auth.c 08954fdc4cc2da5264ba5b75cfd90b67a6fc7d1710a02ccf917c38eadec77853
|
||||||
@@ -489,7 +489,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
|
|||||||
F src/btree.c 399e1ebcd6c4f9ad47f5457bfe3623441db287f0923433cf6539497791557be8
|
F src/btree.c 399e1ebcd6c4f9ad47f5457bfe3623441db287f0923433cf6539497791557be8
|
||||||
F src/btree.h 096cc53baa58be22b02c896d1cf933c38cfc6d65f9253c1367ece8cc88a24de5
|
F src/btree.h 096cc53baa58be22b02c896d1cf933c38cfc6d65f9253c1367ece8cc88a24de5
|
||||||
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
|
F src/btreeInt.h 7bc15a24a02662409ebcd6aeaa1065522d14b7fda71573a2b0568b458f514ae0
|
||||||
F src/build.c 817a3521be208a51d0129a2e02797c2fd82e7dfde63ee6f640ded720aee96d4a
|
F src/build.c 26f1e22077a9b61f571c0c678fb30938d412d73cc14ae57ce469534142f14d07
|
||||||
F src/callback.c d8cdf5d697a31cf54a2b64bce9001fe24f3522a566f44c9fe1eb3a0c7e291c56
|
F src/callback.c d8cdf5d697a31cf54a2b64bce9001fe24f3522a566f44c9fe1eb3a0c7e291c56
|
||||||
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
|
||||||
F src/ctime.c 1ee55d93b848c88b1a333a19e923b58e1bb328d95edb5bc5be9cc94794c6998d
|
F src/ctime.c 1ee55d93b848c88b1a333a19e923b58e1bb328d95edb5bc5be9cc94794c6998d
|
||||||
@@ -500,7 +500,7 @@ F src/delete.c 62451bba9fe641159e9c0b7d9d2bab1c48d0cff11e16de2d14000603d2af1fcf
|
|||||||
F src/expr.c 30a2abf526531ce6bd45fbc85bfec0fc3f6e5a0fb490cd2350855f2fc34dd789
|
F src/expr.c 30a2abf526531ce6bd45fbc85bfec0fc3f6e5a0fb490cd2350855f2fc34dd789
|
||||||
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
|
||||||
F src/fkey.c 6dcbab4ead1dbfdc19da70a8650e5734a5124765f75fb840100117a7a45980d2
|
F src/fkey.c 6dcbab4ead1dbfdc19da70a8650e5734a5124765f75fb840100117a7a45980d2
|
||||||
F src/func.c 88fd711754a7241cb9f8eb1391370fd0c0cea756b3358efa274c5d1efd59af93
|
F src/func.c 9eb67f0aaf1cf439c21d6fc8afe270973d6e8345af3f1ebda98ad42186d30f5b
|
||||||
F src/global.c 25ba4d58476f6be29bba9d9d14f7f146b78476d3a4d75ebb8c3b736328afe0f9
|
F src/global.c 25ba4d58476f6be29bba9d9d14f7f146b78476d3a4d75ebb8c3b736328afe0f9
|
||||||
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
F src/hash.c 8d7dda241d0ebdafb6ffdeda3149a412d7df75102cecfc1021c98d6219823b19
|
||||||
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
F src/hash.h 9d56a9079d523b648774c1784b74b89bd93fac7b365210157482e4319a468f38
|
||||||
@@ -509,14 +509,14 @@ F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
|
|||||||
F src/insert.c 2189e0e596010a0dc5405d9f14f78db1ee2fa71138c931f5b6ea96610b95bfc1
|
F src/insert.c 2189e0e596010a0dc5405d9f14f78db1ee2fa71138c931f5b6ea96610b95bfc1
|
||||||
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa
|
||||||
F src/loadext.c 12684b3f19cd103cea97cdf14d0758196d0c646e12a898d7245141a9abfde9a4
|
F src/loadext.c 12684b3f19cd103cea97cdf14d0758196d0c646e12a898d7245141a9abfde9a4
|
||||||
F src/main.c 76caa2fdc09e8621b66d17ef5467daae442a0a73dee9522f8b6930b6e154d065
|
F src/main.c 38617b2852922714056d996fab95f012abc62a69292e66d817ab411659891dfb
|
||||||
F src/malloc.c cbc93cdd429c4594912017d92ab656e2579aca64dbd1c6888551275bed46f25b
|
F src/malloc.c cbc93cdd429c4594912017d92ab656e2579aca64dbd1c6888551275bed46f25b
|
||||||
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
|
F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
|
||||||
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
|
F src/mem1.c c12a42539b1ba105e3707d0e628ad70e611040d8f5e38cf942cee30c867083de
|
||||||
F src/mem2.c b93b8762ab999a29ae7751532dadf0a1ac78040308a5fb1d17fcc365171d67eb
|
F src/mem2.c b93b8762ab999a29ae7751532dadf0a1ac78040308a5fb1d17fcc365171d67eb
|
||||||
F src/mem3.c 30301196cace2a085cbedee1326a49f4b26deff0af68774ca82c1f7c06fda4f6
|
F src/mem3.c 30301196cace2a085cbedee1326a49f4b26deff0af68774ca82c1f7c06fda4f6
|
||||||
F src/mem5.c 9bf955937b07f8c32541c8a9991f33ce3173d944
|
F src/mem5.c 9bf955937b07f8c32541c8a9991f33ce3173d944
|
||||||
F src/memdb.c f6ce717b26cd51a24cda62fce611b4b72b3db367113374aa498e489a69470715
|
F src/memdb.c 2f2e8efc6e531c59cf8255f0bf4ad81f2e88e0a394581244154c8cf5141757ce
|
||||||
F src/memjournal.c a85f0dc5c02a42453d0bc3819ecfb5666cb6433e5deefcd93ccbe05c9f088b83
|
F src/memjournal.c a85f0dc5c02a42453d0bc3819ecfb5666cb6433e5deefcd93ccbe05c9f088b83
|
||||||
F src/msvc.h 3a15918220367a8876be3fa4f2abe423a861491e84b864fb2b7426bf022a28f8
|
F src/msvc.h 3a15918220367a8876be3fa4f2abe423a861491e84b864fb2b7426bf022a28f8
|
||||||
F src/mutex.c 5e3409715552348732e97b9194abe92fdfcd934cfb681df4ba0ab87ac6c18d25
|
F src/mutex.c 5e3409715552348732e97b9194abe92fdfcd934cfb681df4ba0ab87ac6c18d25
|
||||||
@@ -529,7 +529,7 @@ F src/os.c 59ed1f503347e8b5434c0ce7d7d0f02a3f24a72fea8b26d0bba2de8dfaef778b
|
|||||||
F src/os.h 26890f540b475598cd9881dcc68931377b8d429d3ea3e2eeb64470cde64199f8
|
F src/os.h 26890f540b475598cd9881dcc68931377b8d429d3ea3e2eeb64470cde64199f8
|
||||||
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
|
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
|
||||||
F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
|
F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
|
||||||
F src/os_unix.c efa60c1cb54dba767abbba3c6dd67d3df5ef8aa26e2e499c37f055f56a374068
|
F src/os_unix.c feac74a0ba7652c405ba30f61d9e738be717d15899f2915a129ef160a3e5b26b
|
||||||
F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
|
F src/os_win.c 77d39873836f1831a9b0b91894fec45ab0e9ca8e067dc8c549e1d1eca1566fe9
|
||||||
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
|
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
|
||||||
F src/pager.c 95c255256b13827caf038c8f963d334784073f38ab6ef9d70371d9d04f3c43e0
|
F src/pager.c 95c255256b13827caf038c8f963d334784073f38ab6ef9d70371d9d04f3c43e0
|
||||||
@@ -542,15 +542,15 @@ F src/pragma.c 300dcb000f9ac0ac35c913f5e232234275e5007d25147a6915e4ae06b4afd662
|
|||||||
F src/pragma.h ce2b135cde481eeb198af0dfc4781d58528ce80b17580a2b747b8fd4bc969e44
|
F src/pragma.h ce2b135cde481eeb198af0dfc4781d58528ce80b17580a2b747b8fd4bc969e44
|
||||||
F src/prepare.c 3668279bfdec5e58e54a284b068d36746efadd5b2ecbb7475f3a1d12a8297653
|
F src/prepare.c 3668279bfdec5e58e54a284b068d36746efadd5b2ecbb7475f3a1d12a8297653
|
||||||
F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b
|
F src/printf.c 78fabb49b9ac9a12dd1c89d744abdc9b67fd3205e62967e158f78b965a29ec4b
|
||||||
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
F src/random.c 097dc8b31b8fba5a9aca1697aeb9fd82078ec91be734c16bffda620ced7ab83c
|
||||||
F src/resolve.c 35630effd4d16d2373caa41bae40a3d71f853f3ad0cb4f572f2ed4b8c350c1e9
|
F src/resolve.c 35630effd4d16d2373caa41bae40a3d71f853f3ad0cb4f572f2ed4b8c350c1e9
|
||||||
F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
|
F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
|
||||||
F src/select.c 371cf15116b20b236f099c15daafd2ab6ef4bba43a263100aef60506f25cb3ff
|
F src/select.c 4fa607bab6bcc580f12dbaf9c800b2250a1e408f10321a1d3bcb1dd30c447e62
|
||||||
F src/shell.c.in a8230d4150b3ed4a2a82e966bc9fd49372fe7d2fabe93f829b1bc766fdbe2e4d
|
F src/shell.c.in b74c72fe42e054af48e0fc02069bbf094ec0eee5310c264d94385da55c3742ef
|
||||||
F src/sqlite.h.in 73a6425c6ba482e6b99c130e03ab3385cc9e4b7313f8ed99969c47488fb099b5
|
F src/sqlite.h.in 8e559f3ab1329de8aeb5091dc0b2680a36f09fc556c1d05a878300ef93f3e4fd
|
||||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||||
F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e
|
F src/sqlite3ext.h 61b38c073d5e1e96a3d45271b257aef27d0d13da2bea5347692ae579475cd95e
|
||||||
F src/sqliteInt.h c2f3217d0cb8aee8db9e4a60add1384f19f8d6f07950e3949560a39278039bea
|
F src/sqliteInt.h 3e236c3a570214d3eb5777bd9cfe58a35179c1ad36432f17b1a45c2d5d43d81f
|
||||||
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
|
F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657
|
||||||
F src/status.c d0956e57c71160155f620a3efeb1e5c05a3f8b9a897dd09c5263268e5d237579
|
F src/status.c d0956e57c71160155f620a3efeb1e5c05a3f8b9a897dd09c5263268e5d237579
|
||||||
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
|
||||||
@@ -625,7 +625,7 @@ F src/vdbeapi.c aa5aaf2c37676b83af5724c6cd8207a3064ed46a217fd180957f75ac84f7a2a5
|
|||||||
F src/vdbeaux.c da8c06b87ff71a25a2eace72721f4506bd8a2bab87828413dbf33c77b8326f44
|
F src/vdbeaux.c da8c06b87ff71a25a2eace72721f4506bd8a2bab87828413dbf33c77b8326f44
|
||||||
F src/vdbeblob.c 3356ecdb98661972977744bb5c66c9cc02c0fc512267e749949b6d8b792dabe4
|
F src/vdbeblob.c 3356ecdb98661972977744bb5c66c9cc02c0fc512267e749949b6d8b792dabe4
|
||||||
F src/vdbemem.c 53881aa0a7845922a075b3f375695588618098871a7a4120af4c297b80fa3e64
|
F src/vdbemem.c 53881aa0a7845922a075b3f375695588618098871a7a4120af4c297b80fa3e64
|
||||||
F src/vdbesort.c f5b5e473a7cee44e47a94817b042fd7172cf3aa2c0a7928a8339d612bcfdec5a
|
F src/vdbesort.c cd5130f683706c1a43e165a74187745fb3351cb56052cf9dc91de820634bbde2
|
||||||
F src/vdbetrace.c 666c6fd9f1b62be6999e072a45b913e3c2c3518bc60dfd4d54fe304130acb724
|
F src/vdbetrace.c 666c6fd9f1b62be6999e072a45b913e3c2c3518bc60dfd4d54fe304130acb724
|
||||||
F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
|
F src/vdbevtab.c f99b275366c5fc5e2d99f734729880994ab9500bdafde7fae3b02d562b9d323c
|
||||||
F src/vtab.c b567ce416e332442ec51ccc7f1ac6059d1e32058cdfc8bceaf57d39b4150b094
|
F src/vtab.c b567ce416e332442ec51ccc7f1ac6059d1e32058cdfc8bceaf57d39b4150b094
|
||||||
@@ -633,7 +633,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
|||||||
F src/wal.c c8ec20a1ca161d5635a4f19c2a4efec2e006e19a8a61f272bf6bce1c80ab7436
|
F src/wal.c c8ec20a1ca161d5635a4f19c2a4efec2e006e19a8a61f272bf6bce1c80ab7436
|
||||||
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
|
F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a
|
||||||
F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac
|
F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac
|
||||||
F src/where.c dc062832c30aa6c5f17805c1235b2b621cd9db506412d5d3ef0799d26ae3396f
|
F src/where.c 4caf843825c6292440113258fefaa6f747fd570c6915628957e42e39529988f5
|
||||||
F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b
|
F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b
|
||||||
F src/wherecode.c 9f1f65d11437b25cd0a1497a170514c785f19ce6ad9d3e6fc73719cb5a49012f
|
F src/wherecode.c 9f1f65d11437b25cd0a1497a170514c785f19ce6ad9d3e6fc73719cb5a49012f
|
||||||
F src/whereexpr.c 5a9c9f5d2dac4bcdcaae3035034b4667523f731df228e0bb1d4efc669efa9da5
|
F src/whereexpr.c 5a9c9f5d2dac4bcdcaae3035034b4667523f731df228e0bb1d4efc669efa9da5
|
||||||
@@ -660,7 +660,7 @@ F test/altermalloc.test 167a47de41b5c638f5f5c6efb59784002b196fff70f98d9b4ed3cd74
|
|||||||
F test/altermalloc2.test ca3ebc01670d9313953a2b7628d8cc00dc5ea9988f229b3cbbbe1cca506dae45
|
F test/altermalloc2.test ca3ebc01670d9313953a2b7628d8cc00dc5ea9988f229b3cbbbe1cca506dae45
|
||||||
F test/altermalloc3.test 059841a3de6b6780efd9f0b30bf1d9b4443c555f68d39975cbcac2583167b239
|
F test/altermalloc3.test 059841a3de6b6780efd9f0b30bf1d9b4443c555f68d39975cbcac2583167b239
|
||||||
F test/alterqf.test 67568ad152db8c1187b15633b801242cf960f1beafc51261a3d1725d910baeb2
|
F test/alterqf.test 67568ad152db8c1187b15633b801242cf960f1beafc51261a3d1725d910baeb2
|
||||||
F test/altertab.test 4120b9b2baa96ef2b0aaf4dd46b1858171503edf5e346b5ce939c73b4d314fa6
|
F test/altertab.test 466b9757630d68455080690b6e99c5ff11b199df4b3530e17f3df10a63aa05d3
|
||||||
F test/altertab2.test b0d62f323ca5dab42b0bc028c52e310ebdd13e655e8fac070fe622bad7852c2b
|
F test/altertab2.test b0d62f323ca5dab42b0bc028c52e310ebdd13e655e8fac070fe622bad7852c2b
|
||||||
F test/altertab3.test 2b82fa2236a3a91553d53ae5555d8e723c7eec174c41f1fa62ff497355398479
|
F test/altertab3.test 2b82fa2236a3a91553d53ae5555d8e723c7eec174c41f1fa62ff497355398479
|
||||||
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
|
F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
|
||||||
@@ -692,7 +692,7 @@ F test/attach2.test 256bd240da1835fb8408dd59fb7ef71f8358c7a756c46662434d11d07ba3
|
|||||||
F test/attach3.test c59d92791070c59272e00183b7353eeb94915976
|
F test/attach3.test c59d92791070c59272e00183b7353eeb94915976
|
||||||
F test/attach4.test 00e754484859998d124d144de6d114d920f2ed6ca2f961e6a7f4183c714f885e
|
F test/attach4.test 00e754484859998d124d144de6d114d920f2ed6ca2f961e6a7f4183c714f885e
|
||||||
F test/attachmalloc.test 12c4f028e570acf9e0a4b0b7fe6f536e21f3d5ebddcece423603d0569beaf438
|
F test/attachmalloc.test 12c4f028e570acf9e0a4b0b7fe6f536e21f3d5ebddcece423603d0569beaf438
|
||||||
F test/auth.test 2154625c05bc79f0e0ea72cb2358395a8041243caa0fd7ce7617d50da4331794
|
F test/auth.test 567d917e0baddb6d0026a251cff977a3ab2c805a3cef906ba8653aafe7ad7240
|
||||||
F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
|
F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
|
||||||
F test/auth3.test db21405b95257c24d29273b6b31d0efc59e1d337e3d5804ba2d1fd4897b1ae49
|
F test/auth3.test db21405b95257c24d29273b6b31d0efc59e1d337e3d5804ba2d1fd4897b1ae49
|
||||||
F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
|
F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
|
||||||
@@ -804,7 +804,7 @@ F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4
|
|||||||
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
|
F test/corruptK.test 5b4212fe346699831c5ad559a62c54e11c0611bdde1ea8423a091f9c01aa32af
|
||||||
F test/corruptL.test df132ba9ffd6fa15038380b4154998b9904ab8f1ea78400d7da53c920cb3b13d
|
F test/corruptL.test df132ba9ffd6fa15038380b4154998b9904ab8f1ea78400d7da53c920cb3b13d
|
||||||
F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
|
F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
|
||||||
F test/corruptN.test f56e3417fe9a444efd765ae55acbe65595d7b8f747785fe0fd785dbdc424932a
|
F test/corruptN.test c2a96ff81386027f7d7e95858783aa36f82ba1532106969575e3c8f90903a5bb
|
||||||
F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
|
F test/cost.test b11cdbf9f11ffe8ef99c9881bf390e61fe92baf2182bad1dbe6de59a7295c576
|
||||||
F test/count.test 5364003488249957750a5f15ee42ca1cd7b100b1131c2dc71fff266a1250bf55
|
F test/count.test 5364003488249957750a5f15ee42ca1cd7b100b1131c2dc71fff266a1250bf55
|
||||||
F test/countofview.test e17d6e6688cf74f22783c9ec6e788c0790ee4fbbaee713affd00b1ac0bb39b86
|
F test/countofview.test e17d6e6688cf74f22783c9ec6e788c0790ee4fbbaee713affd00b1ac0bb39b86
|
||||||
@@ -865,7 +865,7 @@ F test/e_fts3.test 17ba7c373aba4d4f5696ba147ee23fd1a1ef70782af050e03e262ca187c5e
|
|||||||
F test/e_insert.test f02f7f17852b2163732c6611d193f84fc67bc641fb4882c77a464076e5eba80e
|
F test/e_insert.test f02f7f17852b2163732c6611d193f84fc67bc641fb4882c77a464076e5eba80e
|
||||||
F test/e_reindex.test 2b0e29344497d9a8a999453a003cb476b6b1d2eef2d6c120f83c2d3a429f3164
|
F test/e_reindex.test 2b0e29344497d9a8a999453a003cb476b6b1d2eef2d6c120f83c2d3a429f3164
|
||||||
F test/e_resolve.test a61751c368b109db73df0f20fc75fb47e166b1d8
|
F test/e_resolve.test a61751c368b109db73df0f20fc75fb47e166b1d8
|
||||||
F test/e_select.test f9474205669a7736ef725b29cc7ae9e8601919a3d0ffc0ab30745a028f2a4b61
|
F test/e_select.test c5425a423da06d0494119db8361ebfc6de302929f7546ca596d56224137e0360
|
||||||
F test/e_select2.test aceb80ab927d46fba5ce7586ebabf23e2bb0604f
|
F test/e_select2.test aceb80ab927d46fba5ce7586ebabf23e2bb0604f
|
||||||
F test/e_totalchanges.test b12ee5809d3e63aeb83238dd501a7bca7fd72c10
|
F test/e_totalchanges.test b12ee5809d3e63aeb83238dd501a7bca7fd72c10
|
||||||
F test/e_update.test f46c2554d915c9197548681e8d8c33a267e84528
|
F test/e_update.test f46c2554d915c9197548681e8d8c33a267e84528
|
||||||
@@ -1036,7 +1036,7 @@ F test/fts4umlaut.test fcaca4471de7e78c9d1f7e8976e3e8704d7d8ad979d57a739d00f3f75
|
|||||||
F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9
|
F test/fts4unicode.test 82a9c16b68ba2f358a856226bb2ee02f81583797bc4744061c54401bf1a0f4c9
|
||||||
F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d
|
F test/fts4upfrom.test f25835162c989dffd5e2ef91ec24c4848cc9973093e2d492d1c7b32afac1b49d
|
||||||
F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d
|
F test/full.test 6b3c8fb43c6beab6b95438c1675374b95fab245d
|
||||||
F test/func.test f673822636fb8ed618dd2b80230d16e495d19c8f2e2e7d6c22e93e2b3de097ad
|
F test/func.test 77f6ea02c97d9ea64074461d347276a75df22d2cf51045a40f90857569e985f0
|
||||||
F test/func2.test 772d66227e4e6684b86053302e2d74a2500e1e0f
|
F test/func2.test 772d66227e4e6684b86053302e2d74a2500e1e0f
|
||||||
F test/func3.test 2bb0f31ab7baaed690b962a88544d7be6b34fa389364bc36a44e441ed3e3f1e6
|
F test/func3.test 2bb0f31ab7baaed690b962a88544d7be6b34fa389364bc36a44e441ed3e3f1e6
|
||||||
F test/func4.test 2285fb5792d593fef442358763f0fd9de806eda47dbc7a5934df57ffdc484c31
|
F test/func4.test 2285fb5792d593fef442358763f0fd9de806eda47dbc7a5934df57ffdc484c31
|
||||||
@@ -1256,7 +1256,7 @@ F test/oserror.test 1fc9746b83d778e70d115049747ba19c7fba154afce7cc165b09feb6ca6a
|
|||||||
F test/ossfuzz.c 9636dad2092a05a32110df0ca06713038dd0c43dd89a77dabe4b8b0d71096715
|
F test/ossfuzz.c 9636dad2092a05a32110df0ca06713038dd0c43dd89a77dabe4b8b0d71096715
|
||||||
F test/ossshell.c f125c5bd16e537a2549aa579b328dd1c59905e7ab1338dfc210e755bb7b69f17
|
F test/ossshell.c f125c5bd16e537a2549aa579b328dd1c59905e7ab1338dfc210e755bb7b69f17
|
||||||
F test/ovfl.test 199c482696defceacee8c8e0e0ef36da62726b2f
|
F test/ovfl.test 199c482696defceacee8c8e0e0ef36da62726b2f
|
||||||
F test/pager1.test 293c7ad1f19a07e548179b97534c6588249d4e40058b378ea26e75cc84d936f5
|
F test/pager1.test a4e438c344663ad7f0bf6e880cacae7531bdf7d960db15a3db4751273ecee06d
|
||||||
F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71
|
F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71
|
||||||
F test/pager3.test 4e9a83d6ca0838d7c602c9eb93d1357562d9059c1e02ffb138a8271020838370
|
F test/pager3.test 4e9a83d6ca0838d7c602c9eb93d1357562d9059c1e02ffb138a8271020838370
|
||||||
F test/pager4.test a122e9e6925d5b23b31e3dfef8c6a44bbf19590e
|
F test/pager4.test a122e9e6925d5b23b31e3dfef8c6a44bbf19590e
|
||||||
@@ -1862,7 +1862,7 @@ F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
|
|||||||
F tool/mkopcodeh.tcl 130b88697da6ec5b89b41844d955d08fb62c2552e889dec8c7bcecb28d8f50bd
|
F tool/mkopcodeh.tcl 130b88697da6ec5b89b41844d955d08fb62c2552e889dec8c7bcecb28d8f50bd
|
||||||
F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
|
F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
|
||||||
F tool/mkpragmatab.tcl 37381569b5a5cd3269e3fdbc08829eb1a5f7c2a8e59ee7be8995127e5ef99e0d
|
F tool/mkpragmatab.tcl 37381569b5a5cd3269e3fdbc08829eb1a5f7c2a8e59ee7be8995127e5ef99e0d
|
||||||
F tool/mkshellc.tcl 70a9978e363b0f3280ca9ce1c46d72563ff479c1930a12a7375e3881b7325712
|
F tool/mkshellc.tcl 5fe7e518112b262e25726f248c0f33dd153192867453984b6af0a76a88e97cb2
|
||||||
F tool/mksourceid.c 36aa8020014aed0836fd13c51d6dc9219b0df1761d6b5f58ff5b616211b079b9
|
F tool/mksourceid.c 36aa8020014aed0836fd13c51d6dc9219b0df1761d6b5f58ff5b616211b079b9
|
||||||
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
|
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
|
||||||
F tool/mksqlite3c-noext.tcl 4f7cfef5152b0c91920355cbfc1d608a4ad242cb819f1aea07f6d0274f584a7f
|
F tool/mksqlite3c-noext.tcl 4f7cfef5152b0c91920355cbfc1d608a4ad242cb819f1aea07f6d0274f584a7f
|
||||||
@@ -1878,7 +1878,7 @@ F tool/replace.tcl 60f91e8dd06ab81f74d213ecbd9c9945f32ac048
|
|||||||
F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a
|
F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a
|
||||||
F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5
|
F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5
|
||||||
F tool/run-speed-test.sh f95d19fd669b68c4c38b6b475242841d47c66076
|
F tool/run-speed-test.sh f95d19fd669b68c4c38b6b475242841d47c66076
|
||||||
F tool/showdb.c 6554d4af7690404f5b9242cf0349a74b59cafbda95fcf8f31c36303faf8539da
|
F tool/showdb.c 7cc12c6deeddfe40ba5d948b408730696d8365988da05fcb6b6a90ea4965e2b4
|
||||||
F tool/showjournal.c 5bad7ae8784a43d2b270d953060423b8bd480818
|
F tool/showjournal.c 5bad7ae8784a43d2b270d953060423b8bd480818
|
||||||
F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564
|
F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564
|
||||||
F tool/showshm.c a0ab6ec32dd1f11218ca2a4018f8fb875b59414801ab8ceed8b2e69b7b45a809
|
F tool/showshm.c a0ab6ec32dd1f11218ca2a4018f8fb875b59414801ab8ceed8b2e69b7b45a809
|
||||||
@@ -1928,7 +1928,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P e867d226226dafd850a5cdd1f8d5688b106ee2deee52602b2718bb59dd184742 791473bc6677c2ae76f558082a4b43ca1eaf9895b76624d5b55d58f2af898ff3
|
P f21a53fb4141eaeca2fb33b25bbadfad4e461b0ed1a3526f54a42316f3dd5d9b 7bd55eee1ac63cf6d5699ce85bc5a29bf51afdf7a80bce44937fa833947a40f4
|
||||||
R 99ae3e94ae18e705aba1af0128a331a1
|
R 36eb132f78c5514148fa4679afcdeeb6
|
||||||
U dan
|
U drh
|
||||||
Z 88c10b3fb45c5232381240a000a0aa95
|
Z b8158accb8090ec1215133e4764405b8
|
||||||
|
@@ -1 +1 @@
|
|||||||
f21a53fb4141eaeca2fb33b25bbadfad4e461b0ed1a3526f54a42316f3dd5d9b
|
92d8f967c9a7e4005c63703af8075b3d2ae5aa43c6b5bc6e599735dc4479bef6
|
24
src/alter.c
24
src/alter.c
@@ -850,7 +850,11 @@ static int renameUnmapSelectCb(Walker *pWalker, Select *p){
|
|||||||
Parse *pParse = pWalker->pParse;
|
Parse *pParse = pWalker->pParse;
|
||||||
int i;
|
int i;
|
||||||
if( pParse->nErr ) return WRC_Abort;
|
if( pParse->nErr ) return WRC_Abort;
|
||||||
if( p->selFlags & SF_View ) return WRC_Prune;
|
if( p->selFlags & (SF_View|SF_CopyCte) ){
|
||||||
|
testcase( p->selFlags & SF_View );
|
||||||
|
testcase( p->selFlags & SF_CopyCte );
|
||||||
|
return WRC_Prune;
|
||||||
|
}
|
||||||
if( ALWAYS(p->pEList) ){
|
if( ALWAYS(p->pEList) ){
|
||||||
ExprList *pList = p->pEList;
|
ExprList *pList = p->pEList;
|
||||||
for(i=0; i<pList->nExpr; i++){
|
for(i=0; i<pList->nExpr; i++){
|
||||||
@@ -958,7 +962,11 @@ static RenameToken *renameTokenFind(
|
|||||||
** descend into sub-select statements.
|
** descend into sub-select statements.
|
||||||
*/
|
*/
|
||||||
static int renameColumnSelectCb(Walker *pWalker, Select *p){
|
static int renameColumnSelectCb(Walker *pWalker, Select *p){
|
||||||
if( p->selFlags & SF_View ) return WRC_Prune;
|
if( p->selFlags & (SF_View|SF_CopyCte) ){
|
||||||
|
testcase( p->selFlags & SF_View );
|
||||||
|
testcase( p->selFlags & SF_CopyCte );
|
||||||
|
return WRC_Prune;
|
||||||
|
}
|
||||||
renameWalkWith(pWalker, p);
|
renameWalkWith(pWalker, p);
|
||||||
return WRC_Continue;
|
return WRC_Continue;
|
||||||
}
|
}
|
||||||
@@ -1152,13 +1160,13 @@ static int renameEditSql(
|
|||||||
const char *zNew, /* New token text */
|
const char *zNew, /* New token text */
|
||||||
int bQuote /* True to always quote token */
|
int bQuote /* True to always quote token */
|
||||||
){
|
){
|
||||||
int nNew = sqlite3Strlen30(zNew);
|
i64 nNew = sqlite3Strlen30(zNew);
|
||||||
int nSql = sqlite3Strlen30(zSql);
|
i64 nSql = sqlite3Strlen30(zSql);
|
||||||
sqlite3 *db = sqlite3_context_db_handle(pCtx);
|
sqlite3 *db = sqlite3_context_db_handle(pCtx);
|
||||||
int rc = SQLITE_OK;
|
int rc = SQLITE_OK;
|
||||||
char *zQuot = 0;
|
char *zQuot = 0;
|
||||||
char *zOut;
|
char *zOut;
|
||||||
int nQuot = 0;
|
i64 nQuot = 0;
|
||||||
char *zBuf1 = 0;
|
char *zBuf1 = 0;
|
||||||
char *zBuf2 = 0;
|
char *zBuf2 = 0;
|
||||||
|
|
||||||
@@ -1594,7 +1602,11 @@ static int renameTableSelectCb(Walker *pWalker, Select *pSelect){
|
|||||||
int i;
|
int i;
|
||||||
RenameCtx *p = pWalker->u.pRename;
|
RenameCtx *p = pWalker->u.pRename;
|
||||||
SrcList *pSrc = pSelect->pSrc;
|
SrcList *pSrc = pSelect->pSrc;
|
||||||
if( pSelect->selFlags & SF_View ) return WRC_Prune;
|
if( pSelect->selFlags & (SF_View|SF_CopyCte) ){
|
||||||
|
testcase( pSelect->selFlags & SF_View );
|
||||||
|
testcase( pSelect->selFlags & SF_CopyCte );
|
||||||
|
return WRC_Prune;
|
||||||
|
}
|
||||||
if( NEVER(pSrc==0) ){
|
if( NEVER(pSrc==0) ){
|
||||||
assert( pWalker->pParse->db->mallocFailed );
|
assert( pWalker->pParse->db->mallocFailed );
|
||||||
return WRC_Abort;
|
return WRC_Abort;
|
||||||
|
@@ -4362,7 +4362,7 @@ void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists){
|
|||||||
if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){
|
if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){
|
||||||
goto exit_drop_index;
|
goto exit_drop_index;
|
||||||
}
|
}
|
||||||
if( !OMIT_TEMPDB && iDb ) code = SQLITE_DROP_TEMP_INDEX;
|
if( !OMIT_TEMPDB && iDb==1 ) code = SQLITE_DROP_TEMP_INDEX;
|
||||||
if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
|
if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
|
||||||
goto exit_drop_index;
|
goto exit_drop_index;
|
||||||
}
|
}
|
||||||
|
21
src/func.c
21
src/func.c
@@ -1316,10 +1316,10 @@ static void trimFunc(
|
|||||||
){
|
){
|
||||||
const unsigned char *zIn; /* Input string */
|
const unsigned char *zIn; /* Input string */
|
||||||
const unsigned char *zCharSet; /* Set of characters to trim */
|
const unsigned char *zCharSet; /* Set of characters to trim */
|
||||||
int nIn; /* Number of bytes in input */
|
unsigned int nIn; /* Number of bytes in input */
|
||||||
int flags; /* 1: trimleft 2: trimright 3: trim */
|
int flags; /* 1: trimleft 2: trimright 3: trim */
|
||||||
int i; /* Loop counter */
|
int i; /* Loop counter */
|
||||||
unsigned char *aLen = 0; /* Length of each character in zCharSet */
|
unsigned int *aLen = 0; /* Length of each character in zCharSet */
|
||||||
unsigned char **azChar = 0; /* Individual characters in zCharSet */
|
unsigned char **azChar = 0; /* Individual characters in zCharSet */
|
||||||
int nChar; /* Number of characters in zCharSet */
|
int nChar; /* Number of characters in zCharSet */
|
||||||
|
|
||||||
@@ -1328,13 +1328,13 @@ static void trimFunc(
|
|||||||
}
|
}
|
||||||
zIn = sqlite3_value_text(argv[0]);
|
zIn = sqlite3_value_text(argv[0]);
|
||||||
if( zIn==0 ) return;
|
if( zIn==0 ) return;
|
||||||
nIn = sqlite3_value_bytes(argv[0]);
|
nIn = (unsigned)sqlite3_value_bytes(argv[0]);
|
||||||
assert( zIn==sqlite3_value_text(argv[0]) );
|
assert( zIn==sqlite3_value_text(argv[0]) );
|
||||||
if( argc==1 ){
|
if( argc==1 ){
|
||||||
static const unsigned char lenOne[] = { 1 };
|
static const unsigned lenOne[] = { 1 };
|
||||||
static unsigned char * const azOne[] = { (u8*)" " };
|
static unsigned char * const azOne[] = { (u8*)" " };
|
||||||
nChar = 1;
|
nChar = 1;
|
||||||
aLen = (u8*)lenOne;
|
aLen = (unsigned*)lenOne;
|
||||||
azChar = (unsigned char **)azOne;
|
azChar = (unsigned char **)azOne;
|
||||||
zCharSet = 0;
|
zCharSet = 0;
|
||||||
}else if( (zCharSet = sqlite3_value_text(argv[1]))==0 ){
|
}else if( (zCharSet = sqlite3_value_text(argv[1]))==0 ){
|
||||||
@@ -1345,15 +1345,16 @@ static void trimFunc(
|
|||||||
SQLITE_SKIP_UTF8(z);
|
SQLITE_SKIP_UTF8(z);
|
||||||
}
|
}
|
||||||
if( nChar>0 ){
|
if( nChar>0 ){
|
||||||
azChar = contextMalloc(context, ((i64)nChar)*(sizeof(char*)+1));
|
azChar = contextMalloc(context,
|
||||||
|
((i64)nChar)*(sizeof(char*)+sizeof(unsigned)));
|
||||||
if( azChar==0 ){
|
if( azChar==0 ){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
aLen = (unsigned char*)&azChar[nChar];
|
aLen = (unsigned*)&azChar[nChar];
|
||||||
for(z=zCharSet, nChar=0; *z; nChar++){
|
for(z=zCharSet, nChar=0; *z; nChar++){
|
||||||
azChar[nChar] = (unsigned char *)z;
|
azChar[nChar] = (unsigned char *)z;
|
||||||
SQLITE_SKIP_UTF8(z);
|
SQLITE_SKIP_UTF8(z);
|
||||||
aLen[nChar] = (u8)(z - azChar[nChar]);
|
aLen[nChar] = (unsigned)(z - azChar[nChar]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1361,7 +1362,7 @@ static void trimFunc(
|
|||||||
flags = SQLITE_PTR_TO_INT(sqlite3_user_data(context));
|
flags = SQLITE_PTR_TO_INT(sqlite3_user_data(context));
|
||||||
if( flags & 1 ){
|
if( flags & 1 ){
|
||||||
while( nIn>0 ){
|
while( nIn>0 ){
|
||||||
int len = 0;
|
unsigned int len = 0;
|
||||||
for(i=0; i<nChar; i++){
|
for(i=0; i<nChar; i++){
|
||||||
len = aLen[i];
|
len = aLen[i];
|
||||||
if( len<=nIn && memcmp(zIn, azChar[i], len)==0 ) break;
|
if( len<=nIn && memcmp(zIn, azChar[i], len)==0 ) break;
|
||||||
@@ -1373,7 +1374,7 @@ static void trimFunc(
|
|||||||
}
|
}
|
||||||
if( flags & 2 ){
|
if( flags & 2 ){
|
||||||
while( nIn>0 ){
|
while( nIn>0 ){
|
||||||
int len = 0;
|
unsigned int len = 0;
|
||||||
for(i=0; i<nChar; i++){
|
for(i=0; i<nChar; i++){
|
||||||
len = aLen[i];
|
len = aLen[i];
|
||||||
if( len<=nIn && memcmp(&zIn[nIn-len],azChar[i],len)==0 ) break;
|
if( len<=nIn && memcmp(&zIn[nIn-len],azChar[i],len)==0 ) break;
|
||||||
|
@@ -4312,7 +4312,7 @@ int sqlite3_test_control(int op, ...){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SQLITE_DEBUG
|
#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_WSD)
|
||||||
/* sqlite3_test_control(SQLITE_TESTCTRL_TUNE, id, *piValue)
|
/* sqlite3_test_control(SQLITE_TESTCTRL_TUNE, id, *piValue)
|
||||||
**
|
**
|
||||||
** If "id" is an integer between 1 and SQLITE_NTUNE then set the value
|
** If "id" is an integer between 1 and SQLITE_NTUNE then set the value
|
||||||
|
@@ -861,7 +861,9 @@ end_deserialize:
|
|||||||
*/
|
*/
|
||||||
int sqlite3MemdbInit(void){
|
int sqlite3MemdbInit(void){
|
||||||
sqlite3_vfs *pLower = sqlite3_vfs_find(0);
|
sqlite3_vfs *pLower = sqlite3_vfs_find(0);
|
||||||
unsigned int sz = pLower->szOsFile;
|
unsigned int sz;
|
||||||
|
if( NEVER(pLower==0) ) return SQLITE_ERROR;
|
||||||
|
sz = pLower->szOsFile;
|
||||||
memdb_vfs.pAppData = pLower;
|
memdb_vfs.pAppData = pLower;
|
||||||
/* The following conditional can only be true when compiled for
|
/* The following conditional can only be true when compiled for
|
||||||
** Windows x86 and SQLITE_MAX_MMAP_SIZE=0. We always leave
|
** Windows x86 and SQLITE_MAX_MMAP_SIZE=0. We always leave
|
||||||
|
@@ -8068,6 +8068,7 @@ int sqlite3_os_init(void){
|
|||||||
}
|
}
|
||||||
unixBigLock = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_VFS1);
|
unixBigLock = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_VFS1);
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_WAL
|
||||||
/* Validate lock assumptions */
|
/* Validate lock assumptions */
|
||||||
assert( SQLITE_SHM_NLOCK==8 ); /* Number of available locks */
|
assert( SQLITE_SHM_NLOCK==8 ); /* Number of available locks */
|
||||||
assert( UNIX_SHM_BASE==120 ); /* Start of locking area */
|
assert( UNIX_SHM_BASE==120 ); /* Start of locking area */
|
||||||
@@ -8083,6 +8084,8 @@ int sqlite3_os_init(void){
|
|||||||
** DMS UNIX_SHM_BASE+8 128
|
** DMS UNIX_SHM_BASE+8 128
|
||||||
*/
|
*/
|
||||||
assert( UNIX_SHM_DMS==128 ); /* Byte offset of the deadman-switch */
|
assert( UNIX_SHM_DMS==128 ); /* Byte offset of the deadman-switch */
|
||||||
|
#endif
|
||||||
|
|
||||||
return SQLITE_OK;
|
return SQLITE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -76,11 +76,16 @@ void sqlite3_randomness(int N, void *pBuf){
|
|||||||
** number generator) not as an encryption device.
|
** number generator) not as an encryption device.
|
||||||
*/
|
*/
|
||||||
if( !wsdPrng.isInit ){
|
if( !wsdPrng.isInit ){
|
||||||
|
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
|
||||||
int i;
|
int i;
|
||||||
char k[256];
|
char k[256];
|
||||||
wsdPrng.j = 0;
|
wsdPrng.j = 0;
|
||||||
wsdPrng.i = 0;
|
wsdPrng.i = 0;
|
||||||
sqlite3OsRandomness(sqlite3_vfs_find(0), 256, k);
|
if( NEVER(pVfs==0) ){
|
||||||
|
memset(k, 0, sizeof(k));
|
||||||
|
}else{
|
||||||
|
sqlite3OsRandomness(pVfs, 256, k);
|
||||||
|
}
|
||||||
for(i=0; i<256; i++){
|
for(i=0; i<256; i++){
|
||||||
wsdPrng.s[i] = (u8)i;
|
wsdPrng.s[i] = (u8)i;
|
||||||
}
|
}
|
||||||
|
@@ -5208,6 +5208,7 @@ static int resolveFromTermToCte(
|
|||||||
pTab->tabFlags |= TF_Ephemeral | TF_NoVisibleRowid;
|
pTab->tabFlags |= TF_Ephemeral | TF_NoVisibleRowid;
|
||||||
pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0);
|
pFrom->pSelect = sqlite3SelectDup(db, pCte->pSelect, 0);
|
||||||
if( db->mallocFailed ) return 2;
|
if( db->mallocFailed ) return 2;
|
||||||
|
pFrom->pSelect->selFlags |= SF_CopyCte;
|
||||||
assert( pFrom->pSelect );
|
assert( pFrom->pSelect );
|
||||||
pFrom->fg.isCte = 1;
|
pFrom->fg.isCte = 1;
|
||||||
pFrom->u2.pCteUse = pCteUse;
|
pFrom->u2.pCteUse = pCteUse;
|
||||||
|
@@ -226,6 +226,7 @@ static sqlite3_int64 timeOfDay(void){
|
|||||||
static sqlite3_vfs *clockVfs = 0;
|
static sqlite3_vfs *clockVfs = 0;
|
||||||
sqlite3_int64 t;
|
sqlite3_int64 t;
|
||||||
if( clockVfs==0 ) clockVfs = sqlite3_vfs_find(0);
|
if( clockVfs==0 ) clockVfs = sqlite3_vfs_find(0);
|
||||||
|
if( clockVfs==0 ) return 0; /* Never actually happens */
|
||||||
if( clockVfs->iVersion>=2 && clockVfs->xCurrentTimeInt64!=0 ){
|
if( clockVfs->iVersion>=2 && clockVfs->xCurrentTimeInt64!=0 ){
|
||||||
clockVfs->xCurrentTimeInt64(clockVfs, &t);
|
clockVfs->xCurrentTimeInt64(clockVfs, &t);
|
||||||
}else{
|
}else{
|
||||||
|
@@ -4379,17 +4379,17 @@ typedef struct sqlite3_context sqlite3_context;
|
|||||||
**
|
**
|
||||||
** ^The fifth argument to the BLOB and string binding interfaces controls
|
** ^The fifth argument to the BLOB and string binding interfaces controls
|
||||||
** or indicates the lifetime of the object referenced by the third parameter.
|
** or indicates the lifetime of the object referenced by the third parameter.
|
||||||
** ^These three options exist:
|
** These three options exist:
|
||||||
** ^(1) A destructor to dispose of the BLOB or string after SQLite has finished
|
** ^ (1) A destructor to dispose of the BLOB or string after SQLite has finished
|
||||||
** with it may be passed. ^It is called to dispose of the BLOB or string even
|
** with it may be passed. ^It is called to dispose of the BLOB or string even
|
||||||
** if the call to the bind API fails, except the destructor is not called if
|
** if the call to the bind API fails, except the destructor is not called if
|
||||||
** the third parameter is a NULL pointer or the fourth parameter is negative.
|
** the third parameter is a NULL pointer or the fourth parameter is negative.
|
||||||
** ^(2) The special constant, [SQLITE_STATIC], may be passsed to indicate that
|
** ^ (2) The special constant, [SQLITE_STATIC], may be passsed to indicate that
|
||||||
** the application remains responsible for disposing of the object. ^In this
|
** the application remains responsible for disposing of the object. ^In this
|
||||||
** case, the object and the provided pointer to it must remain valid until
|
** case, the object and the provided pointer to it must remain valid until
|
||||||
** either the prepared statement is finalized or the same SQL parameter is
|
** either the prepared statement is finalized or the same SQL parameter is
|
||||||
** bound to something else, whichever occurs sooner.
|
** bound to something else, whichever occurs sooner.
|
||||||
** ^(3) The constant, [SQLITE_TRANSIENT], may be passed to indicate that the
|
** ^ (3) The constant, [SQLITE_TRANSIENT], may be passed to indicate that the
|
||||||
** object is to be copied prior to the return from sqlite3_bind_*(). ^The
|
** object is to be copied prior to the return from sqlite3_bind_*(). ^The
|
||||||
** object and pointer to it must remain valid until then. ^SQLite will then
|
** object and pointer to it must remain valid until then. ^SQLite will then
|
||||||
** manage the lifetime of its private copy.
|
** manage the lifetime of its private copy.
|
||||||
|
@@ -3233,6 +3233,7 @@ struct Select {
|
|||||||
#define SF_UpdateFrom 0x0800000 /* Statement is an UPDATE...FROM */
|
#define SF_UpdateFrom 0x0800000 /* Statement is an UPDATE...FROM */
|
||||||
#define SF_PushDown 0x1000000 /* SELECT has be modified by push-down opt */
|
#define SF_PushDown 0x1000000 /* SELECT has be modified by push-down opt */
|
||||||
#define SF_MultiPart 0x2000000 /* Has multiple incompatible PARTITIONs */
|
#define SF_MultiPart 0x2000000 /* Has multiple incompatible PARTITIONs */
|
||||||
|
#define SF_CopyCte 0x4000000 /* SELECT statement is a copy of a CTE */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** The results of a SELECT can be distributed in several ways, as defined
|
** The results of a SELECT can be distributed in several ways, as defined
|
||||||
|
@@ -1073,8 +1073,9 @@ static void vdbeSorterWorkDebug(SortSubtask *pTask, const char *zEvent){
|
|||||||
fprintf(stderr, "%lld:%d %s\n", t, iTask, zEvent);
|
fprintf(stderr, "%lld:%d %s\n", t, iTask, zEvent);
|
||||||
}
|
}
|
||||||
static void vdbeSorterRewindDebug(const char *zEvent){
|
static void vdbeSorterRewindDebug(const char *zEvent){
|
||||||
i64 t;
|
i64 t = 0;
|
||||||
sqlite3OsCurrentTimeInt64(sqlite3_vfs_find(0), &t);
|
sqlite3_vfs *pVfs = sqlite3_vfs_find(0);
|
||||||
|
if( ALWAYS(pVfs) ) sqlite3OsCurrentTimeInt64(pVfs, &t);
|
||||||
fprintf(stderr, "%lld:X %s\n", t, zEvent);
|
fprintf(stderr, "%lld:X %s\n", t, zEvent);
|
||||||
}
|
}
|
||||||
static void vdbeSorterPopulateDebug(
|
static void vdbeSorterPopulateDebug(
|
||||||
|
@@ -2719,7 +2719,7 @@ static int whereLoopAddBtreeIndex(
|
|||||||
tRowcnt nOut = 0;
|
tRowcnt nOut = 0;
|
||||||
if( nInMul==0
|
if( nInMul==0
|
||||||
&& pProbe->nSample
|
&& pProbe->nSample
|
||||||
&& pNew->u.btree.nEq<=pProbe->nSampleCol
|
&& ALWAYS(pNew->u.btree.nEq<=pProbe->nSampleCol)
|
||||||
&& ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect))
|
&& ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect))
|
||||||
&& OptimizationEnabled(db, SQLITE_Stat4)
|
&& OptimizationEnabled(db, SQLITE_Stat4)
|
||||||
){
|
){
|
||||||
|
@@ -949,4 +949,23 @@ do_execsql_test 30.2 {
|
|||||||
END}
|
END}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#-------------------------------------------------------------------------
|
||||||
|
reset_db
|
||||||
|
do_execsql_test 31.0 {
|
||||||
|
CREATE TABLE t1(q);
|
||||||
|
CREATE VIEW vvv AS WITH x AS (WITH y AS (SELECT * FROM x) SELECT 1) SELECT 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 31.1 {
|
||||||
|
SELECT * FROM vvv;
|
||||||
|
} {1}
|
||||||
|
|
||||||
|
do_execsql_test 31.2 {
|
||||||
|
ALTER TABLE t1 RENAME TO t1x;
|
||||||
|
}
|
||||||
|
|
||||||
|
do_execsql_test 31.3 {
|
||||||
|
ALTER TABLE t1x RENAME q TO x;
|
||||||
|
}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
@@ -1391,9 +1391,23 @@ do_test auth-1.205 {
|
|||||||
}
|
}
|
||||||
catchsql {DROP INDEX i2}
|
catchsql {DROP INDEX i2}
|
||||||
} {1 {not authorized}}
|
} {1 {not authorized}}
|
||||||
do_test auth-1.206 {
|
do_test auth-1.205a {
|
||||||
set ::authargs
|
set ::authargs
|
||||||
} {i2 t2 main {}}
|
} {i2 t2 main {}}
|
||||||
|
db eval {
|
||||||
|
ATTACH ':memory:' as di205;
|
||||||
|
CREATE TABLE di205.t1(x);
|
||||||
|
CREATE INDEX di205.t1x ON t1(x);
|
||||||
|
}
|
||||||
|
do_catchsql_test auth-1.205b {
|
||||||
|
DROP INDEX di205.t1x;
|
||||||
|
} {1 {not authorized}}
|
||||||
|
db eval {
|
||||||
|
DETACH di205;
|
||||||
|
}
|
||||||
|
do_test auth-1.206 {
|
||||||
|
set ::authargs
|
||||||
|
} {t1x t1 di205 {}}
|
||||||
do_test auth-1.207 {
|
do_test auth-1.207 {
|
||||||
execsql {SELECT name FROM sqlite_master}
|
execsql {SELECT name FROM sqlite_master}
|
||||||
} {t2 i2}
|
} {t2 i2}
|
||||||
|
@@ -209,12 +209,18 @@ ifcapable json1&&vtab {
|
|||||||
WHERE type='index';
|
WHERE type='index';
|
||||||
}
|
}
|
||||||
|
|
||||||
db close
|
# Do not run this tests if there is any presql (SQL run from within
|
||||||
sqlite3 db test.db
|
# the [sqlite3] command) configured. In this case the schema is parsed
|
||||||
|
# before the "PRAGMA writable_schema" command is executed and the
|
||||||
|
# script throws and exception.
|
||||||
|
if {[info exists ::G(perm:presql)]==0 || $::G(perm:presql)==""} {
|
||||||
|
db close
|
||||||
|
sqlite3 db test.db
|
||||||
|
|
||||||
do_execsql_test 5.1 {
|
do_execsql_test 5.1 {
|
||||||
PRAGMA writable_schema = 1;
|
PRAGMA writable_schema = 1;
|
||||||
SELECT * FROM t1
|
SELECT * FROM t1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}; # ifcapable json1&&vtab
|
}; # ifcapable json1&&vtab
|
||||||
|
|
||||||
|
@@ -1004,12 +1004,13 @@ do_execsql_test e_select-4.9.0 {
|
|||||||
INSERT INTO b3 VALUES('dEF', 'dEF');
|
INSERT INTO b3 VALUES('dEF', 'dEF');
|
||||||
} {}
|
} {}
|
||||||
|
|
||||||
# EVIDENCE-OF: R-07284-35990 If the SELECT statement is an aggregate
|
# EVIDENCE-OF: R-40855-36147 If the SELECT statement is an aggregate
|
||||||
# query with a GROUP BY clause, then each of the expressions specified
|
# query with a GROUP BY clause, then each of the expressions specified
|
||||||
# as part of the GROUP BY clause is evaluated for each row of the
|
# as part of the GROUP BY clause is evaluated for each row of the
|
||||||
# dataset. Each row is then assigned to a "group" based on the results;
|
# dataset according to the processing rules stated below for ORDER BY
|
||||||
# rows for which the results of evaluating the GROUP BY expressions are
|
# expressions. Each row is then assigned to a "group" based on the
|
||||||
# the same get assigned to the same group.
|
# results; rows for which the results of evaluating the GROUP BY
|
||||||
|
# expressions are the same get assigned to the same group.
|
||||||
#
|
#
|
||||||
# These tests also show that the following is not untrue:
|
# These tests also show that the following is not untrue:
|
||||||
#
|
#
|
||||||
|
@@ -1111,6 +1111,13 @@ do_test func-22.22 {
|
|||||||
execsql {SELECT typeof(trim('hello',NULL));}
|
execsql {SELECT typeof(trim('hello',NULL));}
|
||||||
} {null}
|
} {null}
|
||||||
|
|
||||||
|
# 2021-06-15 - infinite loop due to unsigned character counter
|
||||||
|
# overflow, reported by Zimuzo Ezeozue
|
||||||
|
#
|
||||||
|
do_execsql_test func-22.23 {
|
||||||
|
SELECT trim('xyzzy',x'c0808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080');
|
||||||
|
} {xyzzy}
|
||||||
|
|
||||||
# This is to test the deprecated sqlite3_aggregate_count() API.
|
# This is to test the deprecated sqlite3_aggregate_count() API.
|
||||||
#
|
#
|
||||||
ifcapable deprecated {
|
ifcapable deprecated {
|
||||||
|
@@ -1764,6 +1764,12 @@ tv delete
|
|||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
# Test specal "PRAGMA journal_mode=OFF" test cases.
|
# Test specal "PRAGMA journal_mode=OFF" test cases.
|
||||||
#
|
#
|
||||||
|
# Do not run these tests for SQLITE_ENABLE_ZIPVFS builds. Such builds
|
||||||
|
# cause the pager to enter the error state if a statement transaction
|
||||||
|
# cannot be rolled back due to a prior "PRAGMA journal_mode=OFF". Which
|
||||||
|
# causes these tests to fail.
|
||||||
|
#
|
||||||
|
if {[info commands zip_register]==""} {
|
||||||
faultsim_delete_and_reopen
|
faultsim_delete_and_reopen
|
||||||
do_execsql_test pager1-14.1.1 {
|
do_execsql_test pager1-14.1.1 {
|
||||||
PRAGMA journal_mode = OFF;
|
PRAGMA journal_mode = OFF;
|
||||||
@@ -1788,8 +1794,11 @@ do_catchsql_test pager1-14.1.4 {
|
|||||||
} {1 {UNIQUE constraint failed: t1.rowid}}
|
} {1 {UNIQUE constraint failed: t1.rowid}}
|
||||||
do_execsql_test pager1-14.1.5 {
|
do_execsql_test pager1-14.1.5 {
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
}
|
||||||
|
do_execsql_test pager1-14.1.6 {
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
} {1 2 2 2}
|
} {1 2 2 2}
|
||||||
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
# Test opening and closing the pager sub-system with different values
|
# Test opening and closing the pager sub-system with different values
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#
|
#
|
||||||
set topdir [file dir [file dir [file normal $argv0]]]
|
set topdir [file dir [file dir [file normal $argv0]]]
|
||||||
set out stdout
|
set out stdout
|
||||||
|
fconfigure stdout -translation binary
|
||||||
puts $out {/* DO NOT EDIT!
|
puts $out {/* DO NOT EDIT!
|
||||||
** This file is automatically generated by the script in the canonical
|
** This file is automatically generated by the script in the canonical
|
||||||
** SQLite source tree at tool/mkshellc.tcl. That script combines source
|
** SQLite source tree at tool/mkshellc.tcl. That script combines source
|
||||||
|
@@ -753,7 +753,7 @@ static void decode_trunk_page(
|
|||||||
n = decodeInt32(&a[4]);
|
n = decodeInt32(&a[4]);
|
||||||
for(i=0; i<n && i<g.pagesize/4; i++){
|
for(i=0; i<n && i<g.pagesize/4; i++){
|
||||||
u32 x = decodeInt32(&a[8+4*i]);
|
u32 x = decodeInt32(&a[8+4*i]);
|
||||||
char zIdx[10];
|
char zIdx[13];
|
||||||
sprintf(zIdx, "[%d]", i);
|
sprintf(zIdx, "[%d]", i);
|
||||||
printf(" %5s %7u", zIdx, x);
|
printf(" %5s %7u", zIdx, x);
|
||||||
if( i%5==4 ) printf("\n");
|
if( i%5==4 ) printf("\n");
|
||||||
|
Reference in New Issue
Block a user