From: drh <> Date: Sat, 8 Nov 2025 17:08:19 +0000 (+0000) Subject: Fix minor issues with alignment and quoting. All legacy tests are now X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44aea46a078765480022b1313a4421ac40c34e00;p=thirdparty%2Fsqlite.git Fix minor issues with alignment and quoting. All legacy tests are now passing. FossilOrigin-Name: 712b890531d351cf19d57d8cc6dced5cdd2c394d69fd1ace98298d79ddca269a --- diff --git a/ext/qrf/qrf.c b/ext/qrf/qrf.c index eee1b80e26..1674127790 100644 --- a/ext/qrf/qrf.c +++ b/ext/qrf/qrf.c @@ -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; inCol && ispec.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; inCol; i++){ + if( ispec.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( ispec.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; inRow==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; inCol; i++){ const char *zCName = sqlite3_column_name(p->pStmt, i); if( i>0 ) sqlite3_str_appendall(p->pOut, p->spec.zColumnSep); diff --git a/manifest b/manifest index 76ebd4f83b..678e74e6f6 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index 23bc4676b8..e278d7e3f7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -787fb4c2ac80db6552bc7a740c3c3c63c0c8414cb4e7db80d367b4b5512519d0 +712b890531d351cf19d57d8cc6dced5cdd2c394d69fd1ace98298d79ddca269a diff --git a/src/shell.c.in b/src/shell.c.in index a604babccb..51a615aa18 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -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); } diff --git a/test/qrf01.test b/test/qrf01.test index 86ec135e82..4a4b610e2e 100644 --- a/test/qrf01.test +++ b/test/qrf01.test @@ -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,'Ἀμήν' } diff --git a/test/shell2.test b/test/shell2.test index 5f700a9a1d..eb1903ce27 100644 --- a/test/shell2.test +++ b/test/shell2.test @@ -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}} diff --git a/test/shellA.test b/test/shellA.test index f3959d4283..5269768970 100644 --- a/test/shellA.test +++ b/test/shellA.test @@ -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' │ └───┴───────────────────────────────────────────┘ }