Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | adding length() and substr() tests. fix shell.c bug (CVS 144) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
b8cec9b938b4be1ccf230588d8e1564f |
User & Date: | drh 2000-08-28 16:21:59.000 |
Context
2000-08-28
| ||
16:25 | Version 1.0.4 (CVS 496) (check-in: 92346e003e user: drh tags: trunk) | |
16:21 | adding length() and substr() tests. fix shell.c bug (CVS 144) (check-in: b8cec9b938 user: drh tags: trunk) | |
15:51 | Added length() and substr() functions (CVS 143) (check-in: 0eef538f3d user: drh tags: trunk) | |
Changes
Changes to VERSION.
|
| | | 1 | 1.0.4 |
Changes to src/shell.c.
︙ | ︙ | |||
20 21 22 23 24 25 26 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains code to implement the "sqlite" command line ** utility for accessing SQLite databases. ** | | | 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | ** drh@hwaci.com ** http://www.hwaci.com/drh/ ** ************************************************************************* ** This file contains code to implement the "sqlite" command line ** utility for accessing SQLite databases. ** ** $Id: shell.c,v 1.24 2000/08/28 16:21:59 drh Exp $ */ #include <stdlib.h> #include <string.h> #include <stdio.h> #include "sqlite.h" #include <unistd.h> #include <ctype.h> |
︙ | ︙ | |||
249 250 251 252 253 254 255 | int w, n; if( i<ArraySize(p->colWidth) ){ w = p->colWidth[i]; }else{ w = 0; } if( w<=0 ){ | | | | 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | int w, n; if( i<ArraySize(p->colWidth) ){ w = p->colWidth[i]; }else{ w = 0; } if( w<=0 ){ w = strlen(azCol[i] ? azCol[i] : ""); if( w<10 ) w = 10; n = strlen(azArg[i] ? azArg[i] : ""); if( w<n ) w = n; } if( i<ArraySize(p->actualWidth) ){ p->actualWidth[i] = w; } if( p->showHeader ){ fprintf(p->out,"%-*.*s%s",w,w,azCol[i], i==nArg-1 ? "\n": " "); |
︙ | ︙ |
Changes to src/vdbe.c.
︙ | ︙ | |||
37 38 39 40 41 42 43 | ** inplicit conversion from one type to the other occurs as necessary. ** ** Most of the code in this file is taken up by the sqliteVdbeExec() ** function which does the work of interpreting a VDBE program. ** But other routines are also provided to help in building up ** a program instruction by instruction. ** | | | 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | ** inplicit conversion from one type to the other occurs as necessary. ** ** Most of the code in this file is taken up by the sqliteVdbeExec() ** function which does the work of interpreting a VDBE program. ** But other routines are also provided to help in building up ** a program instruction by instruction. ** ** $Id: vdbe.c,v 1.40 2000/08/28 16:22:00 drh Exp $ */ #include "sqliteInt.h" #include <unistd.h> /* ** SQL is translated into a sequence of instructions to be ** executed by a virtual machine. Each instruction is an instance |
︙ | ︙ | |||
3181 3182 3183 3184 3185 3186 3187 | PopStack(p, 1); }else{ cnt = pOp->p2; } if( pOp->p1==0 ){ if( p->tos<0 ) goto not_enough_stack; Integerify(p, p->tos); | | | | > > > | | 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 | PopStack(p, 1); }else{ cnt = pOp->p2; } if( pOp->p1==0 ){ if( p->tos<0 ) goto not_enough_stack; Integerify(p, p->tos); start = p->aStack[p->tos].i - 1; PopStack(p, 1); }else{ start = pOp->p1 - 1; } if( p->tos<0 ) goto not_enough_stack; Stringify(p, p->tos); n = p->aStack[p->tos].n - 1; if( start<0 ){ start += n + 1; if( start<0 ){ cnt += start; start = 0; } } if( start>n ){ start = n; } if( cnt<0 ) cnt = 0; if( cnt > n ){ cnt = n; } z = sqliteMalloc( cnt+1 ); if( z==0 ) goto no_mem; strncpy(z, &p->zStack[p->tos][start], cnt); z[cnt] = 0; PopStack(p, 1); p->tos++; p->zStack[p->tos] = z; p->aStack[p->tos].n = cnt + 1; p->aStack[p->tos].flags = STK_Str|STK_Dyn; break; |
︙ | ︙ |
Added test/func.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | # Copyright (c) 1999, 2000 D. Richard Hipp # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Author contact information: # drh@hwaci.com # http://www.hwaci.com/drh/ # #*********************************************************************** # This file implements regression tests for SQLite library. The # focus of this file is testing built-in functions. # # $Id: func.test,v 1.1 2000/08/28 16:22:00 drh Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # Create a table to work with. # execsql {CREATE TABLE tbl1(t1 text)} foreach word {this program is free software} { execsql "INSERT INTO tbl1 VALUES('$word')" } # Make sure the table was created properly. # do_test func-0.0 { execsql {SELECT t1 FROM tbl1 ORDER BY t1} } {free is program software this} # Check out the length() function # do_test func-1.0 { execsql {SELECT length(t1) FROM tbl1 ORDER BY t1} } {4 2 7 8 4} do_test func-1.1 { set r [catch {execsql {SELECT length(*) FROM tbl1 ORDER BY t1}} msg] lappend r $msg } {1 {too few arguments to function length()}} do_test func-1.2 { set r [catch {execsql {SELECT length(t1,5) FROM tbl1 ORDER BY t1}} msg] lappend r $msg } {1 {too many arguments to function length()}} do_test func-1.3 { execsql {SELECT length(t1), count(*) FROM tbl1 GROUP BY length(t1) ORDER BY length(t1)} } {2 1 4 2 7 1 8 1} # Check out the substr() function # do_test func-2.0 { execsql {SELECT substr(t1,1,2) FROM tbl1 ORDER BY t1} } {fr is pr so th} do_test func-2.1 { execsql {SELECT substr(t1,2,1) FROM tbl1 ORDER BY t1} } {r s r o h} do_test func-2.2 { execsql {SELECT substr(t1,3,3) FROM tbl1 ORDER BY t1} } {ee {} ogr ftw is} do_test func-2.3 { execsql {SELECT substr(t1,-1,1) FROM tbl1 ORDER BY t1} } {e s m e s} do_test func-2.4 { execsql {SELECT substr(t1,-1,2) FROM tbl1 ORDER BY t1} } {e s m e s} do_test func-2.5 { execsql {SELECT substr(t1,-2,1) FROM tbl1 ORDER BY t1} } {e i a r i} do_test func-2.6 { execsql {SELECT substr(t1,-2,2) FROM tbl1 ORDER BY t1} } {ee is am re is} do_test func-2.7 { execsql {SELECT substr(t1,-4,2) FROM tbl1 ORDER BY t1} } {fr {} gr wa th} do_test func-2.8 { execsql {SELECT t1 FROM tbl1 ORDER BY substr(t1,2,20)} } {this software free program is} finish_test |
Changes to www/changes.tcl.
︙ | ︙ | |||
12 13 14 15 16 17 18 19 20 21 22 23 24 25 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2000 Aug 22 (Version 1.0.3)} { <li>In the sqlite shell, print the "Database opened READ ONLY" message to stderr instead of stdout.</li> <li>In the sqlite shell, now print the version number on initial startup.</li> <li>Add the <b>sqlite_version[]</b> string constant to the library</li> <li>Makefile updates</li> | > > > > > > > | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | } proc chng {date desc} { puts "<DT><B>$date</B></DT>" puts "<DD><P><UL>$desc</UL></P></DD>" } chng {2000 Aug 28 (Version 1.0.4)} { <li>Added functions <b>length()</b> and <b>substr()</b>.</li> <li>Fix a bug in the <b>sqlite</b> shell program that was causing a coredump when the output mode was "column" and the first row of data contained a NULL.</li> } chng {2000 Aug 22 (Version 1.0.3)} { <li>In the sqlite shell, print the "Database opened READ ONLY" message to stderr instead of stdout.</li> <li>In the sqlite shell, now print the version number on initial startup.</li> <li>Add the <b>sqlite_version[]</b> string constant to the library</li> <li>Makefile updates</li> |
︙ | ︙ |