diff options
author | drh <drh@noemail.net> | 2009-11-25 19:35:23 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2009-11-25 19:35:23 +0000 |
commit | c1bd1b33a593aa5d67ae8a7e399c7f02a8dcb5f4 (patch) | |
tree | 932dd25670aa9a4978ed546a5b8cfc4c5592c696 /src | |
parent | c7bc4fde3c5ed76ec4dae4e5f5f1be8e8901703d (diff) | |
download | sqlite-c1bd1b33a593aa5d67ae8a7e399c7f02a8dcb5f4.tar.gz sqlite-c1bd1b33a593aa5d67ae8a7e399c7f02a8dcb5f4.zip |
Get trace with parameter insertion working for UTF16 databases.
FossilOrigin-Name: 01d5451af0bd2743eb74b98f2e77dd2c75f403b6
Diffstat (limited to 'src')
-rw-r--r-- | src/vdbetrace.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/vdbetrace.c b/src/vdbetrace.c index f43fe5532..9b23375f6 100644 --- a/src/vdbetrace.c +++ b/src/vdbetrace.c @@ -93,6 +93,9 @@ char *sqlite3VdbeExpandSql( } }else{ assert( zRawSql[0]==':' || zRawSql[0]=='$' || zRawSql[0]=='@' ); + testcase( zRawSql[0]==':' ); + testcase( zRawSql[0]=='$' ); + testcase( zRawSql[0]=='@' ); n = sqlite3GetToken((u8*)zRawSql, &dummy); idx = 0; for(i=0, pOp=p->aOp; ALWAYS(i<p->nOp); i++, pOp++){ @@ -116,7 +119,20 @@ char *sqlite3VdbeExpandSql( }else if( pVar->flags & MEM_Real ){ sqlite3XPrintf(&out, "%!.15g", pVar->r); }else if( pVar->flags & MEM_Str ){ - sqlite3XPrintf(&out, "'%.*q'", pVar->n, pVar->z); +#ifndef SQLITE_OMIT_UTF16 + if( ENC(db)!=SQLITE_UTF8 ){ + Mem utf8; + memset(&utf8, 0, sizeof(utf8)); + utf8.db = db; + sqlite3VdbeMemSetStr(&utf8, pVar->z, pVar->n, ENC(db), SQLITE_STATIC); + sqlite3VdbeChangeEncoding(&utf8, SQLITE_UTF8); + sqlite3XPrintf(&out, "'%.*q'", utf8.n, utf8.z); + sqlite3VdbeMemRelease(&utf8); + }else +#endif + { + sqlite3XPrintf(&out, "'%.*q'", pVar->n, pVar->z); + } }else{ assert( pVar->flags & MEM_Blob ); sqlite3StrAccumAppend(&out, "x'", 2); |