1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-23 21:49:02 +03:00

Refactor "realfmt"→"fpfmt" and "intfmt"→"ifmt".

FossilOrigin-Name: 17277813d101187d85755b7bad3f1c95380335021e13ee368be0add0c8c346b3
This commit is contained in:
drh
2026-08-15 10:10:17 +00:00
parent 753df3d91a
commit c799c15dbe
9 changed files with 102 additions and 102 deletions

View File

@@ -132,8 +132,8 @@ struct sqlite3_qrf_spec {
char **pzOutput; /* Storage location for output string */
/* The following are available in iVersion 2 and later */
unsigned char bRowCount; /* Show the number of rows at end of each query */
char *zIntFmt; /* Format string for integers */
char *zRealFmt; /* Format string for floating point */
char *zIFmt; /* Format string for integers */
char *zFpFmt; /* Format string for floating point */
/* Additional fields may be added in the future */
};
~~~
@@ -608,9 +608,9 @@ If the value of bRowCount is QRF_Yes, then an extra line of text
of the form "(N rows)" might be appended to the end of query output,
depending on eStyle.
### 2.19 Number Formatting (zIntFmt and zRealFmt)
### 2.19 Number Formatting (zIFmt and zFpFmt)
If the zIntFmt and zRealFmt fields are a short printf-style format
If the zIFmt and zFpFmt fields are a short printf-style format
string, than that formatting string is used to render integer and
floating-point values, respectively. The width and precision fields
of the format string (if present) must not exceed three decimal digits.

View File

@@ -118,11 +118,11 @@ static const char qrfCType[] = {
#endif
/*
** The argument is a proposed format string for the zIntFmt or zRealFmt
** The argument is a proposed format string for the zIFmt or zFpFmt
** parameters. Return value indicates:
**
** 0 The input is not a valid format string. If this string
** appears in either zIntFmt or zRealFmt, it will be ignored.
** appears in either zIFmt or zFpFmt, it will be ignored.
**
** 1 The input is a valid format string for integers.
**
@@ -1142,14 +1142,14 @@ static void qrfRenderValue(Qrf *p, sqlite3_str *pOut, int iCol){
}
switch( sqlite3_column_type(p->pStmt,iCol) ){
case SQLITE_INTEGER: {
sqlite3_str_appendf(pOut, p->spec.zIntFmt,
sqlite3_str_appendf(pOut, p->spec.zIFmt,
sqlite3_column_int64(p->pStmt,iCol));
break;
}
case SQLITE_FLOAT: {
if( p->spec.zRealFmt ){
if( p->spec.zFpFmt ){
double r = sqlite3_column_double(p->pStmt,iCol);
sqlite3_str_appendf(pOut,p->spec.zRealFmt,r);
sqlite3_str_appendf(pOut,p->spec.zFpFmt,r);
}else{
const char *zTxt = (const char*)sqlite3_column_text(p->pStmt,iCol);
sqlite3_str_appendall(pOut, zTxt);
@@ -3016,19 +3016,19 @@ qrf_reinit:
}
if( p->spec.zColumnSep==0 ) p->spec.zColumnSep = ",";
if( p->spec.zRowSep==0 ) p->spec.zRowSep = "\n";
if( p->spec.zIntFmt==0 || sqlite3_qrf_ckformat(p->spec.zIntFmt)!=1 ){
p->spec.zIntFmt = "%lld";
if( p->spec.zIFmt==0 || sqlite3_qrf_ckformat(p->spec.zIFmt)!=1 ){
p->spec.zIFmt = "%lld";
}else{
size_t n = strlen(p->spec.zIntFmt);
memcpy(p->zFmt, p->spec.zIntFmt, n-1);
size_t n = strlen(p->spec.zIFmt);
memcpy(p->zFmt, p->spec.zIFmt, n-1);
p->zFmt[n-1] = 'l';
p->zFmt[n] = 'l';
p->zFmt[n+1] = p->spec.zIntFmt[n-1];
p->zFmt[n+1] = p->spec.zIFmt[n-1];
p->zFmt[n+2] = 0;
p->spec.zIntFmt = p->zFmt;
p->spec.zIFmt = p->zFmt;
}
if( p->spec.zRealFmt && sqlite3_qrf_ckformat(p->spec.zRealFmt)!=2 ){
p->spec.zRealFmt = 0;
if( p->spec.zFpFmt && sqlite3_qrf_ckformat(p->spec.zFpFmt)!=2 ){
p->spec.zFpFmt = 0;
}
}

View File

@@ -59,8 +59,8 @@ struct sqlite3_qrf_spec {
char **pzOutput; /* Storage location for output string */
/* The following are available in iVersion 2 and later */
unsigned char bRowCount; /* Show the number of rows at end of each query */
char *zIntFmt; /* Format string for integers */
char *zRealFmt; /* Format string for floating point */
char *zIFmt; /* Format string for integers */
char *zFpFmt; /* Format string for floating point */
/* Additional fields may be added in the future */
};

