From: danielk1977 Date: Thu, 27 May 2004 01:04:07 +0000 (+0000) Subject: Add TCL test bindings and some more test cases for the new query API. (CVS 1467) X-Git-Tag: version-3.6.10~4607 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=04f2e68d0caa659e281469880a3c99d69405a42d;p=thirdparty%2Fsqlite.git Add TCL test bindings and some more test cases for the new query API. (CVS 1467) FossilOrigin-Name: d72adf0c522b442d5e1663862bdd639c282d4495 --- diff --git a/manifest b/manifest index ccae17782d..a5c7dd6bc8 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Break\sMem.flags\sinto\sMem.type\sand\sMem.enc.\s(CVS\s1466) -D 2004-05-26T23:43:12 +C Add\sTCL\stest\sbindings\sand\ssome\smore\stest\scases\sfor\sthe\snew\squery\sAPI.\s(CVS\s1467) +D 2004-05-27T01:04:07 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -59,7 +59,7 @@ F src/sqlite.h.in 68e165dc4dc2d477c95c76b9ede13eed5fbaabf4 F src/sqliteInt.h 6b0d8d856c4af325eb5a00d1c32d89aacf432875 F src/table.c af14284fa36c8d41f6829e3f2819dce07d3e2de2 F src/tclsqlite.c 86daf7bf6ba715bf0f0c7a47beb1d947a15cb868 -F src/test1.c f9d1e36b87b5a2253dabd4c563e110e8d8273dbf +F src/test1.c 039659c18c6746199fe6e23863bb117a8e216f54 F src/test2.c 6195a1ca2c8d0d2d93644e86da3289b403486872 F src/test3.c 5e4a6d596f982f6f47a5f9f75ede9b4a3b739968 F src/test4.c 34848a9fd31aa65857b20a8bfc03aff77d8c3426 @@ -90,7 +90,7 @@ F test/btree4.test 3797b4305694c7af6828675b0f4b1424b8ca30e4 F test/btree5.test 8e5ff32c02e685d36516c6499add9375fe1377f2 F test/btree6.test a5ede6bfbbb2ec8b27e62813612c0f28e8f3e027 F test/capi2.test 8fb64e8ab7f78b8254cd4d04bb96822167f731b2 -F test/capi3.test 7ee3e33971ca5301f6a01e92cffaab95f91f417b +F test/capi3.test 64b7bad608d896468a5b4b926ed9037d112b6d77 F test/conflict.test 0911bb2f079046914a6e9c3341b36658c4e2103e F test/copy.test f07ea8d60878da7a67416ab62f78e9706b9d3c45 F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2 @@ -205,7 +205,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P bba6684d502ba1ecd9614d2470ec94296e3c07c2 -R 3631e4c50022e315d656f5e4e18ecf0f -U drh -Z 55bf782fc149a5ef1b23628e3441dfe2 +P 68ef17028621681f5d091e77d5df84f663a15e27 +R 7a2016da4fa120ff352ff7111a3e7361 +U danielk1977 +Z d6c93a1d5f40d138f387c99f637a146d diff --git a/manifest.uuid b/manifest.uuid index 67c0e42ba1..f4c23351b2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -68ef17028621681f5d091e77d5df84f663a15e27 \ No newline at end of file +d72adf0c522b442d5e1663862bdd639c282d4495 \ No newline at end of file diff --git a/src/test1.c b/src/test1.c index c09ced4cd8..c803bdbcf0 100644 --- a/src/test1.c +++ b/src/test1.c @@ -13,7 +13,7 @@ ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** -** $Id: test1.c,v 1.59 2004/05/26 23:25:31 drh Exp $ +** $Id: test1.c,v 1.60 2004/05/27 01:04:07 danielk1977 Exp $ */ #include "sqliteInt.h" #include "tcl.h" @@ -1316,46 +1316,36 @@ static int test_step( } /* -** Usage: sqlite3_column_text STMT column +** Usage: sqlite3_column_count STMT ** -** Advance the statement to the next row. +** Return the number of columns returned by the sql statement STMT. */ -static int test_column_text( +static int test_column_count( void * clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[] ){ sqlite3_stmt *pStmt; - int col; - Tcl_Obj *pRet; - if( objc!=3 ){ + if( objc!=2 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", Tcl_GetString(objv[0]), " STMT column", 0); return TCL_ERROR; } if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR; - if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR; - - if( SQLITE3_BLOB==sqlite3_column_type(pStmt, col) ){ - int len = sqlite3_column_bytes(pStmt, col); - pRet = Tcl_NewByteArrayObj(sqlite3_column_text(pStmt, col), len); - }else{ - pRet = Tcl_NewStringObj(sqlite3_column_text(pStmt, col), -1); - } - Tcl_SetObjResult(interp, pRet); + Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_column_count(pStmt))); return TCL_OK; } /* -** Usage: sqlite3_column_text16 STMT column +** Usage: sqlite3_column_type STMT column ** -** Advance the statement to the next row. +** Return the type of the data in column 'column' of the current row. */ -static int test_column_text16( +static int test_column_type( void * clientData, Tcl_Interp *interp, int objc, @@ -1363,8 +1353,7 @@ static int test_column_text16( ){ sqlite3_stmt *pStmt; int col; - Tcl_Obj *pRet; - int len; + int tp; if( objc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", @@ -1375,19 +1364,37 @@ static int test_column_text16( if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR; - len = sqlite3_column_bytes16(pStmt, col); - pRet = Tcl_NewByteArrayObj(sqlite3_column_text16(pStmt, col), len); - Tcl_SetObjResult(interp, pRet); + tp = sqlite3_column_type(pStmt, col); + switch( tp ){ + case SQLITE3_INTEGER: + Tcl_SetResult(interp, "INTEGER", TCL_STATIC); + break; + case SQLITE3_NULL: + Tcl_SetResult(interp, "NULL", TCL_STATIC); + break; + case SQLITE3_FLOAT: + Tcl_SetResult(interp, "FLOAT", TCL_STATIC); + break; + case SQLITE3_TEXT: + Tcl_SetResult(interp, "TEXT", TCL_STATIC); + break; + case SQLITE3_BLOB: + Tcl_SetResult(interp, "BLOB", TCL_STATIC); + break; + default: + assert(0); + } return TCL_OK; } /* -** Usage: sqlite3_column_name STMT column +** Usage: sqlite3_column_int64 STMT column ** -** Advance the statement to the next row. +** Return the data in column 'column' of the current row cast as an +** wide (64-bit) integer. */ -static int test_column_name( +static int test_column_int64( void * clientData, Tcl_Interp *interp, int objc, @@ -1395,6 +1402,7 @@ static int test_column_name( ){ sqlite3_stmt *pStmt; int col; + i64 iVal; if( objc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", @@ -1405,17 +1413,17 @@ static int test_column_name( if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR; - Tcl_SetResult(interp, (char *)sqlite3_column_name(pStmt, col), 0); - + iVal = sqlite3_column_int64(pStmt, col); + Tcl_SetObjResult(interp, Tcl_NewWideIntObj(iVal)); return TCL_OK; } /* -** Usage: sqlite3_column_name16 STMT column +** Usage: sqlite3_column_double STMT column ** -** Advance the statement to the next row. +** Return the data in column 'column' of the current row cast as a double. */ -static int test_column_name16( +static int test_column_double( void * clientData, Tcl_Interp *interp, int objc, @@ -1423,8 +1431,7 @@ static int test_column_name16( ){ sqlite3_stmt *pStmt; int col; - Tcl_Obj *pRet; - const void *zName16; + double rVal; if( objc!=3 ){ Tcl_AppendResult(interp, "wrong # args: should be \"", @@ -1435,19 +1442,17 @@ static int test_column_name16( if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[2], &col) ) return TCL_ERROR; - zName16 = sqlite3_column_name16(pStmt, col); - pRet = Tcl_NewByteArrayObj(zName16, sqlite3utf16ByteLen(zName16, -1)+2); - Tcl_SetObjResult(interp, pRet); - + rVal = sqlite3_column_double(pStmt, col); + Tcl_SetObjResult(interp, Tcl_NewDoubleObj(iVal)); return TCL_OK; } /* -** Usage: sqlite3_column_count STMT +** Usage: sqlite3_data_count STMT ** ** Return the number of columns returned by the sql statement STMT. */ -static int test_column_count( +static int test_data_count( void * clientData, Tcl_Interp *interp, int objc, @@ -1463,65 +1468,59 @@ static int test_column_count( if( getStmtPointer(interp, Tcl_GetString(objv[1]), &pStmt) ) return TCL_ERROR; - Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_column_count(pStmt))); + Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_data_count(pStmt))); return TCL_OK; } /* -** Usage: sqlite3_column_type STMT column +** This is a collating function named "REVERSE" which sorts text +** in reverse order. +*/ +static int reverseCollatingFunc( + void *NotUsed, + int nKey1, const void *pKey1, + int nKey2, const void *pKey2 +){ + int rc, n; + n = nKey1