]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the QRF_BLOB_Size encoding for BLOBs in QRF.
authordrh <>
Mon, 24 Nov 2025 16:46:08 +0000 (16:46 +0000)
committerdrh <>
Mon, 24 Nov 2025 16:46:08 +0000 (16:46 +0000)
FossilOrigin-Name: bafff695d34202377b937cb4ca9f8a7611ae286d9ab927e6c71faa3cd99496e5

ext/qrf/qrf.c
ext/qrf/qrf.h
manifest
manifest.uuid
src/shell.c.in
src/tclsqlite.c
test/qrf01.test

index 77c5a14e00e109df64c5cdb5e446420e97f3d894..7b314f1f2afcdd23394eefd9e2b1471850a19c67 100644 (file)
@@ -983,6 +983,11 @@ static void qrfRenderValue(Qrf *p, sqlite3_str *pOut, int iCol){
           }
           break;
         }
+        case QRF_BLOB_Size: {
+          int nBlob = sqlite3_column_bytes(p->pStmt,iCol);
+          sqlite3_str_appendf(pOut, "(%d-byte blob)", nBlob);
+          break;
+        }
         default: {
           const char *zTxt = (const char*)sqlite3_column_text(p->pStmt,iCol);
           qrfEncodeText(p, pOut, zTxt);
index 43e7b4cc110790cca9055a456ffa4ab845e46a0d..5f70b1bb2472182ec029111c55deb0457d9b435c 100644 (file)
@@ -120,6 +120,7 @@ int sqlite3_format_query_result(
 #define QRF_BLOB_Hex     3 /* Hexadecimal representation */
 #define QRF_BLOB_Tcl     4 /* "\000" notation */
 #define QRF_BLOB_Json    5 /* A JSON string */
+#define QRF_BLOB_Size    6 /* Display the blob size only */
 
 /*
 ** Control-character escape modes.
index 8af98fadc05c8ee0658a59860ad7923f51b197e1..136437db4ae948a6d8099568d3e1537a195bb32c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\san\sassert()\sfailure\scaused\sby\sprocessing\sa\sCREATE\sTABLE\sAS\s...\scommand\sthat\sgenerates\svery\slong\scolumn\snames.
-D 2025-11-24T16:04:07.694
+C Add\sthe\sQRF_BLOB_Size\sencoding\sfor\sBLOBs\sin\sQRF.
+D 2025-11-24T16:46:08.093
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -417,8 +417,8 @@ F ext/misc/windirent.h 02211ce51f3034c675f2dbf4d228194d51b3ee05734678bad5106fff6
 F ext/misc/zipfile.c 09e6e3a3ff40a99677de3c0bc6569bd5f4709b1844ac3d1c1452a456c5a62f1c
 F ext/misc/zorder.c bddff2e1b9661a90c95c2a9a9c7ecd8908afab5763256294dd12d609d4664eee
 F ext/qrf/README.md dd565fd1ca0c46ea37dbf4d496e368b9ecade768c92669640bc106e039629016
-F ext/qrf/qrf.c 7f8498231be49e9fa6290f75c611ccb8658e2d50f0e0dc4207923e59bc63c6f9
-F ext/qrf/qrf.h bccc9d1c1b6a05fa0da56332bba29d85782318926f022c849114a63da916393f
+F ext/qrf/qrf.c 9e3eaf868d4cfbabfb1b26b54537ee46f8345a5cef4bbc7b2920563bba5907df
+F ext/qrf/qrf.h a758fd35e488ef93c7fe145aa96c228c985d3c4691eb89da6328ef3ebe1fedce
 F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8
 F ext/rbu/rbu1.test 25870dd7db7eb5597e2b4d6e29e7a7e095abf332660f67d89959552ce8f8f255
 F ext/rbu/rbu10.test 7c22caa32c2ff26983ca8320779a31495a6555737684af7aba3daaf762ef3363
@@ -735,7 +735,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 5616fbcf3b833c7c705b24371828215ad0925d0c0073216c4f153348d5753f0a
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c 6a509cddd815d64f6141e539fff633a518a393772a44dffb4490f7fc3f0d83a9
-F src/shell.c.in 3ba5552c72be69510a7f38d3af17c7491383af0107e2cb8326e23902df04d169
+F src/shell.c.in 6de2bcea19da8782879da7f763d94564f30424786628e094b903b0bb534e9e0a
 F src/sqlite.h.in f1363321ca55cc2feaa289e9fe6dfb08102a28c54edf005564711a2348b06eef
 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
 F src/sqlite3ext.h 5d5330f5f8461f5ce74960436ddcfa53ecd09c2b8b23901e22ae38aec3243998
@@ -743,7 +743,7 @@ F src/sqliteInt.h a89c3a9296928dffcb4c287df176a739f9cf620c7c9d33aec59e8efb9b39cb
 F src/sqliteLimit.h 0a5516b4ec192a205c541e05f67009028a9451dc6678aae4cf8e68596903c246
 F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592
 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
-F src/tclsqlite.c f5aca78b32b2ba823a6dc7dbb9b2272c93e0f71df2f93104d5a61a6348f3b115
+F src/tclsqlite.c 3a5f08de6c6d3b7b0d1b68f585113e2310e875e9517548797eac34375d7bcbfb
 F src/tclsqlite.h 614b3780a62522bc9f8f2b9fb22689e8009958e7aa77e572d0f3149050af348a
 F src/test1.c 0e71fbcb484a271564e98e0158192c28c24f5521594218c3ba48bcb4cf634f91
 F src/test2.c 62f0830958f9075692c29c6de51b495ae8969e1bef85f239ffcd9ba5fb44a5ff
@@ -1509,7 +1509,7 @@ F test/printf2.test 3f55c1871a5a65507416076f6eb97e738d5210aeda7595a74ee895f2224c
 F test/progress.test ebab27f670bd0d4eb9d20d49cef96e68141d92fb
 F test/ptrchng.test ef1aa72d6cf35a2bbd0869a649b744e9d84977fc
 F test/pushdown.test 46a626ef1c0ca79b85296ff2e078b9da20a50e9b804b38f441590c3987580ddd
-F test/qrf01.test a6ecc051613ea4dde796e4ff20fdb2c59a2138faf926d90a2a92c1e291776617
+F test/qrf01.test e92c24195b129606210f5ff3b21e6a1468999c885d3b7f4f62bdf284221969e4
 F test/qrf02.test 39b4afdc000bedccdafc0aecf17638df67a67aaa2d2942865ae6abcc48ba0e92
 F test/qrf03.test 9de53aea459f5a127283db03cbb6011500757685646d21aa3c29c44c6ef23e86
 F test/qrf04.test 0894692c998d2401dcc33449c02051b503ecce0c94217be54fb007c82d2d1379
@@ -2179,8 +2179,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P b7417497d1fdbf588a8aca8499d27dee560d728a1eafbf44b34fe3b119423d98
-R 6f2cf2d409836a25acd447accb3d9a39
-U dan
-Z 9702b223c2d7b09c40aa31557e003c8a
+P 06554a079d6b299986fc5eeb201595fad14f77c0efcf2d65bd2f36bbc325892c
+R c86d5c0a3025fa76b0f43eac37451ab3
+U drh
+Z c1bfe35d41365772ab7fa80ff544b5b7
 # Remove this line to create a well-formed Fossil manifest.
index a5c2457474344cb6f588292f46966623bfad1e55..2b8f22a18199306744dd1f4b228da1997af4392b 100644 (file)
@@ -1 +1 @@
-06554a079d6b299986fc5eeb201595fad14f77c0efcf2d65bd2f36bbc325892c
+bafff695d34202377b937cb4ca9f8a7611ae286d9ab927e6c71faa3cd99496e5
index 7b0aa72e62197ad4610be4b8a152528e8c257702..07357df95c6639277fbd7acd05e307a719282cfd 100644 (file)
@@ -7902,7 +7902,7 @@ static int dotCmdMode(ShellState *p){
           p->mode.spec.eText = QRF_TEXT_Json;
           p->mode.spec.eBlob = QRF_BLOB_Json;
           break;
-        default:  /* off */
+        default: /* off */
           p->mode.spec.eText = QRF_TEXT_Plain;
           p->mode.spec.eBlob = QRF_BLOB_Text;
           break;
index 01e6a962a2e873beaa5c3120786b29f89f702aa1..db22f633a62f4e0a93769121ce7d810a252fac00 100644 (file)
@@ -2219,11 +2219,13 @@ static int dbQrf(SqliteDb *pDb, int objc, Tcl_Obj *const*objv){
     }else if( strcmp(zArg,"-blob")==0 ){
       static const char *azBlob[] = {
         "auto",             "hex",              "json",
-        "tcl",              "text",             "sql",      0
+        "tcl",              "text",             "sql",
+        "size",             0
       };
       static unsigned char aBlobMap[] = {
         QRF_BLOB_Auto,      QRF_BLOB_Hex,       QRF_BLOB_Json,
-        QRF_BLOB_Tcl,       QRF_BLOB_Text,      QRF_BLOB_Sql
+        QRF_BLOB_Tcl,       QRF_BLOB_Text,      QRF_BLOB_Sql,
+        QRF_BLOB_Size
       };
       int blob;
       rc = Tcl_GetIndexFromObj(pDb->interp, objv[i+1], azBlob,
index 3f8b989b76bf285bab186268a98525e58bdf2c16..a3fe83cb22c8ffae5e964a5e16f9eac6edb99e0e 100644 (file)
@@ -76,7 +76,7 @@ do_test 1.14 {
 do_test 1.15 {
   catch {db format -text sql -blob unk {SELECT * FROM t1}} res
   set res
-} {bad BLOB encoding (-blob) "unk": must be auto, hex, json, tcl, text, or sql}
+} {bad BLOB encoding (-blob) "unk": must be auto, hex, json, tcl, text, sql, or size}
 do_test 1.16 {
   catch {db format -text sql -style unk {SELECT * FROM t1}} res
   set res
@@ -989,6 +989,16 @@ cinderella-cinderella  gertrude  lisa    paula     tammy    xanthippe
 daniel                 harold    mike    quintus   ulysses  yates
 }
 
+do_test 11.1 {
+  set result "\n[db format -style table -blob size {SELECT randomblob(1234)}]"
+} {
++------------------+
+| randomblob(1234) |
++------------------+
+| (1234-byte blob) |
++------------------+
+}
+
 db close
 
 finish_test