View File

@@ -1,5 +1,5 @@
C Remove\sredundant\soffsetof\sdefinition\sfrom\sqrf.c.
D 2026-08-14T18:49:42.749
C Refactor\s"realfmt"→"fpfmt"\sand\s"intfmt"→"ifmt".
D 2026-08-15T10:10:17.514
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -423,10 +423,10 @@ F ext/misc/wholenumber.c e41953e078894e66a0ff05dd6c76a61f904828c9a4620c7255fac26
F ext/misc/windirent.h 02211ce51f3034c675f2dbf4d228194d51b3ee05734678bad5106fff6292e60c
F ext/misc/zipfile.c 84d8c265f6d1835327009458413b4cc017c5a9e19936583b562bd6808a659601
F ext/misc/zorder.c bddff2e1b9661a90c95c2a9a9c7ecd8908afab5763256294dd12d609d4664eee
F ext/qrf/README.md 40377f2b4acb15dd2d8a8894674c52f0b1498ad439a26bfb64800f0bc0e42e3a
F ext/qrf/README.md c5c47a8b82ee870557ec9c6734bf93c296ae4821d33cf60253b36f2fcee09601
F ext/qrf/dev-notes.md e68a6d91ce4c7eb296ef2daadc2bb79c95c317ad15b9fafe40850c67b29c2430
F ext/qrf/qrf.c b30c9dfdc29a7d6bfb51029797f391416b195b45114896f9b4ab822bdfa37e6a
F ext/qrf/qrf.h 62208aefef5714b9e9294f993a653f3ec5fb85a5873e5fe3e88df34c90f1bcab
F ext/qrf/qrf.c 2acebfc0a8ab654b0dc0b4b225a5b3a8d435c54692d12287e505ff740ff6f768
F ext/qrf/qrf.h 82016075681a58b8eaf260eda49205ad10c5a4940d5673a152340b6b19440f7f
F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8
F ext/rbu/rbu1.test 25870dd7db7eb5597e2b4d6e29e7a7e095abf332660f67d89959552ce8f8f255
F ext/rbu/rbu10.test 7c22caa32c2ff26983ca8320779a31495a6555737684af7aba3daaf762ef3363
@@ -743,7 +743,7 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
F src/resolve.c 7145e41ad75e04a811b326aa5faf83c2e071480fabd9fc825055a6b889e6cb86
F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
F src/select.c 7720e5e4ffcdf630691a2208e284a5b4eb507f51a06a380487b10ef5f6a9c8dc
F src/shell.c.in 450774a5fbe08ed73ae973cf8ab6bf04bc4480fcf4141094073aec69e80d099a
F src/shell.c.in a4e702b7e4acde729712b08cab8e9888ebbd468887d05b4e5799509b41150fe8
F src/sqlite.h.in 2101a2b494cbc282d0dc1c3f631c4fb83060c52876cc9d7615b091ad66d932b1
F src/sqlite3.rc 015537e6ac1eec6c7050e17b616c2ffe6f70fca241835a84a4f0d5937383c479
F src/sqlite3ext.h 0efd4723bad9124ea1f581d9f1ea0254ac1c6f3e5fb29e4f3dcf36c72485a456
@@ -751,7 +751,7 @@ F src/sqliteInt.h e024c4d4d6ec812e087c46126a5aea9ca3b386240459da6013aab90a9d18cf
F src/sqliteLimit.h 7617f2ee673dab382046beba4552283f442cf1a181bb169ac38eb908135dd8da
F src/status.c 7565d63a79aa2f326339a24a0461a60096d0bd2bce711fefb50b5c89335f3592
F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
F src/tclsqlite.c e827fa90c2f7571223a83f2a13b0105232730cb8496052bf09836870cab19396
F src/tclsqlite.c 935275eaafba7a737d7c44cb1626ae0ce3c273576bb442b00fab3b7d4acc1e48
F src/tclsqlite.h 614b3780a62522bc9f8f2b9fb22689e8009958e7aa77e572d0f3149050af348a
F src/test1.c bd9e5123ef2136c960a16c09a1abfbcb6c1498e5193deb2acee188260a31a473
F src/test2.c a61ed01d9264a1db74ab42fbc981fc66165f85d5e3947e92be61a73e79ec4f2d
@@ -1465,7 +1465,7 @@ F test/mmap4.test 2e2b4e32555b58da15176e6fe750f17c9dcf7f93
F test/mmapcorrupt.test 470fb44fe92e99c1d23701d156f8c17865f5b027063c9119dcfdb842791f4465
F test/mmapfault.test d4c9eff9cd8c2dc14bc43e71e042f175b0a26fe3
F test/mmapwarm.test 2272005969cd17a910077bd5082f70bc1fefad9a875afec7fc9af483898ecaf3
F test/modeA.sql 33f17eac6b2a6ff7ce07120a066b3b3a5cb95b1aeed36807ef562f602518af47
F test/modeA.sql a6830e8742876f74d0eab9047d44cece0fdf0bf82a323735af0fc86dc14c27d8
F test/multiplex.test d74c034e52805f6de8cc5432cef8c9eb774bb64ec29b83a22effc8ca4dac1f08
F test/multiplex2.test 580ca5817c7edbe4cc68fa150609c9473393003a
F test/multiplex3.test fac575e0b1b852025575a6a8357701d80933e98b5d2fe6d35ddaa68f92f6a1f7
@@ -1537,7 +1537,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 8006b3a480b1318bd88854a984cea6592f199416d39e63b99dc0fd6266b4cbc4
F test/qrf01.test dfd8ef8bfb3765bb036595946bb1c3bcfc571197d2b7f2c7c8413117e7918dc3
F test/qrf02.test 39b4afdc000bedccdafc0aecf17638df67a67aaa2d2942865ae6abcc48ba0e92
F test/qrf03.test e7efe46d204671726b4707585126cd78d107368de4a7d0c7b8d5157cdd8624ed
F test/qrf04.test 0894692c998d2401dcc33449c02051b503ecce0c94217be54fb007c82d2d1379
@@ -2218,8 +2218,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
P 61b0157686da3e6700ddcb7273b91eba69ff3015f8185470fd4fa02e52205401
R a5735a82c7fe2149f7f200065d699e6a
P 5d230cafc6abf48dd623385df106e61fa5bf15a9cff855eb27680aa0f7533c8b
R 85110d133ae92098d064fba934128824
U drh
Z 344b2d08006f8d18da2d1fa756e0e9a0
Z aee5be21b747420ad1c12d11d1ea8925
# Remove this line to create a well-formed Fossil manifest.

