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:
drh 2019-05-21 17:04:27 +00:00
parent 7ed6c068f5
commit 51e441da2b
5 changed files with 37 additions and 36 deletions

View File

@ -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

View File

@ -1 +1 @@
a3e77c7776ab01dadb9d30d6067ac97e9d4b09ec54834558a5fa1ffed7b52c72 b3692c406f7ba62587c9d3256f888748393519680e9e2db53f59557f1a300e05

View File

@ -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;

View File

@ -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 },

View File

@ -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)