44 lines
2.3 KiB
Diff
44 lines
2.3 KiB
Diff
diff -up sqlite-2.8.17/src/btree.c.sqlite3 sqlite-2.8.17/src/btree.c
|
|
--- sqlite-2.8.17/src/btree.c.sqlite3 2019-04-10 14:39:29.597592819 -0400
|
|
+++ sqlite-2.8.17/src/btree.c 2019-04-10 14:40:51.458892027 -0400
|
|
@@ -112,6 +112,8 @@ typedef struct FreelistInfo FreelistInfo
|
|
static const char zMagicHeader[] =
|
|
"** This file contains an SQLite 2.1 database **";
|
|
#define MAGIC_SIZE (sizeof(zMagicHeader))
|
|
+static const char zMagicHeader_V3[] = "SQLite format 3";
|
|
+#define MAGIC_SIZE_V3 (sizeof(zMagicHeader_V3))
|
|
|
|
/*
|
|
** This is a magic integer also used to test the integrity of the database
|
|
@@ -794,6 +796,8 @@ static int lockBtree(Btree *pBt){
|
|
if( strcmp(pP1->zMagic,zMagicHeader)!=0 ||
|
|
(pP1->iMagic!=MAGIC && swab32(pP1->iMagic)!=MAGIC) ){
|
|
rc = SQLITE_NOTADB;
|
|
+ if( !strcmp(pP1->zMagic,zMagicHeader_V3) )
|
|
+ rc = SQLITE_V3;
|
|
goto page1_init_failed;
|
|
}
|
|
pBt->needSwab = pP1->iMagic!=MAGIC;
|
|
diff -up sqlite-2.8.17/src/main.c.sqlite3 sqlite-2.8.17/src/main.c
|
|
--- sqlite-2.8.17/src/main.c.sqlite3 2019-04-10 14:41:00.268709401 -0400
|
|
+++ sqlite-2.8.17/src/main.c 2019-04-10 14:41:24.115215151 -0400
|
|
@@ -851,6 +851,7 @@ const char *sqlite_error_string(int rc){
|
|
case SQLITE_FORMAT: z = "auxiliary database format error"; break;
|
|
case SQLITE_RANGE: z = "bind index out of range"; break;
|
|
case SQLITE_NOTADB: z = "file is encrypted or is not a database";break;
|
|
+ case SQLITE_V3: z = "database version mismatch. Try sqlite3";break;
|
|
default: z = "unknown error"; break;
|
|
}
|
|
return z;
|
|
diff -up sqlite-2.8.17/src/sqlite.h.in.sqlite3 sqlite-2.8.17/src/sqlite.h.in
|
|
--- sqlite-2.8.17/src/sqlite.h.in.sqlite3 2019-04-10 14:41:44.465793362 -0400
|
|
+++ sqlite-2.8.17/src/sqlite.h.in 2019-04-10 14:41:57.761517793 -0400
|
|
@@ -172,6 +172,7 @@ int sqlite_exec(
|
|
#define SQLITE_FORMAT 24 /* Auxiliary database format error */
|
|
#define SQLITE_RANGE 25 /* 2nd parameter to sqlite_bind out of range */
|
|
#define SQLITE_NOTADB 26 /* File opened that is not a database file */
|
|
+#define SQLITE_V3 27 /* File opened that is not a database file */
|
|
#define SQLITE_ROW 100 /* sqlite_step() has another row ready */
|
|
#define SQLITE_DONE 101 /* sqlite_step() has finished executing */
|
|
|