View File

@@ -1 +1 @@
5d230cafc6abf48dd623385df106e61fa5bf15a9cff855eb27680aa0f7533c8b
17277813d101187d85755b7bad3f1c95380335021e13ee368be0add0c8c346b3

View File

@@ -371,8 +371,8 @@ typedef struct Mode {
u8 bAutoScreenWidth; /* Using the TTY to determine screen width */
u8 mFlags; /* MFLG_ECHO, MFLG_CRLF, etc. */
u8 eMode; /* One of the MODE_ values */
char zIntFmt[24]; /* Space to hold the --intfmt value */
char zRealFmt[24]; /* Space to hold the --realfmt value */
char zIFmt[24]; /* Space to hold the --ifmt value */
char zFpFmt[24]; /* Space to hold the --fpfmt value */
sqlite3_qrf_spec spec; /* Spec to be passed into QRF */
} Mode;
@@ -8676,7 +8676,9 @@ static int modeTitleDsply(ShellState *p, int bAll){
** --escape ESC Enable/disable escaping of control characters
** found in the output. ESC can be "off", "ascii",
** or "symbol".
** --intfmt STRING String is a printf-style format string used to
** --fpfmt STRING String is a printf-style format string used to
** render floating-point values.
** --ifmt STRING String is a printf-style format string used to
** render integer values.
** --linelimit N Set the maximum number of output lines to show for
** any single SQL value to N. Longer values are
@@ -8697,8 +8699,6 @@ static int modeTitleDsply(ShellState *p, int bAll){
** "off", "on", "sql", "relaxed", "csv", "html",
** "tcl", or "json". "off" means show the text as-is.
** "on" is an alias for "sql".
** --realfmt STRING String is a printf-style format string used to
** render floating-point values.
** --reset Changes all mode settings back to their default.
** --rowcount BOOLEAN Show "(N rows)" at the end of query results.
** --rowsep STRING Use STRING as the row separator
@@ -8936,38 +8936,38 @@ static int dotCmdMode(ShellState *p){
break;
}
chng = 1;
}else if( optionMatch(z,"intfmt") ){
}else if( optionMatch(z,"ifmt") ){
if( i+1>=nArg ){
dotCmdError(p, i, "missing argument", 0);
return 1;
}
i++;
if( azArg[i][0]==0 || cli_strcmp(azArg[i],"default")==0 ){
p->mode.spec.zIntFmt = 0;
p->mode.spec.zIFmt = 0;
}else if( sqlite3_qrf_ckformat(azArg[i])!=1 ){
dotCmdError(p, i, "not a valid integer format", 0);
return 1;
}else{
assert( strlen(azArg[i])<sizeof(p->mode.zIntFmt)-1 );
memcpy(p->mode.zIntFmt, azArg[i], strlen(azArg[i])+1);
p->mode.spec.zIntFmt = p->mode.zIntFmt;
assert( strlen(azArg[i])<sizeof(p->mode.zIFmt)-1 );
memcpy(p->mode.zIFmt, azArg[i], strlen(azArg[i])+1);
p->mode.spec.zIFmt = p->mode.zIFmt;
}
chng = 1;
}else if( optionMatch(z,"realfmt") ){
}else if( optionMatch(z,"fpfmt") ){
if( i+1>=nArg ){
dotCmdError(p, i, "missing argument", 0);
return 1;
}
i++;
if( azArg[i][0]==0 || cli_strcmp(azArg[i],"default")==0 ){
p->mode.spec.zRealFmt = 0;
p->mode.spec.zFpFmt = 0;
}else if( sqlite3_qrf_ckformat(azArg[i])!=2 ){
dotCmdError(p, i, "not a valid floating-point format", 0);
return 1;
}else{
assert( strlen(azArg[i])<sizeof(p->mode.zRealFmt)-1 );
memcpy(p->mode.zRealFmt, azArg[i], strlen(azArg[i])+1);
p->mode.spec.zRealFmt = p->mode.zRealFmt;
assert( strlen(azArg[i])<sizeof(p->mode.zFpFmt)-1 );
memcpy(p->mode.zFpFmt, azArg[i], strlen(azArg[i])+1);
p->mode.spec.zFpFmt = p->mode.zFpFmt;
}
chng = 1;
}else if( optionMatch(z,"reset") ){
@@ -9204,9 +9204,13 @@ static int dotCmdMode(ShellState *p){
if( bAll || p->mode.spec.eEsc!=QRF_Auto ){
sqlite3_str_appendf(pDesc, " --escape %s",qrfEscNames[p->mode.spec.eEsc]);
}
if( bAll || p->mode.spec.zIntFmt!=0 ){
const char *z = p->mode.spec.zIntFmt;
sqlite3_str_appendf(pDesc, " --intfmt %s", z ? z : "default");
if( bAll || p->mode.spec.zFpFmt!=0 ){
const char *z = p->mode.spec.zFpFmt;
sqlite3_str_appendf(pDesc, " --fpfmt %s", z ? z : "\"\"");
}
if( bAll || p->mode.spec.zIFmt!=0 ){
const char *z = p->mode.spec.zIFmt;
sqlite3_str_appendf(pDesc, " --ifmt %s", z ? z : "\"\"");
}
if( bAll
|| (p->mode.spec.nLineLimit>0 && pI->eCx>0)
@@ -9245,10 +9249,6 @@ static int dotCmdMode(ShellState *p){
){
sqlite3_str_appendf(pDesc," --quote %s",qrfQuoteNames[p->mode.spec.eText]);
}
if( bAll || p->mode.spec.zRealFmt!=0 ){
const char *z = p->mode.spec.zRealFmt;
sqlite3_str_appendf(pDesc, " --realfmt %s", z ? z : "default");
}
if( bAll
|| ((p->mode.spec.bRowCount==QRF_Yes) != ((pI->mFlg&4)!=0))
){

View File

@@ -2079,8 +2079,8 @@ static void DbHookCmd(
** -rowsep TEXT Row separator text
** -tablename TEXT Table name for style "insert"
** -null TEXT Text for NULL values
** -intfmt STRING Format for integer values
** -realfmt STRING Format for floating-point values
** -ifmt STRING Format for integer values
** -fpfmt STRING Format for floating-point values
**
** A mapping from TCL "format" command options to sqlite3_qrf_spec fields
** is below. Use this to reference the QRF documentation:
@@ -2111,8 +2111,8 @@ static void DbHookCmd(
** -rowsep zRowSep
** -tablename zTableName
** -null zNull
** -intfmt zIntFmt
** -realfmt zRealFmt
** -ifmt zIFmt
** -fpfmt zFpFmt
**
** The TCL -title option maps to eTitle and bTitles as follows:
**
@@ -2408,27 +2408,27 @@ static int dbQrf(SqliteDb *pDb, int objc, Tcl_Obj *const*objv){
}else if( strcmp(zArg,"-null")==0 ){
qrf.zNull = Tcl_GetString(objv[i+1]);
i++;
}else if( strcmp(zArg,"-intfmt")==0 ){
}else if( strcmp(zArg,"-ifmt")==0 ){
char *zFmt = Tcl_GetString(objv[i+1]);
if( zFmt[0]==0 || strcmp(zFmt,"default")==0 ){
zFmt = 0;
}else if( sqlite3_qrf_ckformat(zFmt)!=1 ){
Tcl_AppendResult(pDb->interp, "bad format for -intfmt", (char*)0);
Tcl_AppendResult(pDb->interp, "bad format for -ifmt", (char*)0);
rc = TCL_ERROR;
goto format_failed;
}
qrf.zIntFmt = zFmt;
qrf.zIFmt = zFmt;
i++;
}else if( strcmp(zArg,"-realfmt")==0 ){
}else if( strcmp(zArg,"-fpfmt")==0 ){
char *zFmt = Tcl_GetString(objv[i+1]);
if( zFmt[0]==0 || strcmp(zFmt,"default")==0 ){
zFmt = 0;
}else if( sqlite3_qrf_ckformat(zFmt)!=2 ){
Tcl_AppendResult(pDb->interp, "bad format for -realfmt", (char*)0);
Tcl_AppendResult(pDb->interp, "bad format for -fpfmt", (char*)0);
rc = TCL_ERROR;
goto format_failed;
}
qrf.zRealFmt = zFmt;
qrf.zFpFmt = zFmt;
i++;
}else if( strcmp(zArg,"-version")==0 ){
/* Undocumented. Testing use only */

View File

@@ -103,7 +103,7 @@ END
.testcase 140
.mode -v
.check <<END
.mode qbox --align "" --border on --blob-quote auto --colsep "" --escape auto --intfmt default --limits on --multiinsert 3000 --null "NULL" --quote relaxed --realfmt default --rowcount off --rowsep "" --sw auto --tablename "" --textjsonb on --titles always --widths "" --wordwrap off --wrap 10
.mode qbox --align "" --border on --blob-quote auto --colsep "" --escape auto --fpfmt "" --ifmt "" --limits on --multiinsert 3000 --null "NULL" --quote relaxed --rowcount off --rowsep "" --sw auto --tablename "" --textjsonb on --titles always --widths "" --wordwrap off --wrap 10
END
.testcase 150 --error-prefix "Error:"
.mode foo
@@ -162,7 +162,7 @@ END
.mode --limits 0,0,0
.mode -v
.check <<END
.mode box --align "" --border on --blob-quote auto --colsep "" --escape auto --intfmt default --limits off --multiinsert 0 --null "" --quote off --realfmt default --rowcount off --rowsep "" --sw 0 --tablename "" --textjsonb off --titles always --widths "" --wordwrap off
.mode box --align "" --border on --blob-quote auto --colsep "" --escape auto --fpfmt "" --ifmt "" --limits off --multiinsert 0 --null "" --quote off --rowcount off --rowsep "" --sw 0 --tablename "" --textjsonb off --titles always --widths "" --wordwrap off
END
.testcase 400
@@ -364,7 +364,7 @@ SELECT hex(randomblob(100)) c;
.testcase 900
.mode --reset psql -v
.check <<END
.mode psql --align "" --border off --blob-quote auto --colsep "" --escape auto --intfmt default --limits off --multiinsert 0 --null "" --quote off --realfmt default --rowcount on --rowsep "" --sw 0 --tablename "" --textjsonb off --titles always --widths "" --wordwrap off
.mode psql --align "" --border off --blob-quote auto --colsep "" --escape auto --fpfmt "" --ifmt "" --limits off --multiinsert 0 --null "" --quote off --rowcount on --rowsep "" --sw 0 --tablename "" --textjsonb off --titles always --widths "" --wordwrap off
END
.testcase 901
.mode
@@ -492,7 +492,7 @@ SELECT * FROM t1;
╘═════╧═════════╧═════╧═════╛
END
.testcase 1100
.mode -reset -realfmt %.2f -intfmt %,d
.mode -reset -fpfmt %.2f -ifmt %,d
WITH RECURSIVE c(n) AS (VALUES(0.01) UNION ALL SELECT n*10 FROM c WHERE n<1e8)
SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
.check <<END
@@ -513,7 +513,7 @@ SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
╰──────────────┴─────────────────────╯
END
.testcase 1101
.mode -realfmt %+,0.2f -intfmt %04x
.mode -fpfmt %+,0.2f -ifmt %04x
WITH RECURSIVE c(n) AS (VALUES(0.01) UNION ALL SELECT n*10 FROM c WHERE n<1e8)
SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
.check <<END
@@ -534,7 +534,7 @@ SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
╰─────────────────┴─────────────────────╯
END
.testcase 1102
.mode -realfmt %.6e -intfmt %#+o
.mode -fpfmt %.6e -ifmt %#+o
WITH RECURSIVE c(n) AS (VALUES(0.01) UNION ALL SELECT n*10 FROM c WHERE n<1e8)
SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
.check <<END
@@ -555,7 +555,7 @@ SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
╰──────────────┴─────────────────────╯
END
.testcase 1103
.mode -realfmt default -intfmt default
.mode -fpfmt default -ifmt default
WITH RECURSIVE c(n) AS (VALUES(1) UNION ALL SELECT n*10 FROM c WHERE n<1e4)
SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
.check <<END
@@ -570,54 +570,54 @@ SELECT pi()*n, CAST(pi()*n AS INT) FROM c;
╰────────────────────┴─────────────────────╯
END
.testcase 1104
.mode -realfmt %d
.mode -fpfmt %d
.check <<END
Error: .mode -realfmt %d
Error: ^--- not a valid floating-point format
Error: .mode -fpfmt %d
Error: ^--- not a valid floating-point format
END
.testcase 1105
.mode -realfmt xyz
.mode -fpfmt xyz
.check <<END
Error: .mode -realfmt xyz
Error: ^--- not a valid floating-point format
Error: .mode -fpfmt xyz
Error: ^--- not a valid floating-point format
END
.testcase 1106
.mode -realfmt %1234f
.mode -fpfmt %1234f
.check <<END
Error: .mode -realfmt %1234f
Error: ^--- not a valid floating-point format
Error: .mode -fpfmt %1234f
Error: ^--- not a valid floating-point format
END
.testcase 1107
.mode -realfmt %.1234f
.mode -fpfmt %.1234f
.check <<END
Error: .mode -realfmt %.1234f
Error: ^--- not a valid floating-point format
Error: .mode -fpfmt %.1234f
Error: ^--- not a valid floating-point format
END
.testcase 1108
.mode -realfmt %?.2f
.mode -fpfmt %?.2f
.check <<END
Error: .mode -realfmt %?.2f
Error: ^--- not a valid floating-point format
Error: .mode -fpfmt %?.2f
Error: ^--- not a valid floating-point format
END
.testcase 1109
.mode -intfmt %.2f
.mode -ifmt %.2f
.check <<END
Error: .mode -intfmt %.2f
Error: ^--- not a valid integer format
Error: .mode -ifmt %.2f
Error: ^--- not a valid integer format
END
.testcase 1110
.mode list -intfmt %x
.mode list -ifmt %x
SELECT 123;
.check 7b
.testcase 1111
.mode list -intfmt %X
.mode list -ifmt %X
SELECT 123;
.check 7B
.testcase 1112
.mode list -realfmt %g
.mode list -fpfmt %g
SELECT 1.23456789e+12;
.check 1.23457e+12
.testcase 1113
.mode list -realfmt %G
.mode list -fpfmt %G
SELECT 1.23456789e+12;
.check 1.23457E+12

View File

@@ -1417,7 +1417,7 @@ do_test 13.2 {
}
do_test 14.1 {
set result \n[db format -style box -intfmt %,d -realfmt %.2f -rowcount on \
set result \n[db format -style box -ifmt %,d -fpfmt %.2f -rowcount on \
{WITH RECURSIVE c(n) AS
(VALUES(0.01) UNION ALL SELECT n*10 FROM c WHERE n<1e8)
SELECT pi()*n, CAST(pi()*n AS INT) FROM c;}]
@@ -1440,24 +1440,24 @@ do_test 14.1 {
(11 rows)
}
do_test 14.2 {
catch {db format -intfmt %.2f {SELECT 100, 2.5}} res
catch {db format -ifmt %.2f {SELECT 100, 2.5}} res
set res
} {bad format for -intfmt}
} {bad format for -ifmt}
do_test 14.3 {
db format -style list -columnsep { } -intfmt default {SELECT 100, 2.5}
db format -style list -columnsep { } -ifmt default {SELECT 100, 2.5}
} {100 2.5}
do_test 14.4 {
db format -style list -columnsep { } -intfmt {} {SELECT 100, 2.5}
db format -style list -columnsep { } -ifmt {} {SELECT 100, 2.5}
} {100 2.5}
do_test 14.5 {
catch {db format -realfmt %d {SELECT 100, 2.5}} res
catch {db format -fpfmt %d {SELECT 100, 2.5}} res
set res
} {bad format for -realfmt}
} {bad format for -fpfmt}
do_test 14.6 {
db format -style list -columnsep { } -realfmt default {SELECT 100, 2.5}
db format -style list -columnsep { } -fpfmt default {SELECT 100, 2.5}
} {100 2.5}
do_test 14.7 {
db format -style list -columnsep { } -realfmt {} {SELECT 100, 2.5}
db format -style list -columnsep { } -fpfmt {} {SELECT 100, 2.5}
} {100 2.5}