mirror of
https://github.com/sqlite/sqlite.git
synced 2026-01-06 08:01:16 +03:00
Small performance improvement for the new %#Q conversion in printf.
FossilOrigin-Name: 17e440781e68d7d3ea68c5144e1e08e183f0caef595a6c7ac4ce56489c60f476
This commit is contained in:
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
||||
C Consolidate\stwo\sdifferent\sUTF8\sencoders\sinto\sa\ssingle\ssubroutine.
|
||||
D 2025-02-25T11:47:34.550
|
||||
C Small\sperformance\simprovement\sfor\sthe\snew\s%#Q\sconversion\sin\sprintf.
|
||||
D 2025-02-25T12:18:27.029
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
|
||||
@@ -777,7 +777,7 @@ F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
|
||||
F src/pcache1.c 78d4935e510f7bed0fdd1a3f742c0e663b36a795f9dc7411161dc22bdae1245e
|
||||
F src/pragma.c c7ada272232e1182c4536d9637fa7b955a10bc1bd8d5a87d4dc9309dab827791
|
||||
F src/prepare.c 1832be043fce7d489959aae6f994c452d023914714c4d5457beaed51c0f3d126
|
||||
F src/printf.c b6056bd2818523255255af34d370e2665b4895e50476955de797368d92f8f31f
|
||||
F src/printf.c b373a8800e09fb888497b2bc640e455ee8ebc584a60f16368989394d5b895ac0
|
||||
F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
|
||||
F src/resolve.c 626c24b258b111f75c22107aa5614ad89810df3026f5ca071116d3fe75925c75
|
||||
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
|
||||
@@ -2211,8 +2211,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
|
||||
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
|
||||
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
P c3949852cee320c2e02123b99c33155c459b10b2ac8e4fe80b1b7624c9ce0817
|
||||
R 783f95f7f826d114483ba4d9a5fea8e7
|
||||
P 6208e494858b9d362efc7db4e8aac6f8e93fe51d2e038c94dfa97c55a74688a0
|
||||
R 5e3cbac5c36e856b76f244c18c63cff3
|
||||
U drh
|
||||
Z 0a01b2d715a4d18665f9611e7764aecb
|
||||
Z 71404ee027b8adeecdc3ccec4e60e22e
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
@@ -1 +1 @@
|
||||
6208e494858b9d362efc7db4e8aac6f8e93fe51d2e038c94dfa97c55a74688a0
|
||||
17e440781e68d7d3ea68c5144e1e08e183f0caef595a6c7ac4ce56489c60f476
|
||||
|
||||
30
src/printf.c
30
src/printf.c
@@ -757,7 +757,7 @@ void sqlite3_str_vappendf(
|
||||
case etESCAPE_Q: /* %Q: Escape ' and enclose in '...' */
|
||||
case etESCAPE_w: { /* %w: Escape " characters */
|
||||
i64 i, j, k, n;
|
||||
int isnull, needQuote = 0;
|
||||
int needQuote = 0;
|
||||
char ch;
|
||||
char *escarg;
|
||||
char q;
|
||||
@@ -767,18 +767,17 @@ void sqlite3_str_vappendf(
|
||||
}else{
|
||||
escarg = va_arg(ap,char*);
|
||||
}
|
||||
isnull = escarg==0;
|
||||
if( escarg==0 ){
|
||||
escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)");
|
||||
}else if( xtype==etESCAPE_Q ){
|
||||
needQuote = 1;
|
||||
}
|
||||
if( xtype==etESCAPE_w ){
|
||||
q = '"';
|
||||
flag_alternateform = 0;
|
||||
}else{
|
||||
q = '\'';
|
||||
}
|
||||
if( isnull ){
|
||||
escarg = (xtype==etESCAPE_Q ? "NULL" : "(NULL)");
|
||||
}else if( xtype==etESCAPE_Q ){
|
||||
needQuote = 1;
|
||||
}
|
||||
/* For %q, %Q, and %w, the precision is the number of bytes (or
|
||||
** characters if the ! flags is present) to use from the input.
|
||||
** Because of the extra quoting characters inserted, the number
|
||||
@@ -832,12 +831,12 @@ void sqlite3_str_vappendf(
|
||||
}
|
||||
}
|
||||
k = i;
|
||||
for(i=0; i<k; i++){
|
||||
bufpt[j++] = ch = escarg[i];
|
||||
if( ch==q ){
|
||||
bufpt[j++] = ch;
|
||||
}else if( flag_alternateform ){
|
||||
if( ch=='\\' ){
|
||||
if( flag_alternateform ){
|
||||
for(i=0; i<k; i++){
|
||||
bufpt[j++] = ch = escarg[i];
|
||||
if( ch==q ){
|
||||
bufpt[j++] = ch;
|
||||
}else if( ch=='\\' ){
|
||||
bufpt[j++] = '\\';
|
||||
}else if( ch<=0x1f ){
|
||||
bufpt[j-1] = '\\';
|
||||
@@ -848,6 +847,11 @@ void sqlite3_str_vappendf(
|
||||
bufpt[j++] = "0123456789abcdef"[ch&0xf];
|
||||
}
|
||||
}
|
||||
}else{
|
||||
for(i=0; i<k; i++){
|
||||
bufpt[j++] = ch = escarg[i];
|
||||
if( ch==q ) bufpt[j++] = ch;
|
||||
}
|
||||
}
|
||||
if( needQuote ){
|
||||
bufpt[j++] = '\'';
|
||||
|
||||
Reference in New Issue
Block a user