mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-01 06:27:03 +03:00
When reporting back the datatype of columns, use the text of the datatype
as it appears in the CREATE TABLE statement, if available. Also: removed the ".reindex" command from the shell. (CVS 669) FossilOrigin-Name: ff8b6f4ee8099a7170cb786b8ead9a3e42ab5869
This commit is contained in:
22
manifest
22
manifest
@ -1,5 +1,5 @@
|
|||||||
C Add\ssupport\sfor\sTEMPORARY\sviews.\s\sThe\scode\sis\shere\sbut\sit\sis\smostly\suntested.\s(CVS\s668)
|
C When\sreporting\sback\sthe\sdatatype\sof\scolumns,\suse\sthe\stext\sof\sthe\sdatatype\r\nas\sit\sappears\sin\sthe\sCREATE\sTABLE\sstatement,\sif\savailable.\s\sAlso:\sremoved\r\nthe\s".reindex"\scommand\sfrom\sthe\sshell.\s(CVS\s669)
|
||||||
D 2002-07-08T22:03:32
|
D 2002-07-10T21:26:01
|
||||||
F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
|
F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
|
||||||
F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495
|
F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495
|
||||||
F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
|
F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
|
||||||
@ -35,19 +35,19 @@ F src/os.h 4a361fccfbc4e7609b3e1557f604f94c1e96ad10
|
|||||||
F src/pager.c b8415b02a2a5c4e9d8bfd45311a5f15e785c7f1f
|
F src/pager.c b8415b02a2a5c4e9d8bfd45311a5f15e785c7f1f
|
||||||
F src/pager.h 6fddfddd3b73aa8abc081b973886320e3c614f0e
|
F src/pager.h 6fddfddd3b73aa8abc081b973886320e3c614f0e
|
||||||
F src/parse.y 9267b7681882205f904f6564fff733d8fbcd58a3
|
F src/parse.y 9267b7681882205f904f6564fff733d8fbcd58a3
|
||||||
F src/printf.c 236ed7a79386feed4456fa728fff8be793f1547c
|
F src/printf.c 06f4c8725063e0faf0e34824ab70feace7146bf7
|
||||||
F src/random.c 19e8e00fe0df32a742f115773f57651be327cabe
|
F src/random.c 19e8e00fe0df32a742f115773f57651be327cabe
|
||||||
F src/select.c 1c7c0b42c27b9d115c955023074a292197a17b3b
|
F src/select.c 9e67a79bda57a587b919074df8d8a18cb95c3ba8
|
||||||
F src/shell.c 0b06e4421ddf34f30263a2674abe768a2b5fd538
|
F src/shell.c 16cb2db27f2d3045f78e74e83bac965a8249357b
|
||||||
F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e
|
F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e
|
||||||
F src/sqlite.h.in 75c5bbb066d0faf34424b7d1babf8b44d5b31af2
|
F src/sqlite.h.in 75c5bbb066d0faf34424b7d1babf8b44d5b31af2
|
||||||
F src/sqliteInt.h ad5a60c1b28356c956bea4f947509206725519ce
|
F src/sqliteInt.h ad5a60c1b28356c956bea4f947509206725519ce
|
||||||
F src/table.c eed2098c9b577aa17f8abe89313a9c4413f57d63
|
F src/table.c eed2098c9b577aa17f8abe89313a9c4413f57d63
|
||||||
F src/tclsqlite.c 8a6a8cf06f9d3107f06d04996fda39483cd25d87
|
F src/tclsqlite.c f5d194f1d3e2ddd615c9784affbb8c840e30b3fd
|
||||||
F src/test1.c a2f2b6b1df07d4e8b380323896c3ed34442cea91
|
F src/test1.c 456cb080db85056be723e770435d9509afc3a83a
|
||||||
F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730
|
F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730
|
||||||
F src/test3.c fda085b4cdd5a2d7f65786ce679036e955f4bfa2
|
F src/test3.c fda085b4cdd5a2d7f65786ce679036e955f4bfa2
|
||||||
F src/threadtest.c 81f0598e0f031c1bd506af337fdc1b7e8dff263f
|
F src/threadtest.c 72bce0a284647314847bbea44616ceb056bfb77f
|
||||||
F src/tokenize.c b5500e193a82b5b9888fbf947efd90d3b4858178
|
F src/tokenize.c b5500e193a82b5b9888fbf947efd90d3b4858178
|
||||||
F src/trigger.c d88ab4d68d68955c217b38fb6717e090fbbf54a4
|
F src/trigger.c d88ab4d68d68955c217b38fb6717e090fbbf54a4
|
||||||
F src/update.c 494479cc4fe34165cb9ea97bccefb405e7b875d2
|
F src/update.c 494479cc4fe34165cb9ea97bccefb405e7b875d2
|
||||||
@ -140,7 +140,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f
|
|||||||
F www/sqlite.tcl ae3dcfb077e53833b59d4fcc94d8a12c50a44098
|
F www/sqlite.tcl ae3dcfb077e53833b59d4fcc94d8a12c50a44098
|
||||||
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
||||||
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
|
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
|
||||||
P fd7e41f0eed80fb1c7e18eb84834ec3cea74a649
|
P 87cd10c1f638db5d1f47bc12669f150485415b3e
|
||||||
R fdc61bc38062d3eb8e5cf64639119d71
|
R dfabcf7e6ad6024dc64e99aa6198b20c
|
||||||
U drh
|
U drh
|
||||||
Z 5b35bb17d4be31b8bee0d38218de414a
|
Z a0a55547557628906064ab1285cc2b8e
|
||||||
|
@ -1 +1 @@
|
|||||||
87cd10c1f638db5d1f47bc12669f150485415b3e
|
ff8b6f4ee8099a7170cb786b8ead9a3e42ab5869
|
28
src/printf.c
28
src/printf.c
@ -699,15 +699,11 @@ char *sqlite_mprintf(const char *zFormat, ...){
|
|||||||
vxprintf(mout,&sMprintf,zFormat,ap);
|
vxprintf(mout,&sMprintf,zFormat,ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
sMprintf.zText[sMprintf.nChar] = 0;
|
sMprintf.zText[sMprintf.nChar] = 0;
|
||||||
if( sMprintf.zText==sMprintf.zBase ){
|
zNew = malloc( sMprintf.nChar+1 );
|
||||||
zNew = sqliteMalloc( sMprintf.nChar+1 );
|
if( zNew ) strcpy(zNew,sMprintf.zText);
|
||||||
if( zNew ) strcpy(zNew,zBuf);
|
if( sMprintf.zText!=sMprintf.zBase ){
|
||||||
}else{
|
|
||||||
zNew = sqliteRealloc(sMprintf.zText,sMprintf.nChar+1);
|
|
||||||
if( zNew==0 ){
|
|
||||||
sqliteFree(sMprintf.zText);
|
sqliteFree(sMprintf.zText);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return zNew;
|
return zNew;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -715,6 +711,7 @@ char *sqlite_mprintf(const char *zFormat, ...){
|
|||||||
*/
|
*/
|
||||||
char *sqlite_vmprintf(const char *zFormat, va_list ap){
|
char *sqlite_vmprintf(const char *zFormat, va_list ap){
|
||||||
struct sgMprintf sMprintf;
|
struct sgMprintf sMprintf;
|
||||||
|
char *zNew;
|
||||||
char zBuf[200];
|
char zBuf[200];
|
||||||
sMprintf.nChar = 0;
|
sMprintf.nChar = 0;
|
||||||
sMprintf.zText = zBuf;
|
sMprintf.zText = zBuf;
|
||||||
@ -722,17 +719,12 @@ char *sqlite_vmprintf(const char *zFormat, va_list ap){
|
|||||||
sMprintf.zBase = zBuf;
|
sMprintf.zBase = zBuf;
|
||||||
vxprintf(mout,&sMprintf,zFormat,ap);
|
vxprintf(mout,&sMprintf,zFormat,ap);
|
||||||
sMprintf.zText[sMprintf.nChar] = 0;
|
sMprintf.zText[sMprintf.nChar] = 0;
|
||||||
if( sMprintf.zText==sMprintf.zBase ){
|
zNew = malloc( sMprintf.nChar+1 );
|
||||||
sMprintf.zText = sqliteMalloc( strlen(zBuf)+1 );
|
if( zNew ) strcpy(zNew,sMprintf.zText);
|
||||||
if( sMprintf.zText ) strcpy(sMprintf.zText,zBuf);
|
if( sMprintf.zText!=sMprintf.zBase ){
|
||||||
}else{
|
|
||||||
char *z = sqliteRealloc(sMprintf.zText,sMprintf.nChar+1);
|
|
||||||
if( z==0 ){
|
|
||||||
sqliteFree(sMprintf.zText);
|
sqliteFree(sMprintf.zText);
|
||||||
}
|
}
|
||||||
sMprintf.zText = z;
|
return zNew;
|
||||||
}
|
|
||||||
return sMprintf.zText;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -772,7 +764,7 @@ int sqlite_exec_vprintf(
|
|||||||
|
|
||||||
zSql = sqlite_vmprintf(sqlFormat, ap);
|
zSql = sqlite_vmprintf(sqlFormat, ap);
|
||||||
rc = sqlite_exec(db, zSql, xCallback, pArg, errmsg);
|
rc = sqlite_exec(db, zSql, xCallback, pArg, errmsg);
|
||||||
sqliteFree(zSql);
|
free(zSql);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
int sqlite_get_table_printf(
|
int sqlite_get_table_printf(
|
||||||
@ -806,6 +798,6 @@ int sqlite_get_table_vprintf(
|
|||||||
|
|
||||||
zSql = sqlite_vmprintf(sqlFormat, ap);
|
zSql = sqlite_vmprintf(sqlFormat, ap);
|
||||||
rc = sqlite_get_table(db, zSql, resultp, nrow, ncolumn, errmsg);
|
rc = sqlite_get_table(db, zSql, resultp, nrow, ncolumn, errmsg);
|
||||||
sqliteFree(zSql);
|
free(zSql);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
18
src/select.c
18
src/select.c
@ -12,7 +12,7 @@
|
|||||||
** This file contains C code routines that are called by the parser
|
** This file contains C code routines that are called by the parser
|
||||||
** to handle SELECT statements in SQLite.
|
** to handle SELECT statements in SQLite.
|
||||||
**
|
**
|
||||||
** $Id: select.c,v 1.103 2002/07/05 21:42:37 drh Exp $
|
** $Id: select.c,v 1.104 2002/07/10 21:26:01 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
|
|
||||||
@ -626,11 +626,7 @@ static void generateColumnNames(
|
|||||||
p = pEList->a[i].pExpr;
|
p = pEList->a[i].pExpr;
|
||||||
if( p==0 ) continue;
|
if( p==0 ) continue;
|
||||||
showFullNames = (pParse->db->flags & SQLITE_FullColNames)!=0;
|
showFullNames = (pParse->db->flags & SQLITE_FullColNames)!=0;
|
||||||
if( p->span.z && p->span.z[0] && !showFullNames ){
|
if( p->op==TK_COLUMN && pTabList ){
|
||||||
int addr = sqliteVdbeAddOp(v,OP_ColumnName, i, 0);
|
|
||||||
sqliteVdbeChangeP3(v, -1, p->span.z, p->span.n);
|
|
||||||
sqliteVdbeCompressSpace(v, addr);
|
|
||||||
}else if( p->op==TK_COLUMN && pTabList ){
|
|
||||||
Table *pTab = pTabList->a[p->iTable - base].pTab;
|
Table *pTab = pTabList->a[p->iTable - base].pTab;
|
||||||
char *zCol;
|
char *zCol;
|
||||||
int iCol = p->iColumn;
|
int iCol = p->iColumn;
|
||||||
@ -643,7 +639,11 @@ static void generateColumnNames(
|
|||||||
zCol = pTab->aCol[iCol].zName;
|
zCol = pTab->aCol[iCol].zName;
|
||||||
zType = pTab->aCol[iCol].zType;
|
zType = pTab->aCol[iCol].zType;
|
||||||
}
|
}
|
||||||
if( pTabList->nSrc>1 || showFullNames ){
|
if( p->span.z && p->span.z[0] && !showFullNames ){
|
||||||
|
int addr = sqliteVdbeAddOp(v,OP_ColumnName, i, 0);
|
||||||
|
sqliteVdbeChangeP3(v, -1, p->span.z, p->span.n);
|
||||||
|
sqliteVdbeCompressSpace(v, addr);
|
||||||
|
}else if( pTabList->nSrc>1 || showFullNames ){
|
||||||
char *zName = 0;
|
char *zName = 0;
|
||||||
char *zTab;
|
char *zTab;
|
||||||
|
|
||||||
@ -657,6 +657,10 @@ static void generateColumnNames(
|
|||||||
sqliteVdbeAddOp(v, OP_ColumnName, i, 0);
|
sqliteVdbeAddOp(v, OP_ColumnName, i, 0);
|
||||||
sqliteVdbeChangeP3(v, -1, zCol, 0);
|
sqliteVdbeChangeP3(v, -1, zCol, 0);
|
||||||
}
|
}
|
||||||
|
}else if( p->span.z && p->span.z[0] && !showFullNames ){
|
||||||
|
int addr = sqliteVdbeAddOp(v,OP_ColumnName, i, 0);
|
||||||
|
sqliteVdbeChangeP3(v, -1, p->span.z, p->span.n);
|
||||||
|
sqliteVdbeCompressSpace(v, addr);
|
||||||
}else if( p->span.z && p->span.z[0] ){
|
}else if( p->span.z && p->span.z[0] ){
|
||||||
int addr = sqliteVdbeAddOp(v,OP_ColumnName, i, 0);
|
int addr = sqliteVdbeAddOp(v,OP_ColumnName, i, 0);
|
||||||
sqliteVdbeChangeP3(v, -1, p->span.z, p->span.n);
|
sqliteVdbeChangeP3(v, -1, p->span.z, p->span.n);
|
||||||
|
38
src/shell.c
38
src/shell.c
@ -12,7 +12,7 @@
|
|||||||
** This file contains code to implement the "sqlite" command line
|
** This file contains code to implement the "sqlite" command line
|
||||||
** utility for accessing SQLite databases.
|
** utility for accessing SQLite databases.
|
||||||
**
|
**
|
||||||
** $Id: shell.c,v 1.59 2002/06/25 19:31:18 drh Exp $
|
** $Id: shell.c,v 1.60 2002/07/10 21:26:01 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -492,8 +492,6 @@ static char zHelp[] =
|
|||||||
".prompt MAIN CONTINUE Replace the standard prompts\n"
|
".prompt MAIN CONTINUE Replace the standard prompts\n"
|
||||||
".quit Exit this program\n"
|
".quit Exit this program\n"
|
||||||
".read FILENAME Execute SQL in FILENAME\n"
|
".read FILENAME Execute SQL in FILENAME\n"
|
||||||
".reindex ?TABLE? Rebuild indices\n"
|
|
||||||
/* ".rename OLD NEW Change the name of a table or index\n" */
|
|
||||||
".schema ?TABLE? Show the CREATE statements\n"
|
".schema ?TABLE? Show the CREATE statements\n"
|
||||||
".separator STRING Change separator string for \"list\" mode\n"
|
".separator STRING Change separator string for \"list\" mode\n"
|
||||||
".show Show the current values for various settings\n"
|
".show Show the current values for various settings\n"
|
||||||
@ -754,40 +752,6 @@ static int do_meta_command(char *zLine, sqlite *db, struct callback_data *p){
|
|||||||
}
|
}
|
||||||
}else
|
}else
|
||||||
|
|
||||||
if( c=='r' && strncmp(azArg[0], "reindex", n)==0 ){
|
|
||||||
char **azResult;
|
|
||||||
int nRow, rc;
|
|
||||||
char *zErrMsg;
|
|
||||||
int i;
|
|
||||||
char *zSql;
|
|
||||||
if( nArg==1 ){
|
|
||||||
rc = sqlite_get_table(db,
|
|
||||||
"SELECT name, sql FROM sqlite_master "
|
|
||||||
"WHERE type='index'",
|
|
||||||
&azResult, &nRow, 0, &zErrMsg
|
|
||||||
);
|
|
||||||
}else{
|
|
||||||
rc = sqlite_get_table_printf(db,
|
|
||||||
"SELECT name, sql FROM sqlite_master "
|
|
||||||
"WHERE type='index' AND tbl_name LIKE '%q'",
|
|
||||||
&azResult, &nRow, 0, &zErrMsg, azArg[1]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
for(i=1; rc==SQLITE_OK && i<=nRow; i++){
|
|
||||||
extern char *sqlite_mprintf(const char *, ...);
|
|
||||||
zSql = sqlite_mprintf(
|
|
||||||
"DROP INDEX '%q';\n%s;\nVACUUM '%q';",
|
|
||||||
azResult[i*2], azResult[i*2+1], azResult[i*2]);
|
|
||||||
if( p->echoOn ) printf("%s\n", zSql);
|
|
||||||
rc = sqlite_exec(db, zSql, 0, 0, &zErrMsg);
|
|
||||||
}
|
|
||||||
sqlite_free_table(azResult);
|
|
||||||
if( zErrMsg ){
|
|
||||||
fprintf(stderr,"Error: %s\n", zErrMsg);
|
|
||||||
free(zErrMsg);
|
|
||||||
}
|
|
||||||
}else
|
|
||||||
|
|
||||||
if( c=='s' && strncmp(azArg[0], "schema", n)==0 ){
|
if( c=='s' && strncmp(azArg[0], "schema", n)==0 ){
|
||||||
struct callback_data data;
|
struct callback_data data;
|
||||||
char *zErrMsg = 0;
|
char *zErrMsg = 0;
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
*************************************************************************
|
*************************************************************************
|
||||||
** A TCL Interface to SQLite
|
** A TCL Interface to SQLite
|
||||||
**
|
**
|
||||||
** $Id: tclsqlite.c,v 1.36 2002/07/07 17:12:36 drh Exp $
|
** $Id: tclsqlite.c,v 1.37 2002/07/10 21:26:01 drh Exp $
|
||||||
*/
|
*/
|
||||||
#ifndef NO_TCL /* Omit this whole file if TCL is unavailable */
|
#ifndef NO_TCL /* Omit this whole file if TCL is unavailable */
|
||||||
|
|
||||||
@ -93,9 +93,20 @@ static int DbEvalCallback(
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if( cbData->zArray[0] ){
|
if( cbData->zArray[0] ){
|
||||||
|
Tcl_DString dType;
|
||||||
|
Tcl_DStringInit(&dType);
|
||||||
Tcl_SetVar2(cbData->interp, cbData->zArray, "*",
|
Tcl_SetVar2(cbData->interp, cbData->zArray, "*",
|
||||||
Tcl_DStringValue(&dCol), TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
|
Tcl_DStringValue(&dCol), TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
|
||||||
|
Tcl_DStringAppend(&dType, "typeof:", -1);
|
||||||
|
Tcl_DStringAppend(&dType, Tcl_DStringValue(&dCol), -1);
|
||||||
|
Tcl_DStringFree(&dCol);
|
||||||
|
Tcl_ExternalToUtfDString(NULL, azN[i+argc+1], -1, &dCol);
|
||||||
|
Tcl_SetVar2(cbData->interp, cbData->zArray,
|
||||||
|
Tcl_DStringValue(&dType), Tcl_DStringValue(&dCol),
|
||||||
|
TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
|
||||||
|
Tcl_DStringFree(&dType);
|
||||||
}
|
}
|
||||||
|
|
||||||
Tcl_DStringFree(&dCol);
|
Tcl_DStringFree(&dCol);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,8 +163,13 @@ static int DbEvalCallback(
|
|||||||
if( azCol==0 || (cbData->once && cbData->zArray[0]) ){
|
if( azCol==0 || (cbData->once && cbData->zArray[0]) ){
|
||||||
Tcl_SetVar2(cbData->interp, cbData->zArray, "*", "", 0);
|
Tcl_SetVar2(cbData->interp, cbData->zArray, "*", "", 0);
|
||||||
for(i=0; i<nCol; i++){
|
for(i=0; i<nCol; i++){
|
||||||
|
char *z;
|
||||||
Tcl_SetVar2(cbData->interp, cbData->zArray, "*", azN[i],
|
Tcl_SetVar2(cbData->interp, cbData->zArray, "*", azN[i],
|
||||||
TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
|
TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
|
||||||
|
z = sqlite_mprintf("typeof:%s", azN[i]);
|
||||||
|
Tcl_SetVar2(cbData->interp, cbData->zArray, z, azN[i+nCol+1],
|
||||||
|
TCL_LIST_ELEMENT|TCL_APPEND_VALUE);
|
||||||
|
sqlite_freemem(z);
|
||||||
}
|
}
|
||||||
cbData->once = 0;
|
cbData->once = 0;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
** is not included in the SQLite library. It is used for automated
|
** is not included in the SQLite library. It is used for automated
|
||||||
** testing of the SQLite library.
|
** testing of the SQLite library.
|
||||||
**
|
**
|
||||||
** $Id: test1.c,v 1.11 2002/07/01 00:31:36 drh Exp $
|
** $Id: test1.c,v 1.12 2002/07/10 21:26:01 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include "tcl.h"
|
#include "tcl.h"
|
||||||
@ -331,7 +331,7 @@ static int sqlite_mprintf_int(
|
|||||||
}
|
}
|
||||||
z = sqlite_mprintf(argv[1], a[0], a[1], a[2]);
|
z = sqlite_mprintf(argv[1], a[0], a[1], a[2]);
|
||||||
Tcl_AppendResult(interp, z, 0);
|
Tcl_AppendResult(interp, z, 0);
|
||||||
sqliteFree(z);
|
sqlite_freemem(z);
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,7 +358,7 @@ static int sqlite_mprintf_str(
|
|||||||
}
|
}
|
||||||
z = sqlite_mprintf(argv[1], a[0], a[1], argc>4 ? argv[4] : NULL);
|
z = sqlite_mprintf(argv[1], a[0], a[1], argc>4 ? argv[4] : NULL);
|
||||||
Tcl_AppendResult(interp, z, 0);
|
Tcl_AppendResult(interp, z, 0);
|
||||||
sqliteFree(z);
|
sqlite_freemem(z);
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,7 +387,7 @@ static int sqlite_mprintf_double(
|
|||||||
if( Tcl_GetDouble(interp, argv[4], &r) ) return TCL_ERROR;
|
if( Tcl_GetDouble(interp, argv[4], &r) ) return TCL_ERROR;
|
||||||
z = sqlite_mprintf(argv[1], a[0], a[1], r);
|
z = sqlite_mprintf(argv[1], a[0], a[1], r);
|
||||||
Tcl_AppendResult(interp, z, 0);
|
Tcl_AppendResult(interp, z, 0);
|
||||||
sqliteFree(z);
|
sqlite_freemem(z);
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,8 +25,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define sqliteFree(X) sqliteFree_(X,__FILE__,__LINE__)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Come here to die.
|
** Come here to die.
|
||||||
*/
|
*/
|
||||||
@ -100,7 +98,7 @@ char **db_query(sqlite *db, const char *zFile, const char *zFormat, ...){
|
|||||||
free(zSql);
|
free(zSql);
|
||||||
Exit(1);
|
Exit(1);
|
||||||
}
|
}
|
||||||
sqliteFree(zSql);
|
sqlite_freemem(zSql);
|
||||||
if( sResult.azElem==0 ){
|
if( sResult.azElem==0 ){
|
||||||
db_query_callback(&sResult, 0, 0, 0);
|
db_query_callback(&sResult, 0, 0, 0);
|
||||||
}
|
}
|
||||||
@ -123,10 +121,10 @@ void db_execute(sqlite *db, const char *zFile, const char *zFormat, ...){
|
|||||||
if( zErrMsg ){
|
if( zErrMsg ){
|
||||||
fprintf(stderr,"%s: command failed: %s - %s\n", zFile, zSql, zErrMsg);
|
fprintf(stderr,"%s: command failed: %s - %s\n", zFile, zSql, zErrMsg);
|
||||||
free(zErrMsg);
|
free(zErrMsg);
|
||||||
sqliteFree(zSql);
|
sqlite_freemem(zSql);
|
||||||
Exit(1);
|
Exit(1);
|
||||||
}
|
}
|
||||||
sqliteFree(zSql);
|
sqlite_freemem(zSql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -135,7 +133,7 @@ void db_execute(sqlite *db, const char *zFile, const char *zFormat, ...){
|
|||||||
void db_query_free(char **az){
|
void db_query_free(char **az){
|
||||||
int i;
|
int i;
|
||||||
for(i=0; az[i]; i++){
|
for(i=0; az[i]; i++){
|
||||||
sqliteFree(az[i]);
|
sqlite_freemem(az[i]);
|
||||||
}
|
}
|
||||||
free(az);
|
free(az);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user