summaryrefslogtreecommitdiffstats
path: root/www/releaselog/3_38_4.html
blob: da7bea17d9f83ea4cbbd371f9466f9b149375f81 (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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
<!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.38.4 On 2022-05-04</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.38.4 On 2022-05-04</h2><p><b>Prior changes from version 3.38.0 (2022-02-22):</b></p>
<p><ol class='lessindent'>
<li value='1'> Added <a href="../json1.html#jptr">the -> and ->> operators</a> for easier processing of JSON.
     The new operators are compatible with MySQL and PostgreSQL.
<li> The JSON functions are now built-ins.  It is no longer necessary
     to use the <a href="../compile.html#enable_json1">-DSQLITE_ENABLE_JSON1</a> compile-time option to enable JSON
     support.  JSON is on by default.  Disable the JSON interface using
     the new <a href="../compile.html#omit_json">-DSQLITE_OMIT_JSON</a> compile-time option.
<li> Enhancements to <a href="../lang_datefunc.html">date and time functions</a>:
     <ol type="a">
     <li> Added the <a href="../lang_datefunc.html#uepch">unixepoch() function</a>.
     <li> Added the <a href="../lang_datefunc.html#automod">auto modifier</a> and the <a href="../lang_datefunc.html#jdmod">julianday modifier</a>.
     </ol>
<li> Rename the <a href="../lang_corefunc.html#printf">printf() SQL function</a> to <a href="../lang_corefunc.html#format">format()</a> for better
     compatibility.  The original printf() name is retained as an alias
     for backwards compatibility.
<li> Added the <a href="../c3ref/errcode.html">sqlite3_error_offset()</a> interface, which can sometimes
     help to localize an SQL error to a specific character in the input
     SQL text, so that applications can provide better error messages.
<li> Enhanced the interface to <a href="../vtab.html">virtual tables</a> as follows:
     <ol type="a">
     <li> Added the <a href="../c3ref/vtab_distinct.html">sqlite3_vtab_distinct()</a> interface.
     <li> Added the <a href="../c3ref/vtab_rhs_value.html">sqlite3_vtab_rhs_value()</a> interface.
     <li> Added new operator types <a href="../c3ref/c_index_constraint_eq.html">SQLITE_INDEX_CONSTRAINT_LIMIT</a>
          and <a href="../c3ref/c_index_constraint_eq.html">SQLITE_INDEX_CONSTRAINT_OFFSET</a>.
     <li> Added the <a href="../c3ref/vtab_in.html">sqlite3_vtab_in()</a> interface (and related) to enable
          a virtual table to process <a href="../lang_expr.html#in_op">IN operator</a> constraints all at once,
          rather than processing each value of the right-hand side of the
          IN operator separately.
     </ol>
<li> <a href="../cli.html">CLI</a> enhancements:
     <ol type="a">
     <li> <a href="../cli.html#clmnr">Columnar output modes</a> are enhanced to correctly handle tabs
          and newlines embedded in text.
     <li> Added options like "--wrap N", "--wordwrap on", and "--quote"
          to the <a href="../cli.html#clmnr">columnar output modes</a>.
     <li> Added the <a href="../cli.html#qbox">.mode qbox</a> alias.
     <li> The <a href="../cli.html#csv">.import command</a> automatically disambiguates column names.
     <li> Use the new <a href="../c3ref/errcode.html">sqlite3_error_offset()</a> interface to provide better
          error messages.
     </ol>
<li> Query planner enhancements:
     <ol type="a">
     <li> Use a Bloom filter to speed up large analytic queries.
     <li> Use a balanced merge tree to evaluate UNION or UNION ALL
          compound SELECT statements that have an ORDER BY clause.
     </ol>
<li> The <a href="../lang_altertable.html">ALTER TABLE</a> statement is changed to silently ignores entries in the
     <a href="../schematab.html">sqlite_schema table</a> that do not parse when <a href="../pragma.html#pragma_writable_schema">PRAGMA writable_schema=ON</a>.
</ol>
<p><b>Prior changes from version 3.38.1 (2022-03-12):</b></p>
<p><ol class='lessindent'>
<li value='10'> Fix problems with the new Bloom filter optimization that might cause
     some obscure queries to get an incorrect answer.
<li> Fix the <a href="../lang_datefunc.html#localtime">localtime modifier</a> of the <a href="../lang_datefunc.html">date and time functions</a> so that
     it preserves fractional seconds.
<li> Fix the <a href="../lang_corefunc.html#sqlite_offset">sqlite_offset SQL function</a> so that it works correctly even
     in corner cases such as when the argument is a virtual column or the
     column of a view.
<li> Fix <a href="../rowvalue.html#rvinop">row value IN operator</a> constraints on <a href="../vtab.html">virtual tables</a> so that they
     work correctly even if the virtual table implementation relies on bytecode
     to filter rows that do not satisfy the constraint.
<li> Other minor fixes to assert() statements, test cases, and documentation.
     See the <a href="https://sqlite.org/src/timeline?p=version-3.38.1&bt=version-3.38.0">source code timeline</a>
     for details.

</ol>
<p><b>Prior changes from version 3.38.2 (2022-03-26):</b></p>
<p><ol class='lessindent'>
<li value='15'> Fix a user-discovered problem with the new Bloom filter optimization
     that might cause an incorrect answer when doing a LEFT JOIN with a WHERE
     clause constraint that says that one of the columns on the right table of
     the LEFT JOIN is NULL. See
     <a href='https://sqlite.org/forum/forumpost/031e262a89b6a9d2'>forum thread 031e262a89b6a9d2</a>.
<li> Other minor patches.  See the
     <a href='https://sqlite.org/src/timeline?p=version-3.38.2&bt=version-3.38.1'>timeline</a> for
     details.

</ol>
<p><b>Prior changes from version 3.38.3 (2022-04-27):</b></p>
<p><ol class='lessindent'>
<li value='17'> Fix a case of the query planner be overly aggressive with optimizing automatic-index
     and Bloom-filter construction, using inappropriate ON clause terms to restrict the
     size of the automatic-index or Bloom filter, and resulting in missing rows in the
     output.
     <a href='https://sqlite.org/forum/forumpost/0d3200f4f3bcd3a3'>Forum thread 0d3200f4f3bcd3a3</a>.
<li> Other minor patches.  See the
     <a href='https://sqlite.org/src/timeline?p=version-3.38.3&bt=version-3.38.2'>timeline</a> for
     details.

</ol>
<p><b>Changes in this specific patch release, version 3.38.4 (2022-05-04):</b></p>
<p><ol class='lessindent'>
<li value='19'> Fix a byte-code problem in the Bloom filter pull-down optimization added by release
     3.38.0 in which an error in the byte code causes the byte code engine to enter an
     infinite loop when the pull-down optimization encounters a NULL key.
     <a href='https://sqlite.org/forum/forumpost/2482b32700384a0f'>Forum thread 2482b32700384a0f</a>.
<li> Other minor patches.  See the
     <a href='https://sqlite.org/src/timeline?p=branch-3.38&bt=version-3.38.3'>timeline</a> for
     details.

<p><b>Hashes:</b>
<li>SQLITE_SOURCE_ID: 2022-05-04 15:45:55 d402f49871152670a62f4f28cacb15d814f2c1644e9347ad7d258e562978e45e
<li>SHA3-256 for sqlite3.c: e6a50effb021858c200e885664611ed3c5e949413ff2dca452ac7ee336b9de1d

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