Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Comment changes only. (CVS 395) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
63b87f2ea6cd78f039bf40026d21b18d |
User & Date: | drh 2002-02-26 23:55:31.000 |
Context
2002-02-27
| ||
01:47 | Bug fixes in the VIEW implementation. (CVS 396) (check-in: 668ef6380e user: drh tags: trunk) | |
2002-02-26
| ||
23:55 | Comment changes only. (CVS 395) (check-in: 63b87f2ea6 user: drh tags: trunk) | |
23:24 | Fix a bug in the quoting of .dump output. By Rajit Singh. (CVS 394) (check-in: f2310f36d5 user: drh tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
8 9 10 11 12 13 14 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** | | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** ** $Id: expr.c,v 1.45 2002/02/26 23:55:31 drh Exp $ */ #include "sqliteInt.h" /* ** Construct a new expression node and return a pointer to it. Memory ** for this node is obtained from sqliteMalloc(). The calling function |
︙ | ︙ | |||
107 108 109 110 111 112 113 | ** ** But sometimes we need an expression to persist past the time when ** the input buffer is freed. (Example: The SELECT clause of a ** CREATE VIEW statement contains expressions that must persist for ** the life of the view.) When that happens we have to make a ** persistent copy of the input buffer and translate the Expr.token.z ** and Expr.span.z fields to point to the copy rather than the | | | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | ** ** But sometimes we need an expression to persist past the time when ** the input buffer is freed. (Example: The SELECT clause of a ** CREATE VIEW statement contains expressions that must persist for ** the life of the view.) When that happens we have to make a ** persistent copy of the input buffer and translate the Expr.token.z ** and Expr.span.z fields to point to the copy rather than the ** original input buffer. The following group of routines handle that ** translation. ** ** The "offset" parameter is the distance from the original input buffer ** to the persistent copy. These routines recursively walk the entire ** expression tree and shift all tokens by "offset" amount. ** ** The work of figuring out the appropriate "offset" and making the |
︙ | ︙ |
Changes to src/func.c.
︙ | ︙ | |||
12 13 14 15 16 17 18 | ** This file contains the C functions that implement various SQL ** functions of SQLite. ** ** There is only one exported symbol in this file - the function ** sqliteRegisterBuildinFunctions() found at the bottom of the file. ** All other code has file scope. ** | | | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | ** This file contains the C functions that implement various SQL ** functions of SQLite. ** ** There is only one exported symbol in this file - the function ** sqliteRegisterBuildinFunctions() found at the bottom of the file. ** All other code has file scope. ** ** $Id: func.c,v 1.3 2002/02/26 23:55:31 drh Exp $ */ #include <ctype.h> #include <math.h> #include <stdlib.h> #include "sqlite.h" /* |
︙ | ︙ | |||
45 46 47 48 49 50 51 | for(i=0; z[i]; i++){ if( isupper(z[i]) ) z[i] = tolower(z[i]); } } /* ** An instance of the following structure holds the context of a | | | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | for(i=0; z[i]; i++){ if( isupper(z[i]) ) z[i] = tolower(z[i]); } } /* ** 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 n; /* Number of terms seen so far */ }; |
︙ | ︙ | |||
86 87 88 89 90 91 92 | sqlite_set_result_double(context, sqrt((p->sum2 - p->sum*p->sum/rN)/(rN-1.0))); } if( stddev ) free(stddev); } /* | | | > | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | sqlite_set_result_double(context, sqrt((p->sum2 - p->sum*p->sum/rN)/(rN-1.0))); } if( stddev ) free(stddev); } /* ** This function registered all of the above C functions as SQL ** functions. This should be the only routine in this file with ** external linkage. */ void sqliteRegisterBuildinFunctions(sqlite *db){ sqlite_create_function(db, "upper", 1, upperFunc); sqlite_create_function(db, "lower", 1, lowerFunc); sqlite_create_aggregate(db, "stddev", 1, stdDevStep, stdDevFinalize); } |