1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
<!DOCTYPE html>
<html><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="../sqlite.css" rel="stylesheet">
<title>SQLite Release 3.44.1 On 2023-11-22</title>
<!-- path=../ -->
</head>
<body>
<div class=nosearch>
<a href="../index.html">
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite" border="0">
</a>
<div><!-- IE hack to prevent disappearing logo --></div>
<div class="tagline desktoponly">
Small. Fast. Reliable.<br>Choose any three.
</div>
<div class="menu mainmenu">
<ul>
<li><a href="../index.html">Home</a>
<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
<li class='wideonly'><a href='../about.html'>About</a>
<li class='desktoponly'><a href="../docs.html">Documentation</a>
<li class='desktoponly'><a href="../download.html">Download</a>
<li class='wideonly'><a href='../copyright.html'>License</a>
<li class='desktoponly'><a href="../support.html">Support</a>
<li class='desktoponly'><a href="../prosupport.html">Purchase</a>
<li class='search' id='search_menubutton'>
<a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
</ul>
</div>
<div class="menu submenu" id="submenu">
<ul>
<li><a href='../about.html'>About</a>
<li><a href='../docs.html'>Documentation</a>
<li><a href='../download.html'>Download</a>
<li><a href='../support.html'>Support</a>
<li><a href='../prosupport.html'>Purchase</a>
</ul>
</div>
<div class="searchmenu" id="searchmenu">
<form method="GET" action="../search">
<select name="s" id="searchtype">
<option value="d">Search Documentation</option>
<option value="c">Search Changelog</option>
</select>
<input type="text" name="q" id="searchbox" value="">
<input type="submit" value="Go">
</form>
</div>
</div>
<script>
function toggle_div(nm) {
var w = document.getElementById(nm);
if( w.style.display=="block" ){
w.style.display = "none";
}else{
w.style.display = "block";
}
}
function toggle_search() {
var w = document.getElementById("searchmenu");
if( w.style.display=="block" ){
w.style.display = "none";
} else {
w.style.display = "block";
setTimeout(function(){
document.getElementById("searchbox").focus()
}, 30);
}
}
function div_off(nm){document.getElementById(nm).style.display="none";}
window.onbeforeunload = function(e){div_off("submenu");}
/* Disable the Search feature if we are not operating from CGI, since */
/* Search is accomplished using CGI and will not work without it. */
if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
document.getElementById("search_menubutton").style.display = "none";
}
/* Used by the Hide/Show button beside syntax diagrams, to toggle the */
function hideorshow(btn,obj){
var x = document.getElementById(obj);
var b = document.getElementById(btn);
if( x.style.display!='none' ){
x.style.display = 'none';
b.innerHTML='show';
}else{
x.style.display = '';
b.innerHTML='hide';
}
return false;
}
var antiRobot = 0;
function antiRobotGo(){
if( antiRobot!=3 ) return;
antiRobot = 7;
var j = document.getElementById("mtimelink");
if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href");
}
function antiRobotDefense(){
document.body.onmousedown=function(){
antiRobot |= 2;
antiRobotGo();
document.body.onmousedown=null;
}
document.body.onmousemove=function(){
antiRobot |= 2;
antiRobotGo();
document.body.onmousemove=null;
}
setTimeout(function(){
antiRobot |= 1;
antiRobotGo();
}, 100)
antiRobotGo();
}
antiRobotDefense();
</script>
<h2>SQLite Release 3.44.1 On 2023-11-22</h2><p><b>Prior changes from version 3.44.0 (2023-11-01):</b></p>
<p><ol class='lessindent'>
<li value='1'> <a href="../lang_aggfunc.html">Aggregate functions</a> can now include an ORDER BY clause after their last
parameter. The arguments to the function are processed in the order
specified. This can be important for functions like
<a href="../lang_aggfunc.html#group_concat">string_agg()</a> and <a href="../json1.html#jgrouparray">json_group_array()</a>.
<li> Add support for the <a href="../lang_corefunc.html#concat">concat()</a> and <a href="../lang_corefunc.html#concat_ws">concat_ws()</a> scalar SQL functions,
compatible with PostgreSQL, SQLServer, and MySQL.
<li> Add support for the <a href="../lang_aggfunc.html#group_concat">string_agg()</a> aggregate SQL function, compatible
with PostgreSQL and SQLServer.
<li> New conversion letters on the <a href="../lang_datefunc.html#strftm">strftime() SQL function</a>: %e %F %I %k %l %p %P %R %T %u
<li> Add new C-language APIs: <a href="../c3ref/get_clientdata.html">sqlite3_get_clientdata()</a> and <a href="../c3ref/get_clientdata.html">sqlite3_set_clientdata()</a>.
<li> Many errors associated with CREATE TABLE are now raised when the CREATE TABLE statement
itself is run, rather than being deferred until the first time the table is actually
used.
<li> The <a href="../pragma.html#pragma_integrity_check">PRAGMA integrity_check</a> command now verifies the consistency of the
content in various built-in <a href="../vtab.html">virtual tables</a> using the new <a href="../vtab.html#xintegrity">xIntegrity method</a>.
This works for the <a href="../fts3.html">FTS3</a>, <a href="../fts3.html#fts4">FTS4</a>, <a href="../fts5.html">FTS5</a>, <a href="../rtree.html">RTREE</a>, and <a href="../geopoly.html">GEOPOLY</a> extensions.
<li> The <a href="../c3ref/c_dbconfig_defensive.html#sqlitedbconfigdefensive">SQLITE_DBCONFIG_DEFENSIVE</a> setting now prevents <a href="../pragma.html#pragma_writable_schema">PRAGMA writable_schema</a>
from being turned on. Previously writable_schema could be turned on, but would
not actually allow the schema to be writable. Now it simply cannot be turned on.
<li> Tag the built-in <a href="../fts3.html">FTS3</a>, <a href="../fts3.html#fts4">FTS4</a>, <a href="../fts5.html">FTS5</a>, <a href="../rtree.html">RTREE</a>, and <a href="../geopoly.html">GEOPOLY</a> virtual tables as
<a href="../c3ref/c_vtab_constraint_support.html#sqlitevtabinnocuous">SQLITE_VTAB_INNOCUOUS</a> so that they can be used inside of triggers in
high-security deployments.
<li> The <a href="../pragma.html#pragma_case_sensitive_like">PRAGMA case_sensitive_like</a> statement is deprecated, as its use when the
schema contains LIKE operators can lead to reports of database corruption
by <a href="../pragma.html#pragma_integrity_check">PRAGMA integrity_check</a>.
<li> <a href="../compile.html#use_seh">SQLITE_USE_SEH</a> (Structured Exception Handling) is now enabled by default whenever
SQLite is built using the Microsoft C compiler. It can be disabled using
-DSQLITE_USE_SEH=0
<li> Query planner optimizations:
<ol type="a">
<li> In partial index scans, if the WHERE clause implies a constant value for a table
column, replace occurrences of that table column with the constant. This
increases the likelihood of the partial index being a covering index.
<li> Disable the view-scan optimization (added in <a href="../releaselog/3_42_0.html">version 3.42.0</a> - item 1c)
as it was causing multiple performance regressions. In its place, reduce
the estimated row count for DISTINCT subqueries by a factor of 8.
</ol>
<li> SQLite now performs run-time detection of whether or not the underlying hardware
supports "long double" with precision greater than "double" and uses appropriate
floating-point routines depending on what it discovered.
<li> The <a href="../cli.html">CLI</a> for Windows now defaults to using UTF-8 for both input
and output on platforms that support it. The --no-utf8 option is available
to disable UTF8 support.
</ol>
<p><b>Changes in this specific patch release, version 3.44.1 (2023-11-22):</b></p>
<p><ol class='lessindent'>
<li value='15'> Change the <a href="../cli.html">CLI</a> so that it uses UTF-16 for console I/O on Windows. This
enables proper display of unicode text on old Windows7 machines.
<li> Other obscure bug fixes.
<p><b>Hashes:</b>
<li>SQLITE_SOURCE_ID: 2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4
<li>SHA3-256 for sqlite3.c: e359dc502a73f3a8ad8e976a51231134d25cb93ad557a724dd92fe0c5897113a
</ol></p>
<p>A <a href="../changes.html">complete list of SQLite releases</a>
in a single page and a <a href="../chronology.html">chronology</a> are both also available.
A detailed history of every
check-in is available at
<a href="https://www.sqlite.org/src/timeline">
SQLite version control site</a>.</p>
|