Deprecate the sqlite3_aggregate_count() API. Make sure all aggregate counters

are 64 bits.  Remove unused StdDev structure from func.c.  Ticket #1669. (CVS 3065)

FossilOrigin-Name: 44bd7ba432123ec77904b862d11521f4ab96d2cf
This commit is contained in:
drh
2006-02-09 18:35:29 +00:00
parent 76c730c18f
commit cf85a51c2a
7 changed files with 35 additions and 39 deletions
+10 -10
View File
@@ -1,5 +1,5 @@
C Integer\soverflow\sin\sSUM\scauses\san\sexception.\s\sTicket\s#1669.\s(CVS\s3064)
D 2006-02-09T17:47:42
C Deprecate\sthe\ssqlite3_aggregate_count()\sAPI.\s\sMake\ssure\sall\saggregate\scounters\nare\s64\sbits.\s\sRemove\sunused\sStdDev\sstructure\sfrom\sfunc.c.\s\sTicket\s#1669.\s(CVS\s3065)
D 2006-02-09T18:35:30
F Makefile.in 5d8dff443383918b700e495de42ec65bc1c8865b
F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -43,7 +43,7 @@ F src/date.c cd2bd5d1ebc6fa12d6312f69789ae5b0a2766f2e
F src/delete.c 56ab34c3a384caa5d5ea06f5739944957e2e4213
F src/experimental.c 1b2d1a6cd62ecc39610e97670332ca073c50792b
F src/expr.c 1149c3380bfce27703f5e9bec7dfb8e51baaf9d9
F src/func.c aad8c94768fe6b36563416facc19a198b5d7f8ed
F src/func.c 49f49131afb37d1f808e9b84029da8644fc4faf7
F src/hash.c 8747cf51d12de46512880dfcf1b68b4e24072863
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
F src/insert.c 7e931b7f06afbcefcbbaab175c02eff8268db33f
@@ -69,7 +69,7 @@ F src/random.c d40f8d356cecbd351ccfab6eaedd7ec1b54f5261
F src/select.c daee9b20702ba51cf3807fc1b130edd8846e3e48
F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
F src/shell.c 738f55ed75fb36731e764bfdb40756ac43b90b08
F src/sqlite.h.in 965128af2e36334824532aaa9b0909ab49436d1a
F src/sqlite.h.in 57d43548b59eed5116a322fc85bef4e3fc8a6bcc
F src/sqliteInt.h 0121298397ac14eb468ab1ba9d488ac7ed7d88a1
F src/table.c 486dcfce532685b53b5a2b5da8bba0ded6fb2316
F src/tclsqlite.c 7764ab34df617b3d3cfd5f0fdf3444ed219c11d6
@@ -81,7 +81,7 @@ F src/test5.c 7162f8526affb771c4ed256826eee7bb9eca265f
F src/test6.c 60a02961ceb7b3edc25f5dc5c1ac2556622a76de
F src/test7.c d28d3e62f9594923648fc6a8fb030eba36564ba1
F src/test_async.c 6776f5027ca6378c116ff5ccc2fe41b908e33772
F src/test_md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
F src/test_md5.c e688969fc7db0acd9e4f4e0c33332e00228af60f
F src/test_server.c 087b92a39d883e3fa113cae259d64e4c7438bc96
F src/tokenize.c 9ae9a59238eb97fbc61baea280563b91100518fb
F src/trigger.c 4d3644cbd16959b568c95ae73493402be8021b08
@@ -92,7 +92,7 @@ F src/vacuum.c 3865673cc66acd0717ecd517f6b8fdb2a5e7924b
F src/vdbe.c 29c68f39ce8cba44814b0e1f3d909ef961eb28a7
F src/vdbe.h 8729a4ee16ff9aeab2af9667df3cf300ff978e13
F src/vdbeInt.h eb3f86ab08ef11635bc78eb88c3ff13f923c233b
F src/vdbeapi.c dcb2636f49b4807e34960d52a2fc257b3a751140
F src/vdbeapi.c ee8e889d8b4df30e38cdcda63f4e9e515b292633
F src/vdbeaux.c 9bf50cdb6a6c40b8c06ca9a8d87cf90120a16797
F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5
F src/vdbemem.c 2034e93b32c14bda6e306bb54e3a8e930b963027
@@ -307,7 +307,7 @@ F www/audit.tcl 90e09d580f79c7efec0c7d6f447b7ec5c2dce5c0
F www/autoinc.tcl b357f5ba954b046ee35392ce0f884a2fcfcdea06
F www/c_interface.tcl b51b08591554c16a0c3ef718364a508ac25abc7e
F www/capi3.tcl 7a7cc225fe02eb7ab861a6019b08baa0014409e1
F www/capi3ref.tcl f5149a0115178d3ee07584c59a0c3ffd37dc0a66
F www/capi3ref.tcl 458d541139b84155e518781dcb9ebe9f57fe5cbf
F www/changes.tcl c36d331b25a3b193845c05a6fa3f914899634940
F www/common.tcl 14d121c28532ad20c3e349caa4db708b0b822083
F www/compile.tcl 276546d7eb445add5a867193bbd80f6919a6b084
@@ -351,7 +351,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
P 731f1e3245fafbda24355d5bdc5b249c4229305f
R 22cd9586db53f15d6d1d14e20e2bf24f
P c72b946198128cbceb12dffbdf4706d9fda0fd72
R be1e635cafb90b5983ca91c9370b824f
U drh
Z 643c5022622d4cd302ee4b3efceecf09
Z d6f4b8669c07081bb92ea3ba047fbeee
+1 -1
View File
@@ -1 +1 @@
c72b946198128cbceb12dffbdf4706d9fda0fd72
44bd7ba432123ec77904b862d11521f4ab96d2cf
+2 -13
View File
@@ -16,7 +16,7 @@
** sqliteRegisterBuildinFunctions() found at the bottom of the file.
** All other code has file scope.
**
** $Id: func.c,v 1.119 2006/02/09 17:47:42 drh Exp $
** $Id: func.c,v 1.120 2006/02/09 18:35:30 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -818,7 +818,7 @@ static void test_error(
typedef struct SumCtx SumCtx;
struct SumCtx {
LONGDOUBLE_TYPE sum; /* Sum of terms */
u32 cnt; /* Number of elements summed */
i64 cnt; /* Number of elements summed */
u8 seenFloat; /* True if there has been any floating point value */
};
@@ -872,17 +872,6 @@ static void totalFinalize(sqlite3_context *context){
sqlite3_result_double(context, p ? p->sum : 0.0);
}
/*
** An instance of the following structure holds the context of a
** variance or standard deviation computation.
*/
typedef struct StdDevCtx StdDevCtx;
struct StdDevCtx {
double sum; /* Sum of terms */
double sum2; /* Sum of the squares of terms */
int cnt; /* Number of terms counted */
};
/*
** The following structure keeps track of state information for the
** count() aggregate function.
+3 -4
View File
@@ -12,7 +12,7 @@
** This header file defines the interface that the SQLite library
** presents to client programs.
**
** @(#) $Id: sqlite.h.in,v 1.158 2006/02/09 13:43:29 danielk1977 Exp $
** @(#) $Id: sqlite.h.in,v 1.159 2006/02/09 18:35:30 drh Exp $
*/
#ifndef _SQLITE3_H_
#define _SQLITE3_H_
@@ -981,9 +981,8 @@ int sqlite3_create_function16(
);
/*
** The next routine returns the number of calls to xStep for a particular
** aggregate function instance. The current call to xStep counts so this
** routine always returns at least 1.
** This function is deprecated. Do not use it. It continues to exist
** so as not to break legacy code. But new code should avoid using it.
*/
int sqlite3_aggregate_count(sqlite3_context*);
+8 -4
View File
@@ -45,11 +45,12 @@
#endif
struct Context {
int isInit;
uint32 buf[4];
uint32 bits[2];
unsigned char in[64];
};
typedef char MD5Context[88];
typedef struct Context MD5Context;
/*
* Note: this code is harmless on little-endian machines.
@@ -166,8 +167,8 @@ static void MD5Transform(uint32 buf[4], const uint32 in[16]){
* Start MD5 accumulation. Set bit count to 0 and buffer to mysterious
* initialization constants.
*/
static void MD5Init(MD5Context *pCtx){
struct Context *ctx = (struct Context *)pCtx;
static void MD5Init(MD5Context *ctx){
ctx->isInit = 1;
ctx->buf[0] = 0x67452301;
ctx->buf[1] = 0xefcdab89;
ctx->buf[2] = 0x98badcfe;
@@ -352,6 +353,9 @@ int Md5_Init(Tcl_Interp *interp){
return TCL_OK;
}
/*
**
/*
** During testing, the special md5sum() aggregate function is available.
** inside SQLite. The following routines implement that function.
@@ -362,7 +366,7 @@ static void md5step(sqlite3_context *context, int argc, sqlite3_value **argv){
if( argc<1 ) return;
p = sqlite3_aggregate_context(context, sizeof(*p));
if( p==0 ) return;
if( sqlite3_aggregate_count(context)==1 ){
if( !p->isInit ){
MD5Init(p);
}
for(i=0; i<argc; i++){
+4 -3
View File
@@ -335,9 +335,10 @@ void sqlite3_set_auxdata(
** Return the number of times the Step function of a aggregate has been
** called.
**
** This routine is defined here in vdbe.c because it depends on knowing
** the internals of the sqlite3_context structure which is only defined in
** this source file.
** This function is deprecated. Do not use it for new code. It is
** provide only to avoid breaking legacy code. New aggregate function
** implementations should keep their own counts within their aggregate
** context.
*/
int sqlite3_aggregate_count(sqlite3_context *p){
assert( p && p->pFunc && p->pFunc->xStep );
+7 -4
View File
@@ -1,4 +1,4 @@
set rcsid {$Id: capi3ref.tcl,v 1.31 2006/01/30 22:12:31 drh Exp $}
set rcsid {$Id: capi3ref.tcl,v 1.32 2006/02/09 18:35:30 drh Exp $}
source common.tcl
header {C/C++ Interface For SQLite Version 3}
puts {
@@ -72,9 +72,12 @@ api {} {
api {} {
int sqlite3_aggregate_count(sqlite3_context*);
} {
The next routine returns the number of calls to xStep for a particular
aggregate function instance. The current call to xStep counts so this
routine always returns at least 1.
This function is deprecated. It continues to exist so as not to
break any legacy code that might happen to use it. But it should not
be used in any new code.
In order to encourage people to not use this function, we are not going
to tell you what it does.
}
api {} {