mirror of https://github.com/sqlite/sqlite
Combine the implementations of the key and hexkey pragmas into a single
case. Have both pragmas return "ok" if they are implemented. FossilOrigin-Name: b3692c406f7ba62587c9d3256f888748393519680e9e2db53f59557f1a300e05
This commit is contained in:
parent
7ed6c068f5
commit
51e441da2b
18
manifest
18
manifest
|
@ -1,5 +1,5 @@
|
||||||
C Fix\sa\sproblem\sin\s[b5ca442a]\scausing\san\sassert()\sto\sfail\sin\sREINDEX\scommands.
|
C Combine\sthe\simplementations\sof\sthe\skey\sand\shexkey\spragmas\sinto\sa\ssingle\ncase.\s\sHave\sboth\spragmas\sreturn\s"ok"\sif\sthey\sare\simplemented.
|
||||||
D 2019-05-21T16:32:41.592
|
D 2019-05-21T17:04:27.540
|
||||||
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
|
||||||
|
@ -515,8 +515,8 @@ F src/parse.y 91f76f436db1c0ed3cc8a82ba6c945a592dc24a036f0ff7b48313bd80977d382
|
||||||
F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee
|
F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee
|
||||||
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
|
F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
|
||||||
F src/pcache1.c be64b2f3908a7f97c56c963676eb12f0d6254c95b28cdc1d73a186eff213219d
|
F src/pcache1.c be64b2f3908a7f97c56c963676eb12f0d6254c95b28cdc1d73a186eff213219d
|
||||||
F src/pragma.c 00046255566744b4a3086286d50f66f08531c53403bf64623abc4d86ca677173
|
F src/pragma.c 925bcac0afd98a0d4255c7524b93239ab4d83893d96f7f8fdccd78d4929a39bb
|
||||||
F src/pragma.h 482c26f352efd7a4ed1354d83ffa992e13004f6528edeee44cdbfd5025a490bd
|
F src/pragma.h 4a9fabff14db4487a734dfeeb4be984ce662bfdccfae16145b9c732327735e13
|
||||||
F src/prepare.c 78027c6231fbb19ca186a5f5f0c0a1375d9c2cec0655273f9bd90d9ff74a34b3
|
F src/prepare.c 78027c6231fbb19ca186a5f5f0c0a1375d9c2cec0655273f9bd90d9ff74a34b3
|
||||||
F src/printf.c 67f79227273a9009d86a017619717c3f554f50b371294526da59faa6014ed2cd
|
F src/printf.c 67f79227273a9009d86a017619717c3f554f50b371294526da59faa6014ed2cd
|
||||||
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384
|
||||||
|
@ -1760,7 +1760,7 @@ F tool/mkmsvcmin.tcl cad0c7b54d7dd92bc87d59f36d4cc4f070eb2e625f14159dc2f5c4204e6
|
||||||
F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
|
F tool/mkopcodec.tcl d1b6362bd3aa80d5520d4d6f3765badf01f6c43c
|
||||||
F tool/mkopcodeh.tcl 352a4319c0ad869eb26442bf7c3b015aa15594c21f1cce5a6420dbe999367c21
|
F tool/mkopcodeh.tcl 352a4319c0ad869eb26442bf7c3b015aa15594c21f1cce5a6420dbe999367c21
|
||||||
F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
|
F tool/mkopts.tcl 680f785fdb09729fd9ac50632413da4eadbdf9071535e3f26d03795828ab07fa
|
||||||
F tool/mkpragmatab.tcl d8887dfbd5a40c9e5de2c011db989af52152b9bcc64059d9e93b28edf38af9b9
|
F tool/mkpragmatab.tcl 8250ef3df54aee09f6c6ed36cad390bb6dd20bbe71927d8bff069ed9fe0bbf98
|
||||||
F tool/mkshellc.tcl 70a9978e363b0f3280ca9ce1c46d72563ff479c1930a12a7375e3881b7325712
|
F tool/mkshellc.tcl 70a9978e363b0f3280ca9ce1c46d72563ff479c1930a12a7375e3881b7325712
|
||||||
F tool/mksourceid.c d458f9004c837bee87a6382228ac20d3eae3c49ea3b0a5aace936f8b60748d3b
|
F tool/mksourceid.c d458f9004c837bee87a6382228ac20d3eae3c49ea3b0a5aace936f8b60748d3b
|
||||||
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
|
F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97
|
||||||
|
@ -1827,7 +1827,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 b8071d10cba8f6c19fb8d5df3877f72567dc6d6a94744a39cbc1f58b2e2f343b
|
P a3e77c7776ab01dadb9d30d6067ac97e9d4b09ec54834558a5fa1ffed7b52c72
|
||||||
R e0d2be8aaa1e1b8f55170826c63b8e27
|
R 3dae3e0fc33f3c377f4c91b3d6a4afab
|
||||||
U dan
|
U drh
|
||||||
Z 54ed841e42a31a65a6ba750ef5f58b68
|
Z c924ae29a91263cca0c0c95662d4314e
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
a3e77c7776ab01dadb9d30d6067ac97e9d4b09ec54834558a5fa1ffed7b52c72
|
b3692c406f7ba62587c9d3256f888748393519680e9e2db53f59557f1a300e05
|
38
src/pragma.c
38
src/pragma.c
|
@ -2130,28 +2130,30 @@ void sqlite3Pragma(
|
||||||
*/
|
*/
|
||||||
case PragTyp_KEY: {
|
case PragTyp_KEY: {
|
||||||
if( zRight ){
|
if( zRight ){
|
||||||
int n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
|
char zBuf[40];
|
||||||
if( (pPragma->iArg & 1)==0 ){
|
const char *zKey = zRight;
|
||||||
sqlite3_key_v2(db, zDb, zRight, n);
|
int n;
|
||||||
|
if( pPragma->iArg==2 || pPragma->iArg==3 ){
|
||||||
|
u8 iByte;
|
||||||
|
int i;
|
||||||
|
for(i=0, iByte=0; i<sizeof(zBuf)*2 && sqlite3Isxdigit(zRight[i]); i++){
|
||||||
|
iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
|
||||||
|
if( (i&1)!=0 ) zBuf[i/2] = iByte;
|
||||||
|
}
|
||||||
|
zKey = zBuf;
|
||||||
|
n = i/2;
|
||||||
}else{
|
}else{
|
||||||
sqlite3_rekey_v2(db, zDb, zRight, n);
|
n = pPragma->iArg<4 ? sqlite3Strlen30(zRight) : -1;
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case PragTyp_HEXKEY: {
|
|
||||||
if( zRight ){
|
|
||||||
u8 iByte;
|
|
||||||
int i;
|
|
||||||
char zKey[40];
|
|
||||||
for(i=0, iByte=0; i<sizeof(zKey)*2 && sqlite3Isxdigit(zRight[i]); i++){
|
|
||||||
iByte = (iByte<<4) + sqlite3HexToInt(zRight[i]);
|
|
||||||
if( (i&1)!=0 ) zKey[i/2] = iByte;
|
|
||||||
}
|
}
|
||||||
if( (pPragma->iArg & 1)==0 ){
|
if( (pPragma->iArg & 1)==0 ){
|
||||||
sqlite3_key_v2(db, zDb, zKey, i/2);
|
rc = sqlite3_key_v2(db, zDb, zKey, n);
|
||||||
}else{
|
}else{
|
||||||
sqlite3_rekey_v2(db, zDb, zKey, i/2);
|
rc = sqlite3_rekey_v2(db, zDb, zKey, n);
|
||||||
|
}
|
||||||
|
if( rc==SQLITE_OK && n!=0 ){
|
||||||
|
sqlite3VdbeSetNumCols(v, 1);
|
||||||
|
sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "ok", SQLITE_STATIC);
|
||||||
|
returnSingleText(v, "ok");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
11
src/pragma.h
11
src/pragma.h
|
@ -46,10 +46,9 @@
|
||||||
#define PragTyp_WAL_AUTOCHECKPOINT 38
|
#define PragTyp_WAL_AUTOCHECKPOINT 38
|
||||||
#define PragTyp_WAL_CHECKPOINT 39
|
#define PragTyp_WAL_CHECKPOINT 39
|
||||||
#define PragTyp_ACTIVATE_EXTENSIONS 40
|
#define PragTyp_ACTIVATE_EXTENSIONS 40
|
||||||
#define PragTyp_HEXKEY 41
|
#define PragTyp_KEY 41
|
||||||
#define PragTyp_KEY 42
|
#define PragTyp_LOCK_STATUS 42
|
||||||
#define PragTyp_LOCK_STATUS 43
|
#define PragTyp_STATS 43
|
||||||
#define PragTyp_STATS 44
|
|
||||||
|
|
||||||
/* Property flags associated with various pragma. */
|
/* Property flags associated with various pragma. */
|
||||||
#define PragFlg_NeedSchema 0x01 /* Force schema load before running */
|
#define PragFlg_NeedSchema 0x01 /* Force schema load before running */
|
||||||
|
@ -322,12 +321,12 @@ static const PragmaName aPragmaName[] = {
|
||||||
#endif
|
#endif
|
||||||
#if defined(SQLITE_HAS_CODEC)
|
#if defined(SQLITE_HAS_CODEC)
|
||||||
{/* zName: */ "hexkey",
|
{/* zName: */ "hexkey",
|
||||||
/* ePragTyp: */ PragTyp_HEXKEY,
|
/* ePragTyp: */ PragTyp_KEY,
|
||||||
/* ePragFlg: */ 0,
|
/* ePragFlg: */ 0,
|
||||||
/* ColNames: */ 0, 0,
|
/* ColNames: */ 0, 0,
|
||||||
/* iArg: */ 2 },
|
/* iArg: */ 2 },
|
||||||
{/* zName: */ "hexrekey",
|
{/* zName: */ "hexrekey",
|
||||||
/* ePragTyp: */ PragTyp_HEXKEY,
|
/* ePragTyp: */ PragTyp_KEY,
|
||||||
/* ePragFlg: */ 0,
|
/* ePragFlg: */ 0,
|
||||||
/* ColNames: */ 0, 0,
|
/* ColNames: */ 0, 0,
|
||||||
/* iArg: */ 3 },
|
/* iArg: */ 3 },
|
||||||
|
|
|
@ -381,12 +381,12 @@ set pragma_def {
|
||||||
IF: defined(SQLITE_HAS_CODEC)
|
IF: defined(SQLITE_HAS_CODEC)
|
||||||
|
|
||||||
NAME: hexkey
|
NAME: hexkey
|
||||||
TYPE: HEXKEY
|
TYPE: KEY
|
||||||
ARG: 2
|
ARG: 2
|
||||||
IF: defined(SQLITE_HAS_CODEC)
|
IF: defined(SQLITE_HAS_CODEC)
|
||||||
|
|
||||||
NAME: hexrekey
|
NAME: hexrekey
|
||||||
TYPE: HEXKEY
|
TYPE: KEY
|
||||||
ARG: 3
|
ARG: 3
|
||||||
IF: defined(SQLITE_HAS_CODEC)
|
IF: defined(SQLITE_HAS_CODEC)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue