Index: third_party/sqlite/sqlite-src-3100200/ext/misc/eval.c |
diff --git a/third_party/sqlite/sqlite-src-3100200/ext/misc/eval.c b/third_party/sqlite/sqlite-src-3100200/ext/misc/eval.c |
deleted file mode 100644 |
index 71b6b69f20a732d2bd0653a734f91dc8a5eaa64e..0000000000000000000000000000000000000000 |
--- a/third_party/sqlite/sqlite-src-3100200/ext/misc/eval.c |
+++ /dev/null |
@@ -1,122 +0,0 @@ |
-/* |
-** 2014-11-10 |
-** |
-** 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 SQLite extension implements SQL function eval() which runs |
-** SQL statements recursively. |
-*/ |
-#include "sqlite3ext.h" |
-SQLITE_EXTENSION_INIT1 |
-#include <string.h> |
- |
-/* |
-** Structure used to accumulate the output |
-*/ |
-struct EvalResult { |
- char *z; /* Accumulated output */ |
- const char *zSep; /* Separator */ |
- int szSep; /* Size of the separator string */ |
- sqlite3_int64 nAlloc; /* Number of bytes allocated for z[] */ |
- sqlite3_int64 nUsed; /* Number of bytes of z[] actually used */ |
-}; |
- |
-/* |
-** Callback from sqlite_exec() for the eval() function. |
-*/ |
-static int callback(void *pCtx, int argc, char **argv, char **colnames){ |
- struct EvalResult *p = (struct EvalResult*)pCtx; |
- int i; |
- for(i=0; i<argc; i++){ |
- const char *z = argv[i] ? argv[i] : ""; |
- size_t sz = strlen(z); |
- if( (sqlite3_int64)sz+p->nUsed+p->szSep+1 > p->nAlloc ){ |
- char *zNew; |
- p->nAlloc = p->nAlloc*2 + sz + p->szSep + 1; |
- /* Using sqlite3_realloc64() would be better, but it is a recent |
- ** addition and will cause a segfault if loaded by an older version |
- ** of SQLite. */ |
- zNew = p->nAlloc<=0x7fffffff ? sqlite3_realloc(p->z, (int)p->nAlloc) : 0; |
- if( zNew==0 ){ |
- sqlite3_free(p->z); |
- memset(p, 0, sizeof(*p)); |
- return 1; |
- } |
- p->z = zNew; |
- } |
- if( p->nUsed>0 ){ |
- memcpy(&p->z[p->nUsed], p->zSep, p->szSep); |
- p->nUsed += p->szSep; |
- } |
- memcpy(&p->z[p->nUsed], z, sz); |
- p->nUsed += sz; |
- } |
- return 0; |
-} |
- |
-/* |
-** Implementation of the eval(X) and eval(X,Y) SQL functions. |
-** |
-** Evaluate the SQL text in X. Return the results, using string |
-** Y as the separator. If Y is omitted, use a single space character. |
-*/ |
-static void sqlEvalFunc( |
- sqlite3_context *context, |
- int argc, |
- sqlite3_value **argv |
-){ |
- const char *zSql; |
- sqlite3 *db; |
- char *zErr = 0; |
- int rc; |
- struct EvalResult x; |
- |
- memset(&x, 0, sizeof(x)); |
- x.zSep = " "; |
- zSql = (const char*)sqlite3_value_text(argv[0]); |
- if( zSql==0 ) return; |
- if( argc>1 ){ |
- x.zSep = (const char*)sqlite3_value_text(argv[1]); |
- if( x.zSep==0 ) return; |
- } |
- x.szSep = (int)strlen(x.zSep); |
- db = sqlite3_context_db_handle(context); |
- rc = sqlite3_exec(db, zSql, callback, &x, &zErr); |
- if( rc!=SQLITE_OK ){ |
- sqlite3_result_error(context, zErr, -1); |
- sqlite3_free(zErr); |
- }else if( x.zSep==0 ){ |
- sqlite3_result_error_nomem(context); |
- sqlite3_free(x.z); |
- }else{ |
- sqlite3_result_text(context, x.z, (int)x.nUsed, sqlite3_free); |
- } |
-} |
- |
- |
-#ifdef _WIN32 |
-__declspec(dllexport) |
-#endif |
-int sqlite3_eval_init( |
- sqlite3 *db, |
- char **pzErrMsg, |
- const sqlite3_api_routines *pApi |
-){ |
- int rc = SQLITE_OK; |
- SQLITE_EXTENSION_INIT2(pApi); |
- (void)pzErrMsg; /* Unused parameter */ |
- rc = sqlite3_create_function(db, "eval", 1, SQLITE_UTF8, 0, |
- sqlEvalFunc, 0, 0); |
- if( rc==SQLITE_OK ){ |
- rc = sqlite3_create_function(db, "eval", 2, SQLITE_UTF8, 0, |
- sqlEvalFunc, 0, 0); |
- } |
- return rc; |
-} |