Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Move the build-in function definitions into a new source file "func.c". (CVS 391) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
530b0f4f2def89e200b7b0724a5967bf |
User & Date: | drh 2002-02-24 01:55:16.000 |
Context
2002-02-24
| ||
03:25 | Code for user-defined aggregates added. Legacy tests all pass but there has been no testing of the new user-defined aggregate code. (CVS 392) (check-in: 1e037eb303 user: drh tags: trunk) | |
01:55 | Move the build-in function definitions into a new source file "func.c". (CVS 391) (check-in: 530b0f4f2d user: drh tags: trunk) | |
2002-02-23
| ||
23:45 | Added support for user-defined normal functions. Support for user-defined aggregates is pending. (CVS 390) (check-in: c490a1ff95 user: drh tags: trunk) | |
Changes
Changes to Makefile.in.
︙ | ︙ | |||
57 58 59 60 61 62 63 | ENCODING = @ENCODING@ # You should not have to change anything below this line ############################################################################### # Object files for the SQLite library. # | | > | 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 | ENCODING = @ENCODING@ # You should not have to change anything below this line ############################################################################### # Object files for the SQLite library. # LIBOBJ = btree.lo build.lo delete.lo expr.lo func.lo hash.lo insert.lo \ main.lo os.lo pager.lo parse.lo printf.lo random.lo select.lo \ table.lo tokenize.lo update.lo util.lo vdbe.lo where.lo # All of the source code files. # SRC = \ $(TOP)/src/btree.c \ $(TOP)/src/btree.h \ $(TOP)/src/build.c \ $(TOP)/src/delete.c \ $(TOP)/src/expr.c \ $(TOP)/src/func.c \ $(TOP)/src/hash.c \ $(TOP)/src/insert.c \ $(TOP)/src/main.c \ $(TOP)/src/os.c \ $(TOP)/src/pager.c \ $(TOP)/src/pager.h \ $(TOP)/src/parse.y \ |
︙ | ︙ | |||
188 189 190 191 192 193 194 195 196 197 198 199 200 201 | delete.lo: $(TOP)/src/delete.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/delete.c expr.lo: $(TOP)/src/expr.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/expr.c hash.lo: $(TOP)/src/hash.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/hash.c insert.lo: $(TOP)/src/insert.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/insert.c random.lo: $(TOP)/src/random.c $(HDR) | > > > | 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | delete.lo: $(TOP)/src/delete.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/delete.c expr.lo: $(TOP)/src/expr.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/expr.c func.lo: $(TOP)/src/func.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/func.c hash.lo: $(TOP)/src/hash.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/hash.c insert.lo: $(TOP)/src/insert.c $(HDR) $(LIBTOOL) $(TCC) -c $(TOP)/src/insert.c random.lo: $(TOP)/src/random.c $(HDR) |
︙ | ︙ |
Changes to Makefile.template.
︙ | ︙ | |||
112 113 114 115 116 117 118 | # This is how we compile # TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src # Object files for the SQLite library. # | | > | 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | # This is how we compile # TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src # Object files for the SQLite library. # LIBOBJ = btree.o build.o delete.o expr.o func.o hash.o insert.o \ main.o os.o pager.o parse.o printf.o random.o select.o table.o \ tokenize.o update.o util.o vdbe.o where.o tclsqlite.o # All of the source code files. # SRC = \ $(TOP)/src/btree.c \ $(TOP)/src/btree.h \ $(TOP)/src/build.c \ $(TOP)/src/delete.c \ $(TOP)/src/expr.c \ $(TOP)/src/func.c \ $(TOP)/src/hash.c \ $(TOP)/src/hash.h \ $(TOP)/src/insert.c \ $(TOP)/src/main.c \ $(TOP)/src/os.c \ $(TOP)/src/pager.c \ $(TOP)/src/pager.h \ |
︙ | ︙ | |||
254 255 256 257 258 259 260 261 262 263 264 265 266 267 | $(TCCX) -c $(TOP)/src/where.c delete.o: $(TOP)/src/delete.c $(HDR) $(TCCX) -c $(TOP)/src/delete.c expr.o: $(TOP)/src/expr.c $(HDR) $(TCCX) -c $(TOP)/src/expr.c hash.o: $(TOP)/src/hash.c $(HDR) $(TCCX) -c $(TOP)/src/hash.c insert.o: $(TOP)/src/insert.c $(HDR) $(TCCX) -c $(TOP)/src/insert.c | > > > | 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | $(TCCX) -c $(TOP)/src/where.c delete.o: $(TOP)/src/delete.c $(HDR) $(TCCX) -c $(TOP)/src/delete.c expr.o: $(TOP)/src/expr.c $(HDR) $(TCCX) -c $(TOP)/src/expr.c func.o: $(TOP)/src/func.c $(HDR) $(TCCX) -c $(TOP)/src/func.c hash.o: $(TOP)/src/hash.c $(HDR) $(TCCX) -c $(TOP)/src/hash.c insert.o: $(TOP)/src/insert.c $(HDR) $(TCCX) -c $(TOP)/src/insert.c |
︙ | ︙ |
Added src/func.c.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | /* ** 2002 February 23 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** 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.1 2002/02/24 01:55:17 drh Exp $ */ #include <ctype.h> #include "sqlite.h" /* ** Implementation of the upper() and lower() SQL functions. */ static void upperFunc(void *context, int argc, const char **argv){ char *z; int i; if( argc<1 || argv[0]==0 ) return; z = sqlite_set_result_string(context, argv[0], -1); if( z==0 ) return; for(i=0; z[i]; i++){ if( islower(z[i]) ) z[i] = toupper(z[i]); } } static void lowerFunc(void *context, int argc, const char **argv){ char *z; int i; if( argc<1 || argv[0]==0 ) return; z = sqlite_set_result_string(context, argv[0], -1); if( z==0 ) return; for(i=0; z[i]; i++){ if( isupper(z[i]) ) z[i] = tolower(z[i]); } } /* ** This file registered all of the above C functions as SQL ** functions. */ void sqliteRegisterBuildinFunctions(sqlite *db){ sqlite_create_function(db, "upper", 1, upperFunc); sqlite_create_function(db, "lower", 1, lowerFunc); } |
Changes to src/main.c.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** | | < | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ** ************************************************************************* ** Main file for the SQLite library. The routines in this file ** implement the programmer interface to the library. Routines in ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** ** $Id: main.c,v 1.63 2002/02/24 01:55:17 drh Exp $ */ #include "sqliteInt.h" #include "os.h" /* ** This is the callback routine for the code that initializes the ** database. See sqliteInit() below for additional information. ** |
︙ | ︙ | |||
289 290 291 292 293 294 295 | */ #ifdef SQLITE_UTF8 const char sqlite_encoding[] = "UTF-8"; #else const char sqlite_encoding[] = "iso8859"; #endif | < < < < < < < < < < < < < < < < < < < < < < < < | 288 289 290 291 292 293 294 295 296 297 298 299 300 301 | */ #ifdef SQLITE_UTF8 const char sqlite_encoding[] = "UTF-8"; #else const char sqlite_encoding[] = "iso8859"; #endif /* ** Open a new SQLite database. Construct an "sqlite" structure to define ** the state of this database and return a pointer to that structure. ** ** An attempt is made to initialize the in-memory data structures that ** hold the database schema. But if this fails (because the schema file ** is locked) then that step is deferred until the first call to |
︙ | ︙ | |||
335 336 337 338 339 340 341 | if( pzErrMsg ) *pzErrMsg = 0; if( db==0 ) goto no_mem_on_open; sqliteHashInit(&db->tblHash, SQLITE_HASH_STRING, 0); sqliteHashInit(&db->idxHash, SQLITE_HASH_STRING, 0); sqliteHashInit(&db->tblDrop, SQLITE_HASH_POINTER, 0); sqliteHashInit(&db->idxDrop, SQLITE_HASH_POINTER, 0); sqliteHashInit(&db->userFunc, SQLITE_HASH_STRING, 1); | | < | 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 | if( pzErrMsg ) *pzErrMsg = 0; if( db==0 ) goto no_mem_on_open; sqliteHashInit(&db->tblHash, SQLITE_HASH_STRING, 0); sqliteHashInit(&db->idxHash, SQLITE_HASH_STRING, 0); sqliteHashInit(&db->tblDrop, SQLITE_HASH_POINTER, 0); sqliteHashInit(&db->idxDrop, SQLITE_HASH_POINTER, 0); sqliteHashInit(&db->userFunc, SQLITE_HASH_STRING, 1); sqliteRegisterBuildinFunctions(db); db->onError = OE_Default; db->priorNewRowid = 0; /* Open the backend database driver */ rc = sqliteBtreeOpen(zFilename, mode, MAX_PAGES, &db->pBe); if( rc!=SQLITE_OK ){ switch( rc ){ |
︙ | ︙ |
Changes to src/sqliteInt.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 | /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Internal interface definitions for SQLite. ** | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* ** Internal interface definitions for SQLite. ** ** @(#) $Id: sqliteInt.h,v 1.92 2002/02/24 01:55:17 drh Exp $ */ #include "sqlite.h" #include "hash.h" #include "vdbe.h" #include "parse.h" #include "btree.h" #include <stdio.h> |
︙ | ︙ | |||
642 643 644 645 646 647 648 | void sqliteBeginWriteOperation(Parse*); void sqliteBeginMultiWriteOperation(Parse*); void sqliteEndWriteOperation(Parse*); void sqliteExprMoveStrings(Expr*, int); void sqliteExprListMoveStrings(ExprList*, int); void sqliteSelectMoveStrings(Select*, int); UserFunc *sqliteFindUserFunction(sqlite*,const char*,int,int,int); | > | 642 643 644 645 646 647 648 649 | void sqliteBeginWriteOperation(Parse*); void sqliteBeginMultiWriteOperation(Parse*); void sqliteEndWriteOperation(Parse*); void sqliteExprMoveStrings(Expr*, int); void sqliteExprListMoveStrings(ExprList*, int); void sqliteSelectMoveStrings(Select*, int); UserFunc *sqliteFindUserFunction(sqlite*,const char*,int,int,int); void sqliteRegisterBuildinFunctions(sqlite*); |