1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Add pattern matching to the .table command (CVS 129)

FossilOrigin-Name: 2b3511eca7e562ef2428cec2f7eeca1d26b6c1c8
This commit is contained in:
drh
2000-08-08 20:19:09 +00:00
parent 4cdc9e8488
commit a50da106f0
6 changed files with 59 additions and 18 deletions

View File

@ -1,5 +1,5 @@
C :-)\s(CVS\s128)
D 2000-08-04T14:56:25
C Add\spattern\smatching\sto\sthe\s.table\scommand\s(CVS\s129)
D 2000-08-08T20:19:09
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
F Makefile.in 670aa9413cb2cdcded23b328a9e255c845c41a1e
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
@ -15,8 +15,8 @@ F src/insert.c f146f149ad2422a1dc3bfa7a1651a25940f98958
F src/main.c ba16b81890d962821bb90f0a4de9a29b0e495eb2
F src/parse.y 5d199034de5d29ebedb42c1c51f34db4df40cbe5
F src/select.c d382e96c2221d08367cc87976f2b574537c9de97
F src/shell.c 2fd370838742afa068cfcdd05b667ff89bab25b6
F src/shell.tcl ca52bb831e03e10480516e5e708c0c452914a219
F src/shell.c cd560887be6fb9cfa477fce7ba60716139189271
F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e
F src/sqlite.h 82ae53028e27919250f886ff9d7c4927de81978a
F src/sqliteInt.h f6d1e139b3bfa4ceff2136684e19d76b53178ec0
F src/tclsqlite.c b1ae6abd50d8b0e2470cc49b5e1d03329a68dd75
@ -60,16 +60,16 @@ F www/arch.fig 4e26e9dca3c49724fc8f554c695ddea9f2413156
F www/arch.png c4d908b79065a72e7dcf19317f36d1324c550e87
F www/arch.tcl 4f6a9afecc099a27bba17b4f8cc9561abc15dc40
F www/c_interface.tcl 29593cf77025bab137b7ba64b9459eb5eb6b4873
F www/changes.tcl a8608ae834d6e6922f386a9341e84e74a521e847
F www/changes.tcl 0dc473e0b4240c5711653dbe589fac77508a5c3f
F www/crosscompile.tcl 19734ce7f18b16ff2ed8479412abf8aca56e1dcc
F www/fileformat.tcl cfb7fba80b7275555281ba2f256c00734bcdd1c9
F www/index.tcl 421bcabc6839eb00698b75b169caa8a559454515
F www/lang.tcl 9192e114b19987e630a41e879585b87006eb84a1
F www/mingw.tcl fc5f4ba9d336b6e8c97347cc6496d6162461ef60
F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
F www/sqlite.tcl 7c2ee68063fa59463f55d5bac1ffe3e50d8a817f
F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f
F www/vdbe.tcl bcbfc33bcdd0ebad95eab31286adb9e1bc289520
P 695fd68eb6291bdcc04af0eec7c7cdd7ff10872b
R ba994bd9837a407cb6abaac249529cc4
P d53cccda4fa5d2f8287421e71488817eb4ca13eb
R c2912166785333a778527e99f3e6b1d7
U drh
Z 509708daad6c84350903dba5837a203b
Z 6e010a7ae0b6272f5ce57bde940ce4a2

View File

@ -1 +1 @@
d53cccda4fa5d2f8287421e71488817eb4ca13eb
2b3511eca7e562ef2428cec2f7eeca1d26b6c1c8

View File

