From: drh <> Date: Thu, 23 Oct 2025 16:57:57 +0000 (+0000) Subject: Implement LINE mode. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=09efb929008426c10f5940eec42a66d6a50b7a96;p=thirdparty%2Fsqlite.git Implement LINE mode. FossilOrigin-Name: b4c4ba0ad53c6685410700aa332ebec75c9e32848f881b31bc257f86f7befe2c --- diff --git a/ext/qrf/qrf.c b/ext/qrf/qrf.c index 756d97f4e7..fc1d8cc3a2 100644 --- a/ext/qrf/qrf.c +++ b/ext/qrf/qrf.c @@ -28,6 +28,8 @@ struct Qrf { sqlite3_str *pOut; /* Accumulated output */ int iErr; /* Error code */ int nCol; /* Number of output columns */ + int mxColWth; /* Maximum size of any column name */ + const char **azCol; /* Names of output columns */ sqlite3_int64 nRow; /* Number of rows handled so far */ int *actualWidth; /* Actual width of each column */ sqlite3_qrf_spec spec; /* Copy of the original spec */ @@ -1131,6 +1133,11 @@ static void qrfInitialize( if( p->spec.zRowSep==0 ) p->spec.zRowSep = "\n"; break; } + case QRF_MODE_Line: { + if( p->spec.zColumnSep==0 ) p->spec.zColumnSep = "\n"; + if( p->spec.zRowSep==0 ) p->spec.zRowSep = "\n"; + break; + } case QRF_MODE_Json: { p->spec.zColumnSep = ","; p->spec.eQuote = QRF_TXT_Json; @@ -1226,6 +1233,36 @@ static void qrfOneSimpleRow(Qrf *p){ qrfWrite(p); break; } + case QRF_MODE_Line: { + if( p->azCol==0 ){ + p->azCol = sqlite3_malloc64( p->nCol*sizeof(p->azCol[0]) ); + if( p->azCol==0 ){ + qrfOom(p); + break; + } + p->mxColWth = 0; + for(i=0; inCol; i++){ + int sz; + p->azCol[i] = sqlite3_column_name(p->pStmt, i); + if( p->azCol[i]==0 ) p->azCol[i] = "unknown"; + sz = qrfDisplayLength(p->azCol[i]); + if( sz > p->mxColWth ) p->mxColWth = sz; + } + } + if( p->nRow ) sqlite3_str_append(p->pOut, "\n", 1); + for(i=0; inCol; i++){ + qrfWidthPrint(p, p->pOut, -p->mxColWth, p->azCol[i]); + sqlite3_str_append(p->pOut, " = ", 3); + qrfRenderValue(p, p->pOut, i); + if( inCol-1 ){ + sqlite3_str_appendall(p->pOut, p->spec.zColumnSep); + }else{ + sqlite3_str_appendall(p->pOut, p->spec.zRowSep); + } + } + qrfWrite(p); + break; + } default: { /* QRF_MODE_List */ if( p->nRow==0 && p->spec.bShowCNames ){ for(i=0; inCol; i++){ @@ -1270,6 +1307,8 @@ static void qrfFinalize(Qrf *p){ sqlite3_free(sqlite3_str_finish(p->pOut)); } if( p->actualWidth ) sqlite3_free(p->actualWidth); + if( p->azCol ) sqlite3_free(p->azCol); + } /* diff --git a/manifest b/manifest index c9c7f8ed3f..9436980603 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sHTML\sand\sINSERT\smodes. -D 2025-10-23T16:40:29.012 +C Implement\sLINE\smode. +D 2025-10-23T16:57:57.397 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/qrf-tester.c 4212d01e1408591c6e6b081d119e125c97efea5a2f97f4ff05c28b8a5e1272bc -F ext/qrf/qrf.c e707e7fd3cce002b03b3e4cc6d29f9db361868bee4477a5877808ce50151a341 +F ext/qrf/qrf.c 8f233d4fa1d2297f0bafdbec9eef6d88f4ec6cdf2e7af3ce49121358ba693678 F ext/qrf/qrf.h 8ad45ac2a8661010c936778bb017cb691fddf2fe27546feb28ca67a0f88967e3 F ext/qrf/qrf.md 4eea619191dab7bbf483eff3fe3b074a07d7c8c50bc86070a4485797d386d1ff F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8 @@ -2175,8 +2175,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P c3b6339162a4feb6de9828d613bf2c5a43f2b0e5dead9cf5c24cf78ac821b305 -R 1d591d00c80d336feb41c54837a446e3 +P 6d695ecdfdc5dca78b430263fc298bb6c8182a2406dc79b70f159abd37463f1e +R 84cb7350edc1eb542c2ce2b06c63220a U drh -Z a4468ebf3d445598a251697367a39c5a +Z 05eec1b9c8d3ba664d59bb59be097c36 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 86ac249fd0..0ef1605e84 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6d695ecdfdc5dca78b430263fc298bb6c8182a2406dc79b70f159abd37463f1e +b4c4ba0ad53c6685410700aa332ebec75c9e32848f881b31bc257f86f7befe2c