Alessandro Bonazzi 5c7aa8c1c0 Patch level : 12.0 no-patch
Files correlati     :
Commento            :

Aggiunta documentazione di sqlite 3
2020-11-29 00:32:36 +01:00

163 lines
5.8 KiB
HTML

<!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>The COMPLETION() Table-Valued Function</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;
}
</script>
</div>
<div class=fancy>
<div class=nosearch>
<div class="fancy_title">
The COMPLETION() Table-Valued Function
</div>
</div>
<h1 id="overview"><span>1. </span>Overview</h1>
<p>The COMPLETION extension implements a <a href="vtab.html#tabfunc2">table-valued function</a> named
"completion" that can be used to suggest completions of partially entered
words during interactive SQL input. The completion table can be
used to help implement tab-completion, for example.
</p><h1 id="details"><span>2. </span>Details</h1>
<p>The designed query interface is:
</p><div class="codeblock"><pre>SELECT DISTINCT candidate COLLATE nocase
FROM completion($prefix, $wholeline)
ORDER BY 1;
</pre></div>
<p>The query above will return suggestions for the whole input word that
begins with $prefix. The $wholeline parameter is all text from the beginning
of the line up to the insertion point. The $wholeline parameter is used
for context.
</p><p>The $prefix parameter may be NULL, in which case the prefix is deduced
from $wholeline. Or, the $wholeline parameter may be NULL or omitted if
context information is unavailable or if context-aware completion is not
desired.
</p><p>The completion table might return the same candidate more than once, and
it will return candidates in an arbitrary order. The DISTINCT keyword and
the ORDER BY in the sample query above are added to make the answers unique
and in lexicographical order.
</p><h2 id="example_usage"><span>2.1. </span>Example Usage</h2>
<p>The completion table is used to implement tab-completion in the
<a href="cli.html">command-line shell</a> in conjunction with either the readline or linenoise
input line editing packages for unix. See the
<a href="https://sqlite.org/src/file/src/shell.c.in">https://sqlite.org/src/file/src/shell.c.in</a> source file for example
code. Search for "FROM completion" to find the relevant code sections.
</p><p>Because the completion table is built into the command-line shell in order
to provide for tab-completions, you can run test queries against the
completion table directly in the command-line shell. Simply type a
query such as the example shown above, filling in appropriate values
for $prefix and $wholeline, and observe the output.
</p><h1 id="limitations"><span>3. </span>Limitations</h1>
<p>The completion table is designed for interactive use. It will return
answers at a speed appropriate for human typing. No effort is made to
be unusually efficient, so long as the response time is nearly instantaneous
in a user interface.
</p><p>As of this writing (2017-07-13), the completion virtual table only
looks for SQL keywords, and schema, table, and column names. The
context contained in $wholeline is completely ignored. Future enhancements
will try to return new completions taken from function and pragma names
and other sources, as well as consider more context. The completion
table should be considered a work-in-progress.
</p>