]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix minor issues with alignment and quoting. All legacy tests are now
authordrh <>
Sat, 8 Nov 2025 17:08:19 +0000 (17:08 +0000)
committerdrh <>
Sat, 8 Nov 2025 17:08:19 +0000 (17:08 +0000)
passing.

FossilOrigin-Name: 712b890531d351cf19d57d8cc6dced5cdd2c394d69fd1ace98298d79ddca269a

ext/qrf/qrf.c
manifest
manifest.uuid
src/shell.c.in
test/qrf01.test
test/shell2.test
test/shellA.test

index eee1b80e26d9bf1b8872bd558e4c2ae92d941947..16741277903a3d6cf3884d1e94499256c4970e83 100644 (file)
@@ -690,7 +690,11 @@ static void qrfEncodeText(Qrf *p, sqlite3_str *pOut, const char *zTxt){
   int iStart = sqlite3_str_length(pOut);
   switch( p->spec.eText ){
     case QRF_TEXT_Sql: {
-      sqlite3_str_appendf(pOut, "%Q", zTxt);
+      if( p->spec.eEsc==QRF_ESC_Off ){
+        sqlite3_str_appendf(pOut, "%Q", zTxt);
+      }else{
+        sqlite3_str_appendf(pOut, "%#Q", zTxt);
+      }
       break;
     }
     case QRF_TEXT_Csv: {
@@ -1221,11 +1225,20 @@ static void qrfBoxSeparator(
 static void qrfLoadAlignment(qrfColData *pData, Qrf *p){
   sqlite3_int64 i;
   memset(pData->aAlign, p->spec.eDfltAlign, pData->nCol);
-  for(i=0; i<pData->nCol && i<p->spec.nAlign; i++){
-    unsigned char ax = p->spec.aAlign[i];
-    if( (ax & QRF_ALIGN_HMASK)!=0 ){
-      pData->aAlign[i] = (ax & QRF_ALIGN_HMASK) |
-                          (pData->aAlign[i] & QRF_ALIGN_VMASK);
+  for(i=0; i<pData->nCol; i++){
+    if( i<p->spec.nAlign ){
+      unsigned char ax = p->spec.aAlign[i];
+      if( (ax & QRF_ALIGN_HMASK)!=0 ){
+        pData->aAlign[i] = (ax & QRF_ALIGN_HMASK) |
+                            (pData->aAlign[i] & QRF_ALIGN_VMASK);
+      }
+    }else if( i<p->spec.nWidth ){
+      if( p->spec.aWidth[i]<0 ){
+         pData->aAlign[i] = QRF_ALIGN_Right |
+                               (pData->aAlign[i] & QRF_ALIGN_VMASK);
+      }
+    }else{
+      break;
     }
   }
 }
@@ -1312,10 +1325,12 @@ static void qrfColumnar(Qrf *p){
   }
 
   /* Compute the width and alignment of every column */
-  if( p->spec.bColumnNames==QRF_Yes ){
-    memset(data.aAlign, p->spec.eTitleAlign, nColumn);
-  }else{
+  if( p->spec.bColumnNames==QRF_No ){
     qrfLoadAlignment(&data, p);
+  }else if( p->spec.eTitleAlign==QRF_Auto ){
+    memset(data.aAlign, QRF_ALIGN_Center, nColumn);
+  }else{
+    memset(data.aAlign, p->spec.eTitleAlign, nColumn);
   }
 
   for(i=0; i<nColumn; i++){
@@ -2004,7 +2019,7 @@ static void qrfOneSimpleRow(Qrf *p){
     default: {  /* QRF_STYLE_List */
       if( p->nRow==0 && p->spec.bColumnNames==QRF_Yes ){
         int saved_eText = p->spec.eText;
-        if( p->spec.eText!=QRF_TEXT_Csv ) p->spec.eText = QRF_TEXT_Off;
+        p->spec.eText = p->spec.eTitle;
         for(i=0; i<p->nCol; i++){
           const char *zCName = sqlite3_column_name(p->pStmt, i);
           if( i>0 ) sqlite3_str_appendall(p->pOut, p->spec.zColumnSep);
index 76ebd4f83b120cd048c166a4eb18005f4736bc20..678e74e6f684ff4cdb1f43e142abac37264eebec 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Miscellaneous\sfixes\sto\sthe\snew\salignment\sconfigurations.
-D 2025-11-08T15:25:07.110
+C Fix\sminor\sissues\swith\salignment\sand\squoting.\s\sAll\slegacy\stests\sare\snow\npassing.
+D 2025-11-08T17:08:19.763
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -417,7 +417,7 @@ F ext/misc/windirent.h 02211ce51f3034c675f2dbf4d228194d51b3ee05734678bad5106fff6
 F ext/misc/zipfile.c 09e6e3a3ff40a99677de3c0bc6569bd5f4709b1844ac3d1c1452a456c5a62f1c
 F ext/misc/zorder.c bddff2e1b9661a90c95c2a9a9c7ecd8908afab5763256294dd12d609d4664eee
 F ext/qrf/README.md 7c32e08e1cc5bb704f243a641ddfaf2f00152bbeb62c3a621efcf9371e6b156b
-F ext/qrf/qrf.c 0592756f5b4d072790c3ff052a56b40dd4fbcd3c1420f4c60cfd4f457a329f1b
+F ext/qrf/qrf.c 6586b0b3d06a19b025cca9d2058ae16c2bd2acf9808511fc607c196480fd283b
 F ext/qrf/qrf.h 3917767fdd7547bded156327f2b6bf3e1dbf6c7ea787f67f31453815986fe780
 F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8
 F ext/rbu/rbu1.test 25870dd7db7eb5597e2b4d6e29e7a7e095abf332660f67d89959552ce8f8f255
@@ -735,7 +735,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
 F src/resolve.c 5616fbcf3b833c7c705b24371828215ad0925d0c0073216c4f153348d5753f0a
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c ba9cd07ffa3277883c1986085f6ddc4320f4d35d5f212ab58df79a7ecc1a576a
-F src/shell.c.in 2a8ff6f666823459a9e65dc28c6f9825ec3625d77865c2d8db3e419a355baa3e
+F src/shell.c.in d355f1254c435152c65a3df76d117342bfe3ef84a94c05be84d1e246c2c8d5d2
 F src/sqlite.h.in 43f60117ce68847b9d4e7fa43c2ac42bb324185e66b924d3114b24d4037fc263
 F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
 F src/sqlite3ext.h 7f236ca1b175ffe03316d974ef57df79b3938466c28d2f95caef5e08c57f3a52
@@ -1506,7 +1506,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 6053b4680c9d939dd210d2536fa77d3e54ede9f44c2884db261a79612fa28399
+F test/qrf01.test 91d586648b8c847684a2849a77975a036115c51d6a2dfb543d9f27c5921578a1
 F test/qrf02.test 39b4afdc000bedccdafc0aecf17638df67a67aaa2d2942865ae6abcc48ba0e92
 F test/queryonly.test 5f653159e0f552f0552d43259890c1089391dcca
 F test/quick.test 1681febc928d686362d50057c642f77a02c62e57
@@ -1602,7 +1602,7 @@ F test/sharedB.test 1a84863d7a2204e0d42f2e1606577c5e92e4473fa37ea0f5bdf829e4bf8e
 F test/shared_err.test 32634e404a3317eeb94abc7a099c556a346fdb8fb3858dbe222a4cbb8926a939
 F test/sharedlock.test 5ede3c37439067c43b0198f580fd374ebf15d304
 F test/shell1.test 5b72afb03752278e18c7faeda7329e6118a04e07a4203837bea9d66866d2cd0b
-F test/shell2.test ab23f01ea2347e4b72bb2399af7ee82aa00f9c059141749f7c4064abca5ad728
+F test/shell2.test d8da6a06dcce1d8f04f776f918d4d57c28ddc28c54f3a44f95429794892e3a91
 F test/shell3.test 603b448e917537cf77be0f265c05c6f63bc677c63a533c8e96aae923b56f4a0e
 F test/shell4.test 03593fa7908a55f255916ffeda707cdf55680c777736e3da62b1d78cde0d684d
 F test/shell5.test 683f9b5df61192426d030874a04adcb15b5f14c5f3062e2637d4378a3e7224f8
@@ -1610,7 +1610,7 @@ F test/shell6.test e3b883b61d4916b6906678a35f9d19054861123ad91b856461e0a456273bd
 F test/shell7.test 43fd8e511c533bab5232e95c7b4be93b243451709e89582600d4b6e67693d5c3
 F test/shell8.test 641cf21a99c59404c24e3062923734951c4099a6b6b6520de00cf7a1249ee871
 F test/shell9.test 8742a5b390cdcef6369f5aa223e415aa4255a4129ef249b177887dc635a87209
-F test/shellA.test 4ecff8b7b2c0122ba8174abfbcc4b0f59e44d80f2a911068f8cd4cfc6661032d
+F test/shellA.test 601e9efaa2604a0e92b8dc0093cbc08d482d7175d2a6c617c70e1acef98ffb4d
 F test/shmlock.test 9f1f729a7fe2c46c88b156af819ac9b72c0714ac6f7246638a73c5752b5fd13c
 F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3
 F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
@@ -2173,8 +2173,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 5dadfd7f41764ddfed39bb49bbde3a54d8f282bb494c9c2abbba37d0995a7f8e
-R b5ca6911301d259c44cb06229f6e8f82
+P 787fb4c2ac80db6552bc7a740c3c3c63c0c8414cb4e7db80d367b4b5512519d0
+R 2c11f8dfd3215a866ba4691d29f4b62f
 U drh
-Z 62a882cb37c25b41ad74b0d2277aeced
+Z 63b56e985be7fc0017e9304d5e94721c
 # Remove this line to create a well-formed Fossil manifest.
index 23bc4676b8ae02f09c24e9601d2873f2cd099320..e278d7e3f7b32d11621149d05d94895ea857ac85 100644 (file)
@@ -1 +1 @@
-787fb4c2ac80db6552bc7a740c3c3c63c0c8414cb4e7db80d367b4b5512519d0
+712b890531d351cf19d57d8cc6dced5cdd2c394d69fd1ace98298d79ddca269a
index a604babccb2698a9bd79a32ebe6724cf10f65cb0..51a615aa18a171c48407b67d9e249dbac6de277b 100644 (file)
@@ -4276,6 +4276,9 @@ static int shell_exec(
   spec.zTableName = pArg->zDestTable;
   spec.bWordWrap = pArg->cmOpts.bWordWrap!=0 ? QRF_SW_On : QRF_SW_Off;
   spec.mxColWidth = pArg->cmOpts.iWrap;
+  if( pArg->cmOpts.bQuote ){
+    spec.eText = QRF_TEXT_Sql;
+  }
   switch( pArg->eEscMode ){
     case SHELL_ESC_ASCII:  spec.eEsc = QRF_ESC_Ascii;  break;
     case SHELL_ESC_SYMBOL: spec.eEsc = QRF_ESC_Symbol; break;
@@ -4361,7 +4364,7 @@ static int shell_exec(
       bind_prepared_stmt(pArg, pStmt);
       if( eStyle<100 ){
         spec.eStyle = eStyle;
-        sqlite3_format_query_result(pStmt, &spec, 0);
+        sqlite3_format_query_result(pStmt, &spec, pzErrMsg);
       }else{
         exec_prepared_stmt(pArg, pStmt);
       }
index 86ec135e821e2271e9218ba4096c48a651dcba55..4a4b610e2eb88e27d91bbbf2b28ad33488eb3785 100644 (file)
@@ -272,7 +272,7 @@ BLOB||Ἀμήν
 }
 do_test 1.112 {
   set result "\n[db format -style list -columnnames on -text sql -null NULL \
-                 {SELECT * FROM t1}]"
+                 -title off {SELECT * FROM t1}]"
 } {
 a|b|c
 1|2.5|'three'
@@ -308,7 +308,7 @@ x'424c4f42',NULL,'Ἀμήν'
 do_test 1.131 {
   set result "\n[db format -style quote -columnnames on {SELECT * FROM t1}]"
 } {
-a,b,c
+'a','b','c'
 1,2.5,'three'
 x'424c4f42',NULL,'Ἀμήν'
 }
index 5f700a9a1d0bee22e4a7fbc194ae7ac4d747f248..eb1903ce27d04b483ed6ac2f9465d26732bbab49 100644 (file)
@@ -64,7 +64,7 @@ do_test shell2-1.3 {
 
     UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1;
   }
-} {1 {Runtime error near line 9: too many levels of trigger recursion}}
+} {1 {Error near line 9: too many levels of trigger recursion}}
 
 
 
index f3959d42836da9faf59160b19385af43200ca213..52697689708fafba0f509edc4089f4813c826ee5 100644 (file)
@@ -116,8 +116,7 @@ do_test shellA-2.1 {
 } {
 1,'line with '' single quote'
 2,unistr('\u001b[31mVT-100 codes\u001b[0m')
-6,'new
-line'
+6,unistr('new\u000aline')
 7,unistr('carriage\u000dreturn')
 8,'last line'
 }
@@ -203,14 +202,9 @@ do_test_with_ansi_output shellA-4.2 {
 │ a │                     x                     │
 ├───┼───────────────────────────────────────────┤
 │ 1 │ 'line with '' single quote'               │
-├───┼───────────────────────────────────────────┤
 │ 2 │ unistr('\u001b[31mVT-100 codes\u001b[0m') │
-├───┼───────────────────────────────────────────┤
-│ 6 │ 'new                                      │
-│   │ line'                                     │
-├───┼───────────────────────────────────────────┤
+│ 6 │ unistr('new\u000aline')                   │
 │ 7 │ unistr('carriage\u000dreturn')            │
-├───┼───────────────────────────────────────────┤
 │ 8 │ 'last line'                               │
 └───┴───────────────────────────────────────────┘
 }