summaryrefslogtreecommitdiffstats
path: root/www/releaselog/3_44_2.html
blob: 1e173f51a2ec484f4dec1bf5ad94a02631ae9946 (plain)
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
183
184
185
186
187
188
189
190
191
<!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.2 On 2023-11-24</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.2 On 2023-11-24</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>Prior changes from 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.
</ol>
<p><b>Changes in this specific patch release, version 3.44.2 (2023-11-24):</b></p>
<p><ol class='lessindent'>
<li value='17'> Fix a mistake in the <a href="../cli.html">CLI</a> that was introduced by the fix (item 15 above) in 3.44.1.
<li> Fix a problem in FTS5 that was discovered during internal fuzz testing only
     minutes after the 3.44.1 release was tagged.
<li> Fix incomplete assert() statements that the fuzzer discovered the day after
     the previous release.
<li> Fix a couple of harmless compiler warnings that appeared in debug builds with GCC 16.
<p><b>Hashes:</b>
<li>SQLITE_SOURCE_ID: 2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f
<li>SHA3-256 for sqlite3.c: bd70b012e2d1b3efa132d905224cd0ab476a69b892f8c6b21135756ec7ffbb13

</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>