@ -24,7 +24,7 @@
** This file contains code to implement the "sqlite" command line
** utility for accessing SQLite databases.
**
** $Id: shell.c,v 1.19 2000/08/02 13:47:42 drh Exp $
** $Id: shell.c,v 1.20 2000/08/08 20:19:09 drh Exp $
*/
#include <stdlib.h>
#include <string.h>
@ -395,7 +395,7 @@ static char zHelp[] =
".output stdout Send output to the screen\n"
".schema ?TABLE? Show the CREATE statements\n"
".separator STRING Change separator string for \"list\" mode\n"
".tables List names all tables in the database\n"
".tables ?PATTERN? List names of tables matching a pattern\n"
".timeout MS Try opening locked tables for MS milliseconds\n"
".width NUM NUM ... Set column widths for \"column\" mode\n"
;
@ -574,11 +574,21 @@ static void do_meta_command(char *zLine, sqlite *db, struct callback_data *p){
if( c=='t' && n>1 && strncmp(azArg[0], "tables", n)==0 ){
struct callback_data data;
char *zErrMsg = 0;
static char zSql[] =
"SELECT name FROM sqlite_master WHERE type='table' ORDER BY name";
char zSql[1000];
memcpy(&data, p, sizeof(data));
data.showHeader = 0;
data.mode = MODE_List;
if( nArg==1 ){
sprintf(zSql,
"SELECT name FROM sqlite_master "
"WHERE type='table' "
"ORDER BY name");
}else{
sprintf(zSql,
"SELECT name FROM sqlite_master "
"WHERE type='table' AND name LIKE '%%%.100s%%' "
"ORDER BY name", azArg[1]);
}
sqlite_exec(db, zSql, callback, &data, &zErrMsg);
if( zErrMsg ){
fprintf(stderr,"Error: %s\n", zErrMsg);

View File

@ -3,6 +3,8 @@
# A GUI shell for SQLite
#
# The following code is slighly modified from the original. See comments
# for the modifications...
############################################################################
# A console widget for Tcl/Tk. Invoke console:create with a window name,
# a prompt string, and a title to get a new top-level window that allows
@ -277,8 +279,15 @@ proc console:Enter w {
} else {
set cmd $v(prior)\n$line
}
if {[info complete $cmd]} {
set rc [catch {uplevel #0 $cmd} res]
##### Original
# if {[info complete $cmd]} { }
# set rc [catch {uplevel #0 $cmd} res]
##### New
global DB
if {[$DB complete $cmd]} {
set CODE {}
set rc [catch {$DB eval $cmd RESULT $CODE}]
##### End Of Changes
if {![winfo exists $w]} return
if {$rc} {
$w insert end $res\n err

View File

@ -17,6 +17,11 @@ proc chng {date desc} {
puts "<DD><P><UL>$desc</UL></P></DD>"
}
chng {2000 Aug 8} {
<li>Added pattern matching to the ".table" command in the "sqlite"
command shell.</li>
}
chng {2000 Aug 4} {
<li>Documentation updates</li>
<li>Added "busy" and "timeout" methods to the Tcl interface</li>

View File

@ -1,7 +1,7 @@
#
# Run this Tcl script to generate the sqlite.html file.
#
set rcsid {$Id: sqlite.tcl,v 1.12 2000/08/04 13:49:03 drh Exp $}
set rcsid {$Id: sqlite.tcl,v 1.13 2000/08/08 20:19:09 drh Exp $}
puts {<html>
<head>
@ -399,7 +399,24 @@ ORDER BY type DESC, name
</pre></blockquote>
<p>The <b>%s</b> in the query above is replaced by the argument
to ".schema", of course.</p>
to ".schema", of course. Notice that the argument to the ".schema"
command appears to the right of an SQL LIKE operator. So you can
use wildcards in the name of the table. For example, to get the
schema for all tables whose names contain the character string
"abc" you could enter:</p>}
Code {
sqlite> (((.schema %abc%)))
}
puts {
<p>
Along these same lines,
the ".table" command also accepts a pattern as its first argument.
If you give an argument to the .table command, a "%" is both
appended and prepended and a LIKE clause is added to the query.
This allows you to list only those tables that match a particular
pattern.</p>
<h2>Converting An Entire Database To An ASCII Text File</h2>