Fossil SCM

Update to the latest SQLite that includes recent CLI enhancements, for testing of those enhancements using the "fossil sql" command. Enable percentile SQL functions, also for testing.

drh 2025-12-06 14:01 trunk
Commit 709b566431af6b2609f3b0d076b8200cbec193ea803b13c3934144e84b149a78
--- extsrc/qrf.h
+++ extsrc/qrf.h
@@ -107,10 +107,11 @@
107107
#define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
108108
#define QRF_TEXT_Csv 3 /* CSV-style quoting */
109109
#define QRF_TEXT_Html 4 /* HTML-style quoting */
110110
#define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
111111
#define QRF_TEXT_Json 6 /* JSON quoting */
112
+#define QRF_TEXT_Relaxed 7 /* Relaxed SQL quoting */
112113
113114
/*
114115
** Quoting styles for BLOBs
115116
** Allowed values for sqlite3_qrf_spec.eBlob
116117
*/
117118
--- extsrc/qrf.h
+++ extsrc/qrf.h
@@ -107,10 +107,11 @@
107 #define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
108 #define QRF_TEXT_Csv 3 /* CSV-style quoting */
109 #define QRF_TEXT_Html 4 /* HTML-style quoting */
110 #define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
111 #define QRF_TEXT_Json 6 /* JSON quoting */
 
112
113 /*
114 ** Quoting styles for BLOBs
115 ** Allowed values for sqlite3_qrf_spec.eBlob
116 */
117
--- extsrc/qrf.h
+++ extsrc/qrf.h
@@ -107,10 +107,11 @@
107 #define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
108 #define QRF_TEXT_Csv 3 /* CSV-style quoting */
109 #define QRF_TEXT_Html 4 /* HTML-style quoting */
110 #define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
111 #define QRF_TEXT_Json 6 /* JSON quoting */
112 #define QRF_TEXT_Relaxed 7 /* Relaxed SQL quoting */
113
114 /*
115 ** Quoting styles for BLOBs
116 ** Allowed values for sqlite3_qrf_spec.eBlob
117 */
118
+102 -24
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -776,10 +776,11 @@
776776
#define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
777777
#define QRF_TEXT_Csv 3 /* CSV-style quoting */
778778
#define QRF_TEXT_Html 4 /* HTML-style quoting */
779779
#define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
780780
#define QRF_TEXT_Json 6 /* JSON quoting */
781
+#define QRF_TEXT_Relaxed 7 /* Relaxed SQL quoting */
781782
782783
/*
783784
** Quoting styles for BLOBs
784785
** Allowed values for sqlite3_qrf_spec.eBlob
785786
*/
@@ -969,10 +970,19 @@
969970
};
970971
#define qrfSpace(x) ((qrfCType[(unsigned char)x]&1)!=0)
971972
#define qrfDigit(x) ((qrfCType[(unsigned char)x]&2)!=0)
972973
#define qrfAlpha(x) ((qrfCType[(unsigned char)x]&4)!=0)
973974
#define qrfAlnum(x) ((qrfCType[(unsigned char)x]&6)!=0)
975
+
976
+#ifndef deliberate_fall_through
977
+/* Quiet some compilers about some of our intentional code. */
978
+# if defined(GCC_VERSION) && GCC_VERSION>=7000000
979
+# define deliberate_fall_through __attribute__((fallthrough));
980
+# else
981
+# define deliberate_fall_through
982
+# endif
983
+#endif
974984
975985
/*
976986
** Set an error code and error message.
977987
*/
978988
static void qrfError(
@@ -1570,10 +1580,49 @@
15701580
zOut[j++] = '^';
15711581
zOut[j++] = 0x40+c;
15721582
}
15731583
}
15741584
}
1585
+
1586
+/*
1587
+** Determine if the string z[] can be shown as plain text. Return true
1588
+** if z[] is unambiguously text. Return false if z[] needs to be
1589
+** quoted.
1590
+**
1591
+** All of the following must be true in order for z[] to be relaxable:
1592
+**
1593
+** (1) z[] does not begin or end with ' or whitespace
1594
+** (2) z[] is not the same as the NULL rendering
1595
+** (3) z[] does not looks like a numeric literal
1596
+*/
1597
+static int qrfRelaxable(Qrf *p, const char *z){
1598
+ size_t i, n;
1599
+ if( z[0]=='\'' || qrfSpace(z[0]) ) return 0;
1600
+ if( z[0]==0 && (p->spec.zNull==0 || p->spec.zNull[0]==0) ) return 0;
1601
+ n = strlen(z);
1602
+ if( z[n-1]=='\'' || qrfSpace(z[n-1]) ) return 0;
1603
+ if( p->spec.zNull && strcmp(p->spec.zNull,z)==0 ) return 0;
1604
+ i = (z[0]=='-' || z[0]=='+');
1605
+ if( strcmp(z+i,"Inf")==0 ) return 0;
1606
+ if( !qrfDigit(z[i]) ) return 1;
1607
+ i++;
1608
+ while( qrfDigit(z[i]) ){ i++; }
1609
+ if( z[i]==0 ) return 0;
1610
+ if( z[i]=='.' ){
1611
+ i++;
1612
+ while( qrfDigit(z[i]) ){ i++; }
1613
+ if( z[i]==0 ) return 0;
1614
+ }
1615
+ if( z[i]=='e' || z[i]=='E' ){
1616
+ i++;
1617
+ if( z[i]=='+' || z[i]=='-' ){ i++; }
1618
+ if( !qrfDigit(z[i]) ) return 1;
1619
+ i++;
1620
+ while( qrfDigit(z[i]) ){ i++; }
1621
+ }
1622
+ return z[i]!=0;
1623
+}
15751624
15761625
/*
15771626
** If a field contains any character identified by a 1 in the following
15781627
** array, then the string must be quoted for CSV.
15791628
*/
@@ -1600,10 +1649,16 @@
16001649
** Encode text appropriately and append it to pOut.
16011650
*/
16021651
static void qrfEncodeText(Qrf *p, sqlite3_str *pOut, const char *zTxt){
16031652
int iStart = sqlite3_str_length(pOut);
16041653
switch( p->spec.eText ){
1654
+ case QRF_TEXT_Relaxed:
1655
+ if( qrfRelaxable(p, zTxt) ){
1656
+ sqlite3_str_appendall(pOut, zTxt);
1657
+ break;
1658
+ }
1659
+ deliberate_fall_through; /* FALLTHRU */
16051660
case QRF_TEXT_Sql: {
16061661
if( p->spec.eEsc==QRF_ESC_Off ){
16071662
sqlite3_str_appendf(pOut, "%Q", zTxt);
16081663
}else{
16091664
sqlite3_str_appendf(pOut, "%#Q", zTxt);
@@ -2300,24 +2355,37 @@
23002355
#define BOX_134 "\342\224\244" /* U+2524 -| */
23012356
#define BOX_234 "\342\224\254" /* U+252c -,- */
23022357
#define BOX_124 "\342\224\264" /* U+2534 -'- */
23032358
#define BOX_1234 "\342\224\274" /* U+253c -|- */
23042359
2360
+/* Rounded corners: */
2361
+#define BOX_R12 "\342\225\260" /* U+2570 '- */
2362
+#define BOX_R23 "\342\225\255" /* U+256d ,- */
2363
+#define BOX_R34 "\342\225\256" /* U+256e -, */
2364
+#define BOX_R14 "\342\225\257" /* U+256f -' */
2365
+
2366
+/* Doubled horizontal lines: */
2367
+#define DBL_24 "\342\225\220" /* U+2550 === */
2368
+#define DBL_123 "\342\225\236" /* U+255e |= */
2369
+#define DBL_134 "\342\225\241" /* U+2561 =| */
2370
+#define DBL_1234 "\342\225\252" /* U+256a =|= */
2371
+
23052372
/* Draw horizontal line N characters long using unicode box
23062373
** characters
23072374
*/
2308
-static void qrfBoxLine(sqlite3_str *pOut, int N){
2309
- const char zDash[] =
2310
- BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24
2311
- BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24;
2312
- const int nDash = sizeof(zDash) - 1;
2375
+static void qrfBoxLine(sqlite3_str *pOut, int N, int bDbl){
2376
+ const char *azDash[2] = {
2377
+ BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24,
2378
+ DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24
2379
+ };/* 0 1 2 3 4 5 6 7 8 9 */
2380
+ const int nDash = 30;
23132381
N *= 3;
23142382
while( N>nDash ){
2315
- sqlite3_str_append(pOut, zDash, nDash);
2383
+ sqlite3_str_append(pOut, azDash[bDbl], nDash);
23162384
N -= nDash;
23172385
}
2318
- sqlite3_str_append(pOut, zDash, N);
2386
+ sqlite3_str_append(pOut, azDash[bDbl], N);
23192387
}
23202388
23212389
/*
23222390
** Draw a horizontal separator for a QRF_STYLE_Box table.
23232391
*/
@@ -2324,22 +2392,23 @@
23242392
static void qrfBoxSeparator(
23252393
sqlite3_str *pOut,
23262394
qrfColData *p,
23272395
const char *zSep1,
23282396
const char *zSep2,
2329
- const char *zSep3
2397
+ const char *zSep3,
2398
+ int bDbl
23302399
){
23312400
int i;
23322401
if( p->nCol>0 ){
23332402
int useBorder = p->p->spec.bBorder!=QRF_No;
23342403
if( useBorder ){
23352404
sqlite3_str_appendall(pOut, zSep1);
23362405
}
2337
- qrfBoxLine(pOut, p->a[0].w+p->nMargin);
2406
+ qrfBoxLine(pOut, p->a[0].w+p->nMargin, bDbl);
23382407
for(i=1; i<p->nCol; i++){
23392408
sqlite3_str_appendall(pOut, zSep2);
2340
- qrfBoxLine(pOut, p->a[i].w+p->nMargin);
2409
+ qrfBoxLine(pOut, p->a[i].w+p->nMargin, bDbl);
23412410
}
23422411
if( useBorder ){
23432412
sqlite3_str_appendall(pOut, zSep3);
23442413
}
23452414
}
@@ -2743,11 +2812,11 @@
27432812
}
27442813
if( p->spec.bBorder==QRF_No){
27452814
rowStart += 3;
27462815
rowSep = "\n";
27472816
}else{
2748
- qrfBoxSeparator(p->pOut, &data, BOX_23, BOX_234, BOX_34);
2817
+ qrfBoxSeparator(p->pOut, &data, BOX_R23, BOX_234, BOX_R34, 0);
27492818
}
27502819
break;
27512820
case QRF_STYLE_Table:
27522821
if( data.nMargin ){
27532822
rowStart = "| ";
@@ -2876,12 +2945,14 @@
28762945
qrfRowSeparator(p->pOut, &data, '+');
28772946
}
28782947
break;
28792948
}
28802949
case QRF_STYLE_Box: {
2881
- if( isTitleDataSeparator || data.bMultiRow ){
2882
- qrfBoxSeparator(p->pOut, &data, BOX_123, BOX_1234, BOX_134);
2950
+ if( isTitleDataSeparator ){
2951
+ qrfBoxSeparator(p->pOut, &data, DBL_123, DBL_1234, DBL_134, 1);
2952
+ }else if( data.bMultiRow ){
2953
+ qrfBoxSeparator(p->pOut, &data, BOX_123, BOX_1234, BOX_134, 0);
28832954
}
28842955
break;
28852956
}
28862957
case QRF_STYLE_Markdown: {
28872958
if( isTitleDataSeparator ){
@@ -2912,11 +2983,11 @@
29122983
29132984
/* Draw the line across the bottom of the table */
29142985
if( p->spec.bBorder!=QRF_No ){
29152986
switch( p->spec.eStyle ){
29162987
case QRF_STYLE_Box:
2917
- qrfBoxSeparator(p->pOut, &data, BOX_12, BOX_124, BOX_14);
2988
+ qrfBoxSeparator(p->pOut, &data, BOX_R12, BOX_124, BOX_R14, 0);
29182989
break;
29192990
case QRF_STYLE_Table:
29202991
qrfRowSeparator(p->pOut, &data, '+');
29212992
break;
29222993
}
@@ -3369,12 +3440,12 @@
33693440
if( p->mxWidth<=0 ) p->mxWidth = QRF_MAX_WIDTH;
33703441
p->mxHeight = p->spec.nLineLimit;
33713442
if( p->mxHeight<=0 ) p->mxHeight = 2147483647;
33723443
if( p->spec.eStyle>QRF_STYLE_Table ) p->spec.eStyle = QRF_Auto;
33733444
if( p->spec.eEsc>QRF_ESC_Symbol ) p->spec.eEsc = QRF_Auto;
3374
- if( p->spec.eText>QRF_TEXT_Json ) p->spec.eText = QRF_Auto;
3375
- if( p->spec.eTitle>QRF_TEXT_Json ) p->spec.eTitle = QRF_Auto;
3445
+ if( p->spec.eText>QRF_TEXT_Relaxed ) p->spec.eText = QRF_Auto;
3446
+ if( p->spec.eTitle>QRF_TEXT_Relaxed ) p->spec.eTitle = QRF_Auto;
33763447
if( p->spec.eBlob>QRF_BLOB_Size ) p->spec.eBlob = QRF_Auto;
33773448
qrf_reinit:
33783449
switch( p->spec.eStyle ){
33793450
case QRF_Auto: {
33803451
switch( sqlite3_stmt_isexplain(pStmt) ){
@@ -10563,10 +10634,11 @@
1056310634
if( b1==0 ) return 1;
1056410635
sz = MultiByteToWideChar(CP_UTF8, 0, zPath, sz, b1, sz);
1056510636
b1[sz] = 0;
1056610637
rc = _wstat(b1, pStatBuf);
1056710638
if( rc==0 ) statTimesToUtc(zPath, pStatBuf);
10639
+ sqlite3_free(b1);
1056810640
return rc;
1056910641
#else
1057010642
return stat(zPath, pStatBuf);
1057110643
#endif
1057210644
}
@@ -24168,11 +24240,11 @@
2416824240
2416924241
/* Names of values for Mode.spec.eEsc and Mode.spec.eText
2417024242
*/
2417124243
static const char *qrfEscNames[] = { "auto", "off", "ascii", "symbol" };
2417224244
static const char *qrfQuoteNames[] =
24173
- { "off","off","sql","hex","csv","tcl","json"};
24245
+ { "off","off","sql","hex","csv","tcl","json","relaxed"};
2417424246
2417524247
/*
2417624248
** These are the allowed shellFlgs values
2417724249
*/
2417824250
#define SHFLG_Pagecache 0x00000001 /* The --pagecache option is used */
@@ -24424,10 +24496,11 @@
2442424496
}else if( eMode==MODE_TTY ){
2442524497
u8 mFlags = p->mode.mFlags;
2442624498
modeFree(&p->mode);
2442724499
modeChange(p, MODE_QBox);
2442824500
p->mode.bAutoScreenWidth = 1;
24501
+ p->mode.spec.eText = QRF_TEXT_Relaxed;
2442924502
p->mode.spec.nCharLimit = 300;
2443024503
p->mode.spec.nLineLimit = 5;
2443124504
p->mode.spec.bTextJsonb = QRF_Yes;
2443224505
p->mode.mFlags = mFlags;
2443324506
}
@@ -25989,10 +26062,11 @@
2598926062
if( pArg->mode.bAutoScreenWidth ){
2599026063
spec.nScreenWidth = shellScreenWidth();
2599126064
}
2599226065
if( spec.eBlob==QRF_BLOB_Auto ){
2599326066
switch( spec.eText ){
26067
+ case QRF_TEXT_Relaxed: /* fall through */
2599426068
case QRF_TEXT_Sql: spec.eBlob = QRF_BLOB_Sql; break;
2599526069
case QRF_TEXT_Json: spec.eBlob = QRF_BLOB_Json; break;
2599626070
default: spec.eBlob = QRF_BLOB_Text; break;
2599726071
}
2599826072
}
@@ -26744,12 +26818,12 @@
2674426818
" --list List available modes\n"
2674526819
" --null STRING Render SQL NULL values as the given string\n"
2674626820
" --once Setting changes to the right are reverted after\n"
2674726821
" the next SQL command.\n"
2674826822
" --quote ARG Enable/disable quoting of text. ARG can be\n"
26749
-" \"off\", \"on\", \"sql\", \"csv\", \"html\", \"tcl\",\n"
26750
-" or \"json\". \"off\" means show the text as-is.\n"
26823
+" \"off\", \"on\", \"sql\", \"relaxed\", \"csv\", \"html\",\n"
26824
+" \"tcl\", or \"json\". \"off\" means show the text as-is.\n"
2675126825
" \"on\" is an alias for \"sql\".\n"
2675226826
" --reset Changes all mode settings back to their default.\n"
2675326827
" --rowsep STRING Use STRING as the row separator\n"
2675426828
" --sw|--screenwidth N Declare the screen width of the output device\n"
2675526829
" to be N characters. An attempt may be made to\n"
@@ -30630,12 +30704,12 @@
3063030704
** --list List available modes
3063130705
** --null STRING Render SQL NULL values as the given string
3063230706
** --once Setting changes to the right are reverted after
3063330707
** the next SQL command.
3063430708
** --quote ARG Enable/disable quoting of text. ARG can be
30635
-** "off", "on", "sql", "csv", "html", "tcl",
30636
-** or "json". "off" means show the text as-is.
30709
+** "off", "on", "sql", "relaxed", "csv", "html",
30710
+** "tcl", or "json". "off" means show the text as-is.
3063730711
** "on" is an alias for "sql".
3063830712
** --reset Changes all mode settings back to their default.
3063930713
** --rowsep STRING Use STRING as the row separator
3064030714
** --sw|--screenwidth N Declare the screen width of the output device
3064130715
** to be N characters. An attempt may be made to
@@ -30840,13 +30914,14 @@
3084030914
** how to set quoting. */
3084130915
i++;
3084230916
if( (k = pickStr(azArg[i],0,"no","yes","0","1",""))>=0 ){
3084330917
k &= 1; /* 0 for "off". 1 for "on". */
3084430918
}else{
30845
- char *zErr = 0; /* 0 1 2 3 4 5 6 */
30846
- k = pickStr(azArg[i],&zErr,"off","on","sql","csv","html","tcl","json",
30847
- "");
30919
+ char *zErr = 0;
30920
+ k = pickStr(azArg[i],&zErr,
30921
+ "off","on","sql","csv","html","tcl","json","relaxed","");
30922
+ /* 0 1 2 3 4 5 6 7 */
3084830923
if( k<0 ){
3084930924
dotCmdError(p, i, "unknown", "%z", zErr);
3085030925
return 1;
3085130926
}
3085230927
}
@@ -30871,10 +30946,13 @@
3087130946
p->mode.spec.eText = QRF_TEXT_Tcl;
3087230947
break;
3087330948
case 6: /* json */
3087430949
p->mode.spec.eText = QRF_TEXT_Json;
3087530950
break;
30951
+ case 7: /* relaxed */
30952
+ p->mode.spec.eText = QRF_TEXT_Relaxed;
30953
+ break;
3087630954
default: /* off */
3087730955
p->mode.spec.eText = QRF_TEXT_Plain;
3087830956
break;
3087930957
}
3088030958
chng = 1;
3088130959
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -776,10 +776,11 @@
776 #define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
777 #define QRF_TEXT_Csv 3 /* CSV-style quoting */
778 #define QRF_TEXT_Html 4 /* HTML-style quoting */
779 #define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
780 #define QRF_TEXT_Json 6 /* JSON quoting */
 
781
782 /*
783 ** Quoting styles for BLOBs
784 ** Allowed values for sqlite3_qrf_spec.eBlob
785 */
@@ -969,10 +970,19 @@
969 };
970 #define qrfSpace(x) ((qrfCType[(unsigned char)x]&1)!=0)
971 #define qrfDigit(x) ((qrfCType[(unsigned char)x]&2)!=0)
972 #define qrfAlpha(x) ((qrfCType[(unsigned char)x]&4)!=0)
973 #define qrfAlnum(x) ((qrfCType[(unsigned char)x]&6)!=0)
 
 
 
 
 
 
 
 
 
974
975 /*
976 ** Set an error code and error message.
977 */
978 static void qrfError(
@@ -1570,10 +1580,49 @@
1570 zOut[j++] = '^';
1571 zOut[j++] = 0x40+c;
1572 }
1573 }
1574 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1575
1576 /*
1577 ** If a field contains any character identified by a 1 in the following
1578 ** array, then the string must be quoted for CSV.
1579 */
@@ -1600,10 +1649,16 @@
1600 ** Encode text appropriately and append it to pOut.
1601 */
1602 static void qrfEncodeText(Qrf *p, sqlite3_str *pOut, const char *zTxt){
1603 int iStart = sqlite3_str_length(pOut);
1604 switch( p->spec.eText ){
 
 
 
 
 
 
1605 case QRF_TEXT_Sql: {
1606 if( p->spec.eEsc==QRF_ESC_Off ){
1607 sqlite3_str_appendf(pOut, "%Q", zTxt);
1608 }else{
1609 sqlite3_str_appendf(pOut, "%#Q", zTxt);
@@ -2300,24 +2355,37 @@
2300 #define BOX_134 "\342\224\244" /* U+2524 -| */
2301 #define BOX_234 "\342\224\254" /* U+252c -,- */
2302 #define BOX_124 "\342\224\264" /* U+2534 -'- */
2303 #define BOX_1234 "\342\224\274" /* U+253c -|- */
2304
 
 
 
 
 
 
 
 
 
 
 
 
2305 /* Draw horizontal line N characters long using unicode box
2306 ** characters
2307 */
2308 static void qrfBoxLine(sqlite3_str *pOut, int N){
2309 const char zDash[] =
2310 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24
2311 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24;
2312 const int nDash = sizeof(zDash) - 1;
 
2313 N *= 3;
2314 while( N>nDash ){
2315 sqlite3_str_append(pOut, zDash, nDash);
2316 N -= nDash;
2317 }
2318 sqlite3_str_append(pOut, zDash, N);
2319 }
2320
2321 /*
2322 ** Draw a horizontal separator for a QRF_STYLE_Box table.
2323 */
@@ -2324,22 +2392,23 @@
2324 static void qrfBoxSeparator(
2325 sqlite3_str *pOut,
2326 qrfColData *p,
2327 const char *zSep1,
2328 const char *zSep2,
2329 const char *zSep3
 
2330 ){
2331 int i;
2332 if( p->nCol>0 ){
2333 int useBorder = p->p->spec.bBorder!=QRF_No;
2334 if( useBorder ){
2335 sqlite3_str_appendall(pOut, zSep1);
2336 }
2337 qrfBoxLine(pOut, p->a[0].w+p->nMargin);
2338 for(i=1; i<p->nCol; i++){
2339 sqlite3_str_appendall(pOut, zSep2);
2340 qrfBoxLine(pOut, p->a[i].w+p->nMargin);
2341 }
2342 if( useBorder ){
2343 sqlite3_str_appendall(pOut, zSep3);
2344 }
2345 }
@@ -2743,11 +2812,11 @@
2743 }
2744 if( p->spec.bBorder==QRF_No){
2745 rowStart += 3;
2746 rowSep = "\n";
2747 }else{
2748 qrfBoxSeparator(p->pOut, &data, BOX_23, BOX_234, BOX_34);
2749 }
2750 break;
2751 case QRF_STYLE_Table:
2752 if( data.nMargin ){
2753 rowStart = "| ";
@@ -2876,12 +2945,14 @@
2876 qrfRowSeparator(p->pOut, &data, '+');
2877 }
2878 break;
2879 }
2880 case QRF_STYLE_Box: {
2881 if( isTitleDataSeparator || data.bMultiRow ){
2882 qrfBoxSeparator(p->pOut, &data, BOX_123, BOX_1234, BOX_134);
 
 
2883 }
2884 break;
2885 }
2886 case QRF_STYLE_Markdown: {
2887 if( isTitleDataSeparator ){
@@ -2912,11 +2983,11 @@
2912
2913 /* Draw the line across the bottom of the table */
2914 if( p->spec.bBorder!=QRF_No ){
2915 switch( p->spec.eStyle ){
2916 case QRF_STYLE_Box:
2917 qrfBoxSeparator(p->pOut, &data, BOX_12, BOX_124, BOX_14);
2918 break;
2919 case QRF_STYLE_Table:
2920 qrfRowSeparator(p->pOut, &data, '+');
2921 break;
2922 }
@@ -3369,12 +3440,12 @@
3369 if( p->mxWidth<=0 ) p->mxWidth = QRF_MAX_WIDTH;
3370 p->mxHeight = p->spec.nLineLimit;
3371 if( p->mxHeight<=0 ) p->mxHeight = 2147483647;
3372 if( p->spec.eStyle>QRF_STYLE_Table ) p->spec.eStyle = QRF_Auto;
3373 if( p->spec.eEsc>QRF_ESC_Symbol ) p->spec.eEsc = QRF_Auto;
3374 if( p->spec.eText>QRF_TEXT_Json ) p->spec.eText = QRF_Auto;
3375 if( p->spec.eTitle>QRF_TEXT_Json ) p->spec.eTitle = QRF_Auto;
3376 if( p->spec.eBlob>QRF_BLOB_Size ) p->spec.eBlob = QRF_Auto;
3377 qrf_reinit:
3378 switch( p->spec.eStyle ){
3379 case QRF_Auto: {
3380 switch( sqlite3_stmt_isexplain(pStmt) ){
@@ -10563,10 +10634,11 @@
10563 if( b1==0 ) return 1;
10564 sz = MultiByteToWideChar(CP_UTF8, 0, zPath, sz, b1, sz);
10565 b1[sz] = 0;
10566 rc = _wstat(b1, pStatBuf);
10567 if( rc==0 ) statTimesToUtc(zPath, pStatBuf);
 
10568 return rc;
10569 #else
10570 return stat(zPath, pStatBuf);
10571 #endif
10572 }
@@ -24168,11 +24240,11 @@
24168
24169 /* Names of values for Mode.spec.eEsc and Mode.spec.eText
24170 */
24171 static const char *qrfEscNames[] = { "auto", "off", "ascii", "symbol" };
24172 static const char *qrfQuoteNames[] =
24173 { "off","off","sql","hex","csv","tcl","json"};
24174
24175 /*
24176 ** These are the allowed shellFlgs values
24177 */
24178 #define SHFLG_Pagecache 0x00000001 /* The --pagecache option is used */
@@ -24424,10 +24496,11 @@
24424 }else if( eMode==MODE_TTY ){
24425 u8 mFlags = p->mode.mFlags;
24426 modeFree(&p->mode);
24427 modeChange(p, MODE_QBox);
24428 p->mode.bAutoScreenWidth = 1;
 
24429 p->mode.spec.nCharLimit = 300;
24430 p->mode.spec.nLineLimit = 5;
24431 p->mode.spec.bTextJsonb = QRF_Yes;
24432 p->mode.mFlags = mFlags;
24433 }
@@ -25989,10 +26062,11 @@
25989 if( pArg->mode.bAutoScreenWidth ){
25990 spec.nScreenWidth = shellScreenWidth();
25991 }
25992 if( spec.eBlob==QRF_BLOB_Auto ){
25993 switch( spec.eText ){
 
25994 case QRF_TEXT_Sql: spec.eBlob = QRF_BLOB_Sql; break;
25995 case QRF_TEXT_Json: spec.eBlob = QRF_BLOB_Json; break;
25996 default: spec.eBlob = QRF_BLOB_Text; break;
25997 }
25998 }
@@ -26744,12 +26818,12 @@
26744 " --list List available modes\n"
26745 " --null STRING Render SQL NULL values as the given string\n"
26746 " --once Setting changes to the right are reverted after\n"
26747 " the next SQL command.\n"
26748 " --quote ARG Enable/disable quoting of text. ARG can be\n"
26749 " \"off\", \"on\", \"sql\", \"csv\", \"html\", \"tcl\",\n"
26750 " or \"json\". \"off\" means show the text as-is.\n"
26751 " \"on\" is an alias for \"sql\".\n"
26752 " --reset Changes all mode settings back to their default.\n"
26753 " --rowsep STRING Use STRING as the row separator\n"
26754 " --sw|--screenwidth N Declare the screen width of the output device\n"
26755 " to be N characters. An attempt may be made to\n"
@@ -30630,12 +30704,12 @@
30630 ** --list List available modes
30631 ** --null STRING Render SQL NULL values as the given string
30632 ** --once Setting changes to the right are reverted after
30633 ** the next SQL command.
30634 ** --quote ARG Enable/disable quoting of text. ARG can be
30635 ** "off", "on", "sql", "csv", "html", "tcl",
30636 ** or "json". "off" means show the text as-is.
30637 ** "on" is an alias for "sql".
30638 ** --reset Changes all mode settings back to their default.
30639 ** --rowsep STRING Use STRING as the row separator
30640 ** --sw|--screenwidth N Declare the screen width of the output device
30641 ** to be N characters. An attempt may be made to
@@ -30840,13 +30914,14 @@
30840 ** how to set quoting. */
30841 i++;
30842 if( (k = pickStr(azArg[i],0,"no","yes","0","1",""))>=0 ){
30843 k &= 1; /* 0 for "off". 1 for "on". */
30844 }else{
30845 char *zErr = 0; /* 0 1 2 3 4 5 6 */
30846 k = pickStr(azArg[i],&zErr,"off","on","sql","csv","html","tcl","json",
30847 "");
 
30848 if( k<0 ){
30849 dotCmdError(p, i, "unknown", "%z", zErr);
30850 return 1;
30851 }
30852 }
@@ -30871,10 +30946,13 @@
30871 p->mode.spec.eText = QRF_TEXT_Tcl;
30872 break;
30873 case 6: /* json */
30874 p->mode.spec.eText = QRF_TEXT_Json;
30875 break;
 
 
 
30876 default: /* off */
30877 p->mode.spec.eText = QRF_TEXT_Plain;
30878 break;
30879 }
30880 chng = 1;
30881
--- extsrc/shell.c
+++ extsrc/shell.c
@@ -776,10 +776,11 @@
776 #define QRF_TEXT_Sql 2 /* Quote as an SQL literal */
777 #define QRF_TEXT_Csv 3 /* CSV-style quoting */
778 #define QRF_TEXT_Html 4 /* HTML-style quoting */
779 #define QRF_TEXT_Tcl 5 /* C/Tcl quoting */
780 #define QRF_TEXT_Json 6 /* JSON quoting */
781 #define QRF_TEXT_Relaxed 7 /* Relaxed SQL quoting */
782
783 /*
784 ** Quoting styles for BLOBs
785 ** Allowed values for sqlite3_qrf_spec.eBlob
786 */
@@ -969,10 +970,19 @@
970 };
971 #define qrfSpace(x) ((qrfCType[(unsigned char)x]&1)!=0)
972 #define qrfDigit(x) ((qrfCType[(unsigned char)x]&2)!=0)
973 #define qrfAlpha(x) ((qrfCType[(unsigned char)x]&4)!=0)
974 #define qrfAlnum(x) ((qrfCType[(unsigned char)x]&6)!=0)
975
976 #ifndef deliberate_fall_through
977 /* Quiet some compilers about some of our intentional code. */
978 # if defined(GCC_VERSION) && GCC_VERSION>=7000000
979 # define deliberate_fall_through __attribute__((fallthrough));
980 # else
981 # define deliberate_fall_through
982 # endif
983 #endif
984
985 /*
986 ** Set an error code and error message.
987 */
988 static void qrfError(
@@ -1570,10 +1580,49 @@
1580 zOut[j++] = '^';
1581 zOut[j++] = 0x40+c;
1582 }
1583 }
1584 }
1585
1586 /*
1587 ** Determine if the string z[] can be shown as plain text. Return true
1588 ** if z[] is unambiguously text. Return false if z[] needs to be
1589 ** quoted.
1590 **
1591 ** All of the following must be true in order for z[] to be relaxable:
1592 **
1593 ** (1) z[] does not begin or end with ' or whitespace
1594 ** (2) z[] is not the same as the NULL rendering
1595 ** (3) z[] does not looks like a numeric literal
1596 */
1597 static int qrfRelaxable(Qrf *p, const char *z){
1598 size_t i, n;
1599 if( z[0]=='\'' || qrfSpace(z[0]) ) return 0;
1600 if( z[0]==0 && (p->spec.zNull==0 || p->spec.zNull[0]==0) ) return 0;
1601 n = strlen(z);
1602 if( z[n-1]=='\'' || qrfSpace(z[n-1]) ) return 0;
1603 if( p->spec.zNull && strcmp(p->spec.zNull,z)==0 ) return 0;
1604 i = (z[0]=='-' || z[0]=='+');
1605 if( strcmp(z+i,"Inf")==0 ) return 0;
1606 if( !qrfDigit(z[i]) ) return 1;
1607 i++;
1608 while( qrfDigit(z[i]) ){ i++; }
1609 if( z[i]==0 ) return 0;
1610 if( z[i]=='.' ){
1611 i++;
1612 while( qrfDigit(z[i]) ){ i++; }
1613 if( z[i]==0 ) return 0;
1614 }
1615 if( z[i]=='e' || z[i]=='E' ){
1616 i++;
1617 if( z[i]=='+' || z[i]=='-' ){ i++; }
1618 if( !qrfDigit(z[i]) ) return 1;
1619 i++;
1620 while( qrfDigit(z[i]) ){ i++; }
1621 }
1622 return z[i]!=0;
1623 }
1624
1625 /*
1626 ** If a field contains any character identified by a 1 in the following
1627 ** array, then the string must be quoted for CSV.
1628 */
@@ -1600,10 +1649,16 @@
1649 ** Encode text appropriately and append it to pOut.
1650 */
1651 static void qrfEncodeText(Qrf *p, sqlite3_str *pOut, const char *zTxt){
1652 int iStart = sqlite3_str_length(pOut);
1653 switch( p->spec.eText ){
1654 case QRF_TEXT_Relaxed:
1655 if( qrfRelaxable(p, zTxt) ){
1656 sqlite3_str_appendall(pOut, zTxt);
1657 break;
1658 }
1659 deliberate_fall_through; /* FALLTHRU */
1660 case QRF_TEXT_Sql: {
1661 if( p->spec.eEsc==QRF_ESC_Off ){
1662 sqlite3_str_appendf(pOut, "%Q", zTxt);
1663 }else{
1664 sqlite3_str_appendf(pOut, "%#Q", zTxt);
@@ -2300,24 +2355,37 @@
2355 #define BOX_134 "\342\224\244" /* U+2524 -| */
2356 #define BOX_234 "\342\224\254" /* U+252c -,- */
2357 #define BOX_124 "\342\224\264" /* U+2534 -'- */
2358 #define BOX_1234 "\342\224\274" /* U+253c -|- */
2359
2360 /* Rounded corners: */
2361 #define BOX_R12 "\342\225\260" /* U+2570 '- */
2362 #define BOX_R23 "\342\225\255" /* U+256d ,- */
2363 #define BOX_R34 "\342\225\256" /* U+256e -, */
2364 #define BOX_R14 "\342\225\257" /* U+256f -' */
2365
2366 /* Doubled horizontal lines: */
2367 #define DBL_24 "\342\225\220" /* U+2550 === */
2368 #define DBL_123 "\342\225\236" /* U+255e |= */
2369 #define DBL_134 "\342\225\241" /* U+2561 =| */
2370 #define DBL_1234 "\342\225\252" /* U+256a =|= */
2371
2372 /* Draw horizontal line N characters long using unicode box
2373 ** characters
2374 */
2375 static void qrfBoxLine(sqlite3_str *pOut, int N, int bDbl){
2376 const char *azDash[2] = {
2377 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24 BOX_24,
2378 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24 DBL_24
2379 };/* 0 1 2 3 4 5 6 7 8 9 */
2380 const int nDash = 30;
2381 N *= 3;
2382 while( N>nDash ){
2383 sqlite3_str_append(pOut, azDash[bDbl], nDash);
2384 N -= nDash;
2385 }
2386 sqlite3_str_append(pOut, azDash[bDbl], N);
2387 }
2388
2389 /*
2390 ** Draw a horizontal separator for a QRF_STYLE_Box table.
2391 */
@@ -2324,22 +2392,23 @@
2392 static void qrfBoxSeparator(
2393 sqlite3_str *pOut,
2394 qrfColData *p,
2395 const char *zSep1,
2396 const char *zSep2,
2397 const char *zSep3,
2398 int bDbl
2399 ){
2400 int i;
2401 if( p->nCol>0 ){
2402 int useBorder = p->p->spec.bBorder!=QRF_No;
2403 if( useBorder ){
2404 sqlite3_str_appendall(pOut, zSep1);
2405 }
2406 qrfBoxLine(pOut, p->a[0].w+p->nMargin, bDbl);
2407 for(i=1; i<p->nCol; i++){
2408 sqlite3_str_appendall(pOut, zSep2);
2409 qrfBoxLine(pOut, p->a[i].w+p->nMargin, bDbl);
2410 }
2411 if( useBorder ){
2412 sqlite3_str_appendall(pOut, zSep3);
2413 }
2414 }
@@ -2743,11 +2812,11 @@
2812 }
2813 if( p->spec.bBorder==QRF_No){
2814 rowStart += 3;
2815 rowSep = "\n";
2816 }else{
2817 qrfBoxSeparator(p->pOut, &data, BOX_R23, BOX_234, BOX_R34, 0);
2818 }
2819 break;
2820 case QRF_STYLE_Table:
2821 if( data.nMargin ){
2822 rowStart = "| ";
@@ -2876,12 +2945,14 @@
2945 qrfRowSeparator(p->pOut, &data, '+');
2946 }
2947 break;
2948 }
2949 case QRF_STYLE_Box: {
2950 if( isTitleDataSeparator ){
2951 qrfBoxSeparator(p->pOut, &data, DBL_123, DBL_1234, DBL_134, 1);
2952 }else if( data.bMultiRow ){
2953 qrfBoxSeparator(p->pOut, &data, BOX_123, BOX_1234, BOX_134, 0);
2954 }
2955 break;
2956 }
2957 case QRF_STYLE_Markdown: {
2958 if( isTitleDataSeparator ){
@@ -2912,11 +2983,11 @@
2983
2984 /* Draw the line across the bottom of the table */
2985 if( p->spec.bBorder!=QRF_No ){
2986 switch( p->spec.eStyle ){
2987 case QRF_STYLE_Box:
2988 qrfBoxSeparator(p->pOut, &data, BOX_R12, BOX_124, BOX_R14, 0);
2989 break;
2990 case QRF_STYLE_Table:
2991 qrfRowSeparator(p->pOut, &data, '+');
2992 break;
2993 }
@@ -3369,12 +3440,12 @@
3440 if( p->mxWidth<=0 ) p->mxWidth = QRF_MAX_WIDTH;
3441 p->mxHeight = p->spec.nLineLimit;
3442 if( p->mxHeight<=0 ) p->mxHeight = 2147483647;
3443 if( p->spec.eStyle>QRF_STYLE_Table ) p->spec.eStyle = QRF_Auto;
3444 if( p->spec.eEsc>QRF_ESC_Symbol ) p->spec.eEsc = QRF_Auto;
3445 if( p->spec.eText>QRF_TEXT_Relaxed ) p->spec.eText = QRF_Auto;
3446 if( p->spec.eTitle>QRF_TEXT_Relaxed ) p->spec.eTitle = QRF_Auto;
3447 if( p->spec.eBlob>QRF_BLOB_Size ) p->spec.eBlob = QRF_Auto;
3448 qrf_reinit:
3449 switch( p->spec.eStyle ){
3450 case QRF_Auto: {
3451 switch( sqlite3_stmt_isexplain(pStmt) ){
@@ -10563,10 +10634,11 @@
10634 if( b1==0 ) return 1;
10635 sz = MultiByteToWideChar(CP_UTF8, 0, zPath, sz, b1, sz);
10636 b1[sz] = 0;
10637 rc = _wstat(b1, pStatBuf);
10638 if( rc==0 ) statTimesToUtc(zPath, pStatBuf);
10639 sqlite3_free(b1);
10640 return rc;
10641 #else
10642 return stat(zPath, pStatBuf);
10643 #endif
10644 }
@@ -24168,11 +24240,11 @@
24240
24241 /* Names of values for Mode.spec.eEsc and Mode.spec.eText
24242 */
24243 static const char *qrfEscNames[] = { "auto", "off", "ascii", "symbol" };
24244 static const char *qrfQuoteNames[] =
24245 { "off","off","sql","hex","csv","tcl","json","relaxed"};
24246
24247 /*
24248 ** These are the allowed shellFlgs values
24249 */
24250 #define SHFLG_Pagecache 0x00000001 /* The --pagecache option is used */
@@ -24424,10 +24496,11 @@
24496 }else if( eMode==MODE_TTY ){
24497 u8 mFlags = p->mode.mFlags;
24498 modeFree(&p->mode);
24499 modeChange(p, MODE_QBox);
24500 p->mode.bAutoScreenWidth = 1;
24501 p->mode.spec.eText = QRF_TEXT_Relaxed;
24502 p->mode.spec.nCharLimit = 300;
24503 p->mode.spec.nLineLimit = 5;
24504 p->mode.spec.bTextJsonb = QRF_Yes;
24505 p->mode.mFlags = mFlags;
24506 }
@@ -25989,10 +26062,11 @@
26062 if( pArg->mode.bAutoScreenWidth ){
26063 spec.nScreenWidth = shellScreenWidth();
26064 }
26065 if( spec.eBlob==QRF_BLOB_Auto ){
26066 switch( spec.eText ){
26067 case QRF_TEXT_Relaxed: /* fall through */
26068 case QRF_TEXT_Sql: spec.eBlob = QRF_BLOB_Sql; break;
26069 case QRF_TEXT_Json: spec.eBlob = QRF_BLOB_Json; break;
26070 default: spec.eBlob = QRF_BLOB_Text; break;
26071 }
26072 }
@@ -26744,12 +26818,12 @@
26818 " --list List available modes\n"
26819 " --null STRING Render SQL NULL values as the given string\n"
26820 " --once Setting changes to the right are reverted after\n"
26821 " the next SQL command.\n"
26822 " --quote ARG Enable/disable quoting of text. ARG can be\n"
26823 " \"off\", \"on\", \"sql\", \"relaxed\", \"csv\", \"html\",\n"
26824 " \"tcl\", or \"json\". \"off\" means show the text as-is.\n"
26825 " \"on\" is an alias for \"sql\".\n"
26826 " --reset Changes all mode settings back to their default.\n"
26827 " --rowsep STRING Use STRING as the row separator\n"
26828 " --sw|--screenwidth N Declare the screen width of the output device\n"
26829 " to be N characters. An attempt may be made to\n"
@@ -30630,12 +30704,12 @@
30704 ** --list List available modes
30705 ** --null STRING Render SQL NULL values as the given string
30706 ** --once Setting changes to the right are reverted after
30707 ** the next SQL command.
30708 ** --quote ARG Enable/disable quoting of text. ARG can be
30709 ** "off", "on", "sql", "relaxed", "csv", "html",
30710 ** "tcl", or "json". "off" means show the text as-is.
30711 ** "on" is an alias for "sql".
30712 ** --reset Changes all mode settings back to their default.
30713 ** --rowsep STRING Use STRING as the row separator
30714 ** --sw|--screenwidth N Declare the screen width of the output device
30715 ** to be N characters. An attempt may be made to
@@ -30840,13 +30914,14 @@
30914 ** how to set quoting. */
30915 i++;
30916 if( (k = pickStr(azArg[i],0,"no","yes","0","1",""))>=0 ){
30917 k &= 1; /* 0 for "off". 1 for "on". */
30918 }else{
30919 char *zErr = 0;
30920 k = pickStr(azArg[i],&zErr,
30921 "off","on","sql","csv","html","tcl","json","relaxed","");
30922 /* 0 1 2 3 4 5 6 7 */
30923 if( k<0 ){
30924 dotCmdError(p, i, "unknown", "%z", zErr);
30925 return 1;
30926 }
30927 }
@@ -30871,10 +30946,13 @@
30946 p->mode.spec.eText = QRF_TEXT_Tcl;
30947 break;
30948 case 6: /* json */
30949 p->mode.spec.eText = QRF_TEXT_Json;
30950 break;
30951 case 7: /* relaxed */
30952 p->mode.spec.eText = QRF_TEXT_Relaxed;
30953 break;
30954 default: /* off */
30955 p->mode.spec.eText = QRF_TEXT_Plain;
30956 break;
30957 }
30958 chng = 1;
30959
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
1616
** if you want a wrapper to interface SQLite with your choice of programming
1717
** language. The code for the "sqlite3" command-line shell is also in a
1818
** separate file. This file contains only code for the core SQLite library.
1919
**
2020
** The content in this amalgamation comes from Fossil check-in
21
-** aa0a28776bbeafb71b2db20ac8c16377ba07 with changes in files:
21
+** b3da6a8728641a0c9ca2f3b20c9817c0a2be with changes in files:
2222
**
2323
**
2424
*/
2525
#ifndef SQLITE_AMALGAMATION
2626
#define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467467
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468468
** [sqlite_version()] and [sqlite_source_id()].
469469
*/
470470
#define SQLITE_VERSION "3.52.0"
471471
#define SQLITE_VERSION_NUMBER 3052000
472
-#define SQLITE_SOURCE_ID "2025-12-05 12:22:23 aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90"
472
+#define SQLITE_SOURCE_ID "2025-12-06 11:54:43 b3da6a8728641a0c9ca2f3b20c9817c0a2be6c5bf05f020590547480d2aff0e0"
473473
#define SQLITE_SCM_BRANCH "trunk"
474474
#define SQLITE_SCM_TAGS ""
475
-#define SQLITE_SCM_DATETIME "2025-12-05T12:22:23.299Z"
475
+#define SQLITE_SCM_DATETIME "2025-12-06T11:54:43.371Z"
476476
477477
/*
478478
** CAPI3REF: Run-Time Library Version Numbers
479479
** KEYWORDS: sqlite3_version sqlite3_sourceid
480480
**
@@ -261312,11 +261312,11 @@
261312261312
int nArg, /* Number of args */
261313261313
sqlite3_value **apUnused /* Function arguments */
261314261314
){
261315261315
assert( nArg==0 );
261316261316
UNUSED_PARAM2(nArg, apUnused);
261317
- sqlite3_result_text(pCtx, "fts5: 2025-12-05 12:22:23 aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90", -1, SQLITE_TRANSIENT);
261317
+ sqlite3_result_text(pCtx, "fts5: 2025-12-06 11:54:43 b3da6a8728641a0c9ca2f3b20c9817c0a2be6c5bf05f020590547480d2aff0e0", -1, SQLITE_TRANSIENT);
261318261318
}
261319261319
261320261320
/*
261321261321
** Implementation of fts5_locale(LOCALE, TEXT) function.
261322261322
**
261323261323
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
16 ** if you want a wrapper to interface SQLite with your choice of programming
17 ** language. The code for the "sqlite3" command-line shell is also in a
18 ** separate file. This file contains only code for the core SQLite library.
19 **
20 ** The content in this amalgamation comes from Fossil check-in
21 ** aa0a28776bbeafb71b2db20ac8c16377ba07 with changes in files:
22 **
23 **
24 */
25 #ifndef SQLITE_AMALGAMATION
26 #define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468 ** [sqlite_version()] and [sqlite_source_id()].
469 */
470 #define SQLITE_VERSION "3.52.0"
471 #define SQLITE_VERSION_NUMBER 3052000
472 #define SQLITE_SOURCE_ID "2025-12-05 12:22:23 aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90"
473 #define SQLITE_SCM_BRANCH "trunk"
474 #define SQLITE_SCM_TAGS ""
475 #define SQLITE_SCM_DATETIME "2025-12-05T12:22:23.299Z"
476
477 /*
478 ** CAPI3REF: Run-Time Library Version Numbers
479 ** KEYWORDS: sqlite3_version sqlite3_sourceid
480 **
@@ -261312,11 +261312,11 @@
261312 int nArg, /* Number of args */
261313 sqlite3_value **apUnused /* Function arguments */
261314 ){
261315 assert( nArg==0 );
261316 UNUSED_PARAM2(nArg, apUnused);
261317 sqlite3_result_text(pCtx, "fts5: 2025-12-05 12:22:23 aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90", -1, SQLITE_TRANSIENT);
261318 }
261319
261320 /*
261321 ** Implementation of fts5_locale(LOCALE, TEXT) function.
261322 **
261323
--- extsrc/sqlite3.c
+++ extsrc/sqlite3.c
@@ -16,11 +16,11 @@
16 ** if you want a wrapper to interface SQLite with your choice of programming
17 ** language. The code for the "sqlite3" command-line shell is also in a
18 ** separate file. This file contains only code for the core SQLite library.
19 **
20 ** The content in this amalgamation comes from Fossil check-in
21 ** b3da6a8728641a0c9ca2f3b20c9817c0a2be with changes in files:
22 **
23 **
24 */
25 #ifndef SQLITE_AMALGAMATION
26 #define SQLITE_CORE 1
@@ -467,14 +467,14 @@
467 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
468 ** [sqlite_version()] and [sqlite_source_id()].
469 */
470 #define SQLITE_VERSION "3.52.0"
471 #define SQLITE_VERSION_NUMBER 3052000
472 #define SQLITE_SOURCE_ID "2025-12-06 11:54:43 b3da6a8728641a0c9ca2f3b20c9817c0a2be6c5bf05f020590547480d2aff0e0"
473 #define SQLITE_SCM_BRANCH "trunk"
474 #define SQLITE_SCM_TAGS ""
475 #define SQLITE_SCM_DATETIME "2025-12-06T11:54:43.371Z"
476
477 /*
478 ** CAPI3REF: Run-Time Library Version Numbers
479 ** KEYWORDS: sqlite3_version sqlite3_sourceid
480 **
@@ -261312,11 +261312,11 @@
261312 int nArg, /* Number of args */
261313 sqlite3_value **apUnused /* Function arguments */
261314 ){
261315 assert( nArg==0 );
261316 UNUSED_PARAM2(nArg, apUnused);
261317 sqlite3_result_text(pCtx, "fts5: 2025-12-06 11:54:43 b3da6a8728641a0c9ca2f3b20c9817c0a2be6c5bf05f020590547480d2aff0e0", -1, SQLITE_TRANSIENT);
261318 }
261319
261320 /*
261321 ** Implementation of fts5_locale(LOCALE, TEXT) function.
261322 **
261323
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146146
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147147
** [sqlite_version()] and [sqlite_source_id()].
148148
*/
149149
#define SQLITE_VERSION "3.52.0"
150150
#define SQLITE_VERSION_NUMBER 3052000
151
-#define SQLITE_SOURCE_ID "2025-12-05 12:22:23 aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90"
151
+#define SQLITE_SOURCE_ID "2025-12-06 11:54:43 b3da6a8728641a0c9ca2f3b20c9817c0a2be6c5bf05f020590547480d2aff0e0"
152152
#define SQLITE_SCM_BRANCH "trunk"
153153
#define SQLITE_SCM_TAGS ""
154
-#define SQLITE_SCM_DATETIME "2025-12-05T12:22:23.299Z"
154
+#define SQLITE_SCM_DATETIME "2025-12-06T11:54:43.371Z"
155155
156156
/*
157157
** CAPI3REF: Run-Time Library Version Numbers
158158
** KEYWORDS: sqlite3_version sqlite3_sourceid
159159
**
160160
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.52.0"
150 #define SQLITE_VERSION_NUMBER 3052000
151 #define SQLITE_SOURCE_ID "2025-12-05 12:22:23 aa0a28776bbeafb71b2db20ac8c16377ba07b7d3d58e46cfd11f60c694759a90"
152 #define SQLITE_SCM_BRANCH "trunk"
153 #define SQLITE_SCM_TAGS ""
154 #define SQLITE_SCM_DATETIME "2025-12-05T12:22:23.299Z"
155
156 /*
157 ** CAPI3REF: Run-Time Library Version Numbers
158 ** KEYWORDS: sqlite3_version sqlite3_sourceid
159 **
160
--- extsrc/sqlite3.h
+++ extsrc/sqlite3.h
@@ -146,14 +146,14 @@
146 ** [sqlite3_libversion_number()], [sqlite3_sourceid()],
147 ** [sqlite_version()] and [sqlite_source_id()].
148 */
149 #define SQLITE_VERSION "3.52.0"
150 #define SQLITE_VERSION_NUMBER 3052000
151 #define SQLITE_SOURCE_ID "2025-12-06 11:54:43 b3da6a8728641a0c9ca2f3b20c9817c0a2be6c5bf05f020590547480d2aff0e0"
152 #define SQLITE_SCM_BRANCH "trunk"
153 #define SQLITE_SCM_TAGS ""
154 #define SQLITE_SCM_DATETIME "2025-12-06T11:54:43.371Z"
155
156 /*
157 ** CAPI3REF: Run-Time Library Version Numbers
158 ** KEYWORDS: sqlite3_version sqlite3_sourceid
159 **
160
--- src/main.mk
+++ src/main.mk
@@ -662,10 +662,11 @@
662662
-DSQLITE_ENABLE_DBSTAT_VTAB \
663663
-DSQLITE_ENABLE_EXPLAIN_COMMENTS \
664664
-DSQLITE_ENABLE_FTS4 \
665665
-DSQLITE_ENABLE_FTS5 \
666666
-DSQLITE_ENABLE_MATH_FUNCTIONS \
667
+ -DSQLITE_ENABLE_PERCENTILE \
667668
-DSQLITE_ENABLE_SETLK_TIMEOUT \
668669
-DSQLITE_ENABLE_STMTVTAB \
669670
-DSQLITE_HAVE_ZLIB \
670671
-DSQLITE_ENABLE_DBPAGE_VTAB \
671672
-DSQLITE_TRUSTED_SCHEMA=0 \
@@ -689,10 +690,11 @@
689690
-DSQLITE_ENABLE_DBSTAT_VTAB \
690691
-DSQLITE_ENABLE_EXPLAIN_COMMENTS \
691692
-DSQLITE_ENABLE_FTS4 \
692693
-DSQLITE_ENABLE_FTS5 \
693694
-DSQLITE_ENABLE_MATH_FUNCTIONS \
695
+ -DSQLITE_ENABLE_PERCENTILE \
694696
-DSQLITE_ENABLE_SETLK_TIMEOUT \
695697
-DSQLITE_ENABLE_STMTVTAB \
696698
-DSQLITE_HAVE_ZLIB \
697699
-DSQLITE_ENABLE_DBPAGE_VTAB \
698700
-DSQLITE_TRUSTED_SCHEMA=0 \
699701
--- src/main.mk
+++ src/main.mk
@@ -662,10 +662,11 @@
662 -DSQLITE_ENABLE_DBSTAT_VTAB \
663 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
664 -DSQLITE_ENABLE_FTS4 \
665 -DSQLITE_ENABLE_FTS5 \
666 -DSQLITE_ENABLE_MATH_FUNCTIONS \
 
667 -DSQLITE_ENABLE_SETLK_TIMEOUT \
668 -DSQLITE_ENABLE_STMTVTAB \
669 -DSQLITE_HAVE_ZLIB \
670 -DSQLITE_ENABLE_DBPAGE_VTAB \
671 -DSQLITE_TRUSTED_SCHEMA=0 \
@@ -689,10 +690,11 @@
689 -DSQLITE_ENABLE_DBSTAT_VTAB \
690 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
691 -DSQLITE_ENABLE_FTS4 \
692 -DSQLITE_ENABLE_FTS5 \
693 -DSQLITE_ENABLE_MATH_FUNCTIONS \
 
694 -DSQLITE_ENABLE_SETLK_TIMEOUT \
695 -DSQLITE_ENABLE_STMTVTAB \
696 -DSQLITE_HAVE_ZLIB \
697 -DSQLITE_ENABLE_DBPAGE_VTAB \
698 -DSQLITE_TRUSTED_SCHEMA=0 \
699
--- src/main.mk
+++ src/main.mk
@@ -662,10 +662,11 @@
662 -DSQLITE_ENABLE_DBSTAT_VTAB \
663 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
664 -DSQLITE_ENABLE_FTS4 \
665 -DSQLITE_ENABLE_FTS5 \
666 -DSQLITE_ENABLE_MATH_FUNCTIONS \
667 -DSQLITE_ENABLE_PERCENTILE \
668 -DSQLITE_ENABLE_SETLK_TIMEOUT \
669 -DSQLITE_ENABLE_STMTVTAB \
670 -DSQLITE_HAVE_ZLIB \
671 -DSQLITE_ENABLE_DBPAGE_VTAB \
672 -DSQLITE_TRUSTED_SCHEMA=0 \
@@ -689,10 +690,11 @@
690 -DSQLITE_ENABLE_DBSTAT_VTAB \
691 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
692 -DSQLITE_ENABLE_FTS4 \
693 -DSQLITE_ENABLE_FTS5 \
694 -DSQLITE_ENABLE_MATH_FUNCTIONS \
695 -DSQLITE_ENABLE_PERCENTILE \
696 -DSQLITE_ENABLE_SETLK_TIMEOUT \
697 -DSQLITE_ENABLE_STMTVTAB \
698 -DSQLITE_HAVE_ZLIB \
699 -DSQLITE_ENABLE_DBPAGE_VTAB \
700 -DSQLITE_TRUSTED_SCHEMA=0 \
701
--- tools/makemake.tcl
+++ tools/makemake.tcl
@@ -247,10 +247,11 @@
247247
-DSQLITE_ENABLE_DBSTAT_VTAB
248248
-DSQLITE_ENABLE_EXPLAIN_COMMENTS
249249
-DSQLITE_ENABLE_FTS4
250250
-DSQLITE_ENABLE_FTS5
251251
-DSQLITE_ENABLE_MATH_FUNCTIONS
252
+ -DSQLITE_ENABLE_PERCENTILE
252253
-DSQLITE_ENABLE_SETLK_TIMEOUT
253254
-DSQLITE_ENABLE_STMTVTAB
254255
-DSQLITE_HAVE_ZLIB
255256
-DSQLITE_ENABLE_DBPAGE_VTAB
256257
-DSQLITE_TRUSTED_SCHEMA=0
257258
--- tools/makemake.tcl
+++ tools/makemake.tcl
@@ -247,10 +247,11 @@
247 -DSQLITE_ENABLE_DBSTAT_VTAB
248 -DSQLITE_ENABLE_EXPLAIN_COMMENTS
249 -DSQLITE_ENABLE_FTS4
250 -DSQLITE_ENABLE_FTS5
251 -DSQLITE_ENABLE_MATH_FUNCTIONS
 
252 -DSQLITE_ENABLE_SETLK_TIMEOUT
253 -DSQLITE_ENABLE_STMTVTAB
254 -DSQLITE_HAVE_ZLIB
255 -DSQLITE_ENABLE_DBPAGE_VTAB
256 -DSQLITE_TRUSTED_SCHEMA=0
257
--- tools/makemake.tcl
+++ tools/makemake.tcl
@@ -247,10 +247,11 @@
247 -DSQLITE_ENABLE_DBSTAT_VTAB
248 -DSQLITE_ENABLE_EXPLAIN_COMMENTS
249 -DSQLITE_ENABLE_FTS4
250 -DSQLITE_ENABLE_FTS5
251 -DSQLITE_ENABLE_MATH_FUNCTIONS
252 -DSQLITE_ENABLE_PERCENTILE
253 -DSQLITE_ENABLE_SETLK_TIMEOUT
254 -DSQLITE_ENABLE_STMTVTAB
255 -DSQLITE_HAVE_ZLIB
256 -DSQLITE_ENABLE_DBPAGE_VTAB
257 -DSQLITE_TRUSTED_SCHEMA=0
258
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
2626
CFLAGS = -o
2727
BCC = $(DMDIR)\bin\dmc $(CFLAGS)
2828
TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
2929
LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 dnsapi
3030
31
-SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP
31
+SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_PERCENTILE -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP
3232
33
-SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
33
+SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_PERCENTILE -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
3434
3535
PIKCHR_OPTIONS = -DPIKCHR_TOKEN_LIMIT=10000
3636
3737
SRC = add_.c ajax_.c alerts_.c allrepo_.c attach_.c backlink_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c chat_.c checkin_.c checkout_.c clearsign_.c clone_.c color_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c match_.c md5_.c merge_.c merge3_.c moderate_.c name_.c patch_.c path_.c piechart_.c pikchrshow_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c robot_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c terminal_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c xfer_.c xfersetup_.c xsystem_.c zip_.c
3838
3939
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
26 CFLAGS = -o
27 BCC = $(DMDIR)\bin\dmc $(CFLAGS)
28 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
29 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 dnsapi
30
31 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP
32
33 SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
34
35 PIKCHR_OPTIONS = -DPIKCHR_TOKEN_LIMIT=10000
36
37 SRC = add_.c ajax_.c alerts_.c allrepo_.c attach_.c backlink_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c chat_.c checkin_.c checkout_.c clearsign_.c clone_.c color_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c match_.c md5_.c merge_.c merge3_.c moderate_.c name_.c patch_.c path_.c piechart_.c pikchrshow_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c robot_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c terminal_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c xfer_.c xfersetup_.c xsystem_.c zip_.c
38
39
--- win/Makefile.dmc
+++ win/Makefile.dmc
@@ -26,13 +26,13 @@
26 CFLAGS = -o
27 BCC = $(DMDIR)\bin\dmc $(CFLAGS)
28 TCC = $(DMDIR)\bin\dmc $(CFLAGS) $(DMCDEF) $(SSL) $(INCL)
29 LIBS = $(DMDIR)\extra\lib\ zlib wsock32 advapi32 dnsapi
30
31 SQLITE_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_PERCENTILE -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP
32
33 SHELL_OPTIONS = -DNDEBUG=1 -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_OMIT_DECLTYPE -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_ENABLE_LOCKING_STYLE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_PERCENTILE -DSQLITE_ENABLE_SETLK_TIMEOUT -DSQLITE_ENABLE_STMTVTAB -DSQLITE_HAVE_ZLIB -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TRUSTED_SCHEMA=0 -DHAVE_USLEEP -Dmain=sqlite3_shell -DSQLITE_SHELL_IS_UTF8=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -DUSE_SYSTEM_SQLITE=$(USE_SYSTEM_SQLITE) -DSQLITE_SHELL_DBNAME_PROC=sqlcmd_get_dbname -DSQLITE_SHELL_INIT_PROC=sqlcmd_init_proc -Daccess=file_access -Dsystem=fossil_system -Dgetenv=fossil_getenv -Dfopen=fossil_fopen
34
35 PIKCHR_OPTIONS = -DPIKCHR_TOKEN_LIMIT=10000
36
37 SRC = add_.c ajax_.c alerts_.c allrepo_.c attach_.c backlink_.c backoffice_.c bag_.c bisect_.c blob_.c branch_.c browse_.c builtin_.c bundle_.c cache_.c capabilities_.c captcha_.c cgi_.c chat_.c checkin_.c checkout_.c clearsign_.c clone_.c color_.c comformat_.c configure_.c content_.c cookies_.c db_.c delta_.c deltacmd_.c deltafunc_.c descendants_.c diff_.c diffcmd_.c dispatch_.c doc_.c encode_.c etag_.c event_.c export_.c extcgi_.c file_.c fileedit_.c finfo_.c foci_.c forum_.c fshell_.c fusefs_.c fuzz_.c glob_.c graph_.c gzip_.c hname_.c hook_.c http_.c http_socket_.c http_ssl_.c http_transport_.c import_.c info_.c interwiki_.c json_.c json_artifact_.c json_branch_.c json_config_.c json_diff_.c json_dir_.c json_finfo_.c json_login_.c json_query_.c json_report_.c json_status_.c json_tag_.c json_timeline_.c json_user_.c json_wiki_.c leaf_.c loadctrl_.c login_.c lookslike_.c main_.c manifest_.c markdown_.c markdown_html_.c match_.c md5_.c merge_.c merge3_.c moderate_.c name_.c patch_.c path_.c piechart_.c pikchrshow_.c pivot_.c popen_.c pqueue_.c printf_.c publish_.c purge_.c rebuild_.c regexp_.c repolist_.c report_.c robot_.c rss_.c schema_.c search_.c security_audit_.c setup_.c setupuser_.c sha1_.c sha1hard_.c sha3_.c shun_.c sitemap_.c skins_.c smtp_.c sqlcmd_.c stash_.c stat_.c statrep_.c style_.c sync_.c tag_.c tar_.c terminal_.c th_main_.c timeline_.c tkt_.c tktsetup_.c undo_.c unicode_.c unversioned_.c update_.c url_.c user_.c utf8_.c util_.c verify_.c vfile_.c wiki_.c wikiformat_.c winfile_.c winhttp_.c xfer_.c xfersetup_.c xsystem_.c zip_.c
38
39
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -2558,10 +2558,11 @@
25582558
-DSQLITE_ENABLE_DBSTAT_VTAB \
25592559
-DSQLITE_ENABLE_EXPLAIN_COMMENTS \
25602560
-DSQLITE_ENABLE_FTS4 \
25612561
-DSQLITE_ENABLE_FTS5 \
25622562
-DSQLITE_ENABLE_MATH_FUNCTIONS \
2563
+ -DSQLITE_ENABLE_PERCENTILE \
25632564
-DSQLITE_ENABLE_SETLK_TIMEOUT \
25642565
-DSQLITE_ENABLE_STMTVTAB \
25652566
-DSQLITE_HAVE_ZLIB \
25662567
-DSQLITE_ENABLE_DBPAGE_VTAB \
25672568
-DSQLITE_TRUSTED_SCHEMA=0 \
@@ -2588,10 +2589,11 @@
25882589
-DSQLITE_ENABLE_DBSTAT_VTAB \
25892590
-DSQLITE_ENABLE_EXPLAIN_COMMENTS \
25902591
-DSQLITE_ENABLE_FTS4 \
25912592
-DSQLITE_ENABLE_FTS5 \
25922593
-DSQLITE_ENABLE_MATH_FUNCTIONS \
2594
+ -DSQLITE_ENABLE_PERCENTILE \
25932595
-DSQLITE_ENABLE_SETLK_TIMEOUT \
25942596
-DSQLITE_ENABLE_STMTVTAB \
25952597
-DSQLITE_HAVE_ZLIB \
25962598
-DSQLITE_ENABLE_DBPAGE_VTAB \
25972599
-DSQLITE_TRUSTED_SCHEMA=0 \
25982600
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -2558,10 +2558,11 @@
2558 -DSQLITE_ENABLE_DBSTAT_VTAB \
2559 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
2560 -DSQLITE_ENABLE_FTS4 \
2561 -DSQLITE_ENABLE_FTS5 \
2562 -DSQLITE_ENABLE_MATH_FUNCTIONS \
 
2563 -DSQLITE_ENABLE_SETLK_TIMEOUT \
2564 -DSQLITE_ENABLE_STMTVTAB \
2565 -DSQLITE_HAVE_ZLIB \
2566 -DSQLITE_ENABLE_DBPAGE_VTAB \
2567 -DSQLITE_TRUSTED_SCHEMA=0 \
@@ -2588,10 +2589,11 @@
2588 -DSQLITE_ENABLE_DBSTAT_VTAB \
2589 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
2590 -DSQLITE_ENABLE_FTS4 \
2591 -DSQLITE_ENABLE_FTS5 \
2592 -DSQLITE_ENABLE_MATH_FUNCTIONS \
 
2593 -DSQLITE_ENABLE_SETLK_TIMEOUT \
2594 -DSQLITE_ENABLE_STMTVTAB \
2595 -DSQLITE_HAVE_ZLIB \
2596 -DSQLITE_ENABLE_DBPAGE_VTAB \
2597 -DSQLITE_TRUSTED_SCHEMA=0 \
2598
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -2558,10 +2558,11 @@
2558 -DSQLITE_ENABLE_DBSTAT_VTAB \
2559 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
2560 -DSQLITE_ENABLE_FTS4 \
2561 -DSQLITE_ENABLE_FTS5 \
2562 -DSQLITE_ENABLE_MATH_FUNCTIONS \
2563 -DSQLITE_ENABLE_PERCENTILE \
2564 -DSQLITE_ENABLE_SETLK_TIMEOUT \
2565 -DSQLITE_ENABLE_STMTVTAB \
2566 -DSQLITE_HAVE_ZLIB \
2567 -DSQLITE_ENABLE_DBPAGE_VTAB \
2568 -DSQLITE_TRUSTED_SCHEMA=0 \
@@ -2588,10 +2589,11 @@
2589 -DSQLITE_ENABLE_DBSTAT_VTAB \
2590 -DSQLITE_ENABLE_EXPLAIN_COMMENTS \
2591 -DSQLITE_ENABLE_FTS4 \
2592 -DSQLITE_ENABLE_FTS5 \
2593 -DSQLITE_ENABLE_MATH_FUNCTIONS \
2594 -DSQLITE_ENABLE_PERCENTILE \
2595 -DSQLITE_ENABLE_SETLK_TIMEOUT \
2596 -DSQLITE_ENABLE_STMTVTAB \
2597 -DSQLITE_HAVE_ZLIB \
2598 -DSQLITE_ENABLE_DBPAGE_VTAB \
2599 -DSQLITE_TRUSTED_SCHEMA=0 \
2600
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -316,10 +316,11 @@
316316
/DSQLITE_ENABLE_DBSTAT_VTAB \
317317
/DSQLITE_ENABLE_EXPLAIN_COMMENTS \
318318
/DSQLITE_ENABLE_FTS4 \
319319
/DSQLITE_ENABLE_FTS5 \
320320
/DSQLITE_ENABLE_MATH_FUNCTIONS \
321
+ /DSQLITE_ENABLE_PERCENTILE \
321322
/DSQLITE_ENABLE_SETLK_TIMEOUT \
322323
/DSQLITE_ENABLE_STMTVTAB \
323324
/DSQLITE_HAVE_ZLIB \
324325
/DSQLITE_ENABLE_DBPAGE_VTAB \
325326
/DSQLITE_TRUSTED_SCHEMA=0 \
@@ -343,10 +344,11 @@
343344
/DSQLITE_ENABLE_DBSTAT_VTAB \
344345
/DSQLITE_ENABLE_EXPLAIN_COMMENTS \
345346
/DSQLITE_ENABLE_FTS4 \
346347
/DSQLITE_ENABLE_FTS5 \
347348
/DSQLITE_ENABLE_MATH_FUNCTIONS \
349
+ /DSQLITE_ENABLE_PERCENTILE \
348350
/DSQLITE_ENABLE_SETLK_TIMEOUT \
349351
/DSQLITE_ENABLE_STMTVTAB \
350352
/DSQLITE_HAVE_ZLIB \
351353
/DSQLITE_ENABLE_DBPAGE_VTAB \
352354
/DSQLITE_TRUSTED_SCHEMA=0 \
353355
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -316,10 +316,11 @@
316 /DSQLITE_ENABLE_DBSTAT_VTAB \
317 /DSQLITE_ENABLE_EXPLAIN_COMMENTS \
318 /DSQLITE_ENABLE_FTS4 \
319 /DSQLITE_ENABLE_FTS5 \
320 /DSQLITE_ENABLE_MATH_FUNCTIONS \
 
321 /DSQLITE_ENABLE_SETLK_TIMEOUT \
322 /DSQLITE_ENABLE_STMTVTAB \
323 /DSQLITE_HAVE_ZLIB \
324 /DSQLITE_ENABLE_DBPAGE_VTAB \
325 /DSQLITE_TRUSTED_SCHEMA=0 \
@@ -343,10 +344,11 @@
343 /DSQLITE_ENABLE_DBSTAT_VTAB \
344 /DSQLITE_ENABLE_EXPLAIN_COMMENTS \
345 /DSQLITE_ENABLE_FTS4 \
346 /DSQLITE_ENABLE_FTS5 \
347 /DSQLITE_ENABLE_MATH_FUNCTIONS \
 
348 /DSQLITE_ENABLE_SETLK_TIMEOUT \
349 /DSQLITE_ENABLE_STMTVTAB \
350 /DSQLITE_HAVE_ZLIB \
351 /DSQLITE_ENABLE_DBPAGE_VTAB \
352 /DSQLITE_TRUSTED_SCHEMA=0 \
353
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -316,10 +316,11 @@
316 /DSQLITE_ENABLE_DBSTAT_VTAB \
317 /DSQLITE_ENABLE_EXPLAIN_COMMENTS \
318 /DSQLITE_ENABLE_FTS4 \
319 /DSQLITE_ENABLE_FTS5 \
320 /DSQLITE_ENABLE_MATH_FUNCTIONS \
321 /DSQLITE_ENABLE_PERCENTILE \
322 /DSQLITE_ENABLE_SETLK_TIMEOUT \
323 /DSQLITE_ENABLE_STMTVTAB \
324 /DSQLITE_HAVE_ZLIB \
325 /DSQLITE_ENABLE_DBPAGE_VTAB \
326 /DSQLITE_TRUSTED_SCHEMA=0 \
@@ -343,10 +344,11 @@
344 /DSQLITE_ENABLE_DBSTAT_VTAB \
345 /DSQLITE_ENABLE_EXPLAIN_COMMENTS \
346 /DSQLITE_ENABLE_FTS4 \
347 /DSQLITE_ENABLE_FTS5 \
348 /DSQLITE_ENABLE_MATH_FUNCTIONS \
349 /DSQLITE_ENABLE_PERCENTILE \
350 /DSQLITE_ENABLE_SETLK_TIMEOUT \
351 /DSQLITE_ENABLE_STMTVTAB \
352 /DSQLITE_HAVE_ZLIB \
353 /DSQLITE_ENABLE_DBPAGE_VTAB \
354 /DSQLITE_TRUSTED_SCHEMA=0 \
355

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button