| Add initialization functions for internal usage in libsqlite3.so. |
| |
| SQLite revision: acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b |
| |
| --- /ext/misc/nextchar.c |
| +++ /ext/misc/nextchar.c |
| @@ -286,17 +286,8 @@ |
| sqlite3_free(c.aResult); |
| } |
| |
| -#ifdef _WIN32 |
| -__declspec(dllexport) |
| -#endif |
| -int sqlite3_nextchar_init( |
| - sqlite3 *db, |
| - char **pzErrMsg, |
| - const sqlite3_api_routines *pApi |
| -){ |
| +int sqlite3NextcharInit(sqlite3 *db){ |
| int rc = SQLITE_OK; |
| - SQLITE_EXTENSION_INIT2(pApi); |
| - (void)pzErrMsg; /* Unused parameter */ |
| rc = sqlite3_create_function(db, "next_char", 3, |
| SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| nextCharFunc, 0, 0); |
| @@ -312,3 +303,18 @@ |
| } |
| return rc; |
| } |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| +#ifdef _WIN32 |
| +__declspec(dllexport) |
| +#endif |
| +int sqlite3_nextchar_init( |
| + sqlite3 *db, |
| + char **pzErrMsg, |
| + const sqlite3_api_routines *pApi |
| +){ |
| + SQLITE_EXTENSION_INIT2(pApi); |
| + (void)pzErrMsg; /* Unused parameter */ |
| + return sqlite3NextcharInit(db); |
| +} |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/percentile.c |
| +++ /ext/misc/percentile.c |
| @@ -202,6 +202,15 @@ |
| } |
| |
| |
| +int sqlite3PercentileInit(sqlite3 *db){ |
| + int rc = SQLITE_OK; |
| + rc = sqlite3_create_function(db, "percentile", 2, |
| + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| + 0, percentStep, percentFinal); |
| + return rc; |
| +} |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -210,11 +219,8 @@ |
| char **pzErrMsg, |
| const sqlite3_api_routines *pApi |
| ){ |
| - int rc = SQLITE_OK; |
| SQLITE_EXTENSION_INIT2(pApi); |
| (void)pzErrMsg; /* Unused parameter */ |
| - rc = sqlite3_create_function(db, "percentile", 2, |
| - SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| - 0, percentStep, percentFinal); |
| - return rc; |
| + return sqlite3PercentileInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/regexp.c |
| +++ /ext/misc/regexp.c |
| @@ -740,10 +740,18 @@ |
| } |
| } |
| |
| +int sqlite3RegexpInit(sqlite3 *db){ |
| + int rc = SQLITE_OK; |
| + rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS, |
| + 0, re_sql_func, 0, 0); |
| + return rc; |
| +} |
| + |
| /* |
| ** Invoke this routine to register the regexp() function with the |
| ** SQLite database connection. |
| */ |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -752,9 +760,8 @@ |
| char **pzErrMsg, |
| const sqlite3_api_routines *pApi |
| ){ |
| - int rc = SQLITE_OK; |
| SQLITE_EXTENSION_INIT2(pApi); |
| - rc = sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8|SQLITE_INNOCUOUS, |
| - 0, re_sql_func, 0, 0); |
| - return rc; |
| + (void)pzErrMsg; /* Unused parameter */ |
| + return sqlite3RegexpInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/series.c |
| +++ /ext/misc/series.c |
| @@ -423,6 +423,15 @@ |
| |
| #endif /* SQLITE_OMIT_VIRTUALTABLE */ |
| |
| +int sqlite3SeriesInit(sqlite3 *db){ |
| + int rc = SQLITE_OK; |
| +#ifndef SQLITE_OMIT_VIRTUALTABLE |
| + rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0); |
| +#endif |
| + return rc; |
| +} |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -431,7 +440,6 @@ |
| char **pzErrMsg, |
| const sqlite3_api_routines *pApi |
| ){ |
| - int rc = SQLITE_OK; |
| SQLITE_EXTENSION_INIT2(pApi); |
| #ifndef SQLITE_OMIT_VIRTUALTABLE |
| if( sqlite3_libversion_number()<3008012 ){ |
| @@ -439,7 +447,7 @@ |
| "generate_series() requires SQLite 3.8.12 or later"); |
| return SQLITE_ERROR; |
| } |
| - rc = sqlite3_create_module(db, "generate_series", &seriesModule, 0); |
| #endif |
| - return rc; |
| + return sqlite3SeriesInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/sha1.c |
| +++ /ext/misc/sha1.c |
| @@ -175,7 +175,7 @@ |
| } |
| |
| /* Compute a string using sqlite3_vsnprintf() and hash it */ |
| -static void hash_step_vformat( |
| +static void sha1_hash_step_vformat( |
| SHA1Context *p, /* Add content to this context */ |
| const char *zFormat, |
| ... |
| @@ -306,7 +306,7 @@ |
| nCol = sqlite3_column_count(pStmt); |
| z = sqlite3_sql(pStmt); |
| n = (int)strlen(z); |
| - hash_step_vformat(&cx,"S%d:",n); |
| + sha1_hash_step_vformat(&cx,"S%d:",n); |
| hash_step(&cx,(unsigned char*)z,n); |
| |
| /* Compute a hash over the result of the query */ |
| @@ -349,14 +349,14 @@ |
| case SQLITE_TEXT: { |
| int n2 = sqlite3_column_bytes(pStmt, i); |
| const unsigned char *z2 = sqlite3_column_text(pStmt, i); |
| - hash_step_vformat(&cx,"T%d:",n2); |
| + sha1_hash_step_vformat(&cx,"T%d:",n2); |
| hash_step(&cx, z2, n2); |
| break; |
| } |
| case SQLITE_BLOB: { |
| int n2 = sqlite3_column_bytes(pStmt, i); |
| const unsigned char *z2 = sqlite3_column_blob(pStmt, i); |
| - hash_step_vformat(&cx,"B%d:",n2); |
| + sha1_hash_step_vformat(&cx,"B%d:",n2); |
| hash_step(&cx, z2, n2); |
| break; |
| } |
| @@ -370,6 +370,20 @@ |
| } |
| |
| |
| +int sqlite3ShaInit(sqlite3 *db){ |
| + int rc = SQLITE_OK; |
| + rc = sqlite3_create_function(db, "sha1", 1, |
| + SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, |
| + 0, sha1Func, 0, 0); |
| + if( rc==SQLITE_OK ){ |
| + rc = sqlite3_create_function(db, "sha1_query", 1, |
| + SQLITE_UTF8|SQLITE_DIRECTONLY, 0, |
| + sha1QueryFunc, 0, 0); |
| + } |
| + return rc; |
| +} |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -378,16 +392,8 @@ |
| char **pzErrMsg, |
| const sqlite3_api_routines *pApi |
| ){ |
| - int rc = SQLITE_OK; |
| SQLITE_EXTENSION_INIT2(pApi); |
| (void)pzErrMsg; /* Unused parameter */ |
| - rc = sqlite3_create_function(db, "sha1", 1, |
| - SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, |
| - 0, sha1Func, 0, 0); |
| - if( rc==SQLITE_OK ){ |
| - rc = sqlite3_create_function(db, "sha1_query", 1, |
| - SQLITE_UTF8|SQLITE_DIRECTONLY, 0, |
| - sha1QueryFunc, 0, 0); |
| - } |
| - return rc; |
| + return sqlite3ShaInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/shathree.c |
| +++ /ext/misc/shathree.c |
| @@ -530,7 +530,7 @@ |
| /* Compute a string using sqlite3_vsnprintf() with a maximum length |
| ** of 50 bytes and add it to the hash. |
| */ |
| -static void hash_step_vformat( |
| +static void sha3_hash_step_vformat( |
| SHA3Context *p, /* Add content to this context */ |
| const char *zFormat, |
| ... |
| @@ -626,7 +626,7 @@ |
| z = sqlite3_sql(pStmt); |
| if( z ){ |
| n = (int)strlen(z); |
| - hash_step_vformat(&cx,"S%d:",n); |
| + sha3_hash_step_vformat(&cx,"S%d:",n); |
| SHA3Update(&cx,(unsigned char*)z,n); |
| } |
| |
| @@ -670,14 +670,14 @@ |
| case SQLITE_TEXT: { |
| int n2 = sqlite3_column_bytes(pStmt, i); |
| const unsigned char *z2 = sqlite3_column_text(pStmt, i); |
| - hash_step_vformat(&cx,"T%d:",n2); |
| + sha3_hash_step_vformat(&cx,"T%d:",n2); |
| SHA3Update(&cx, z2, n2); |
| break; |
| } |
| case SQLITE_BLOB: { |
| int n2 = sqlite3_column_bytes(pStmt, i); |
| const unsigned char *z2 = sqlite3_column_blob(pStmt, i); |
| - hash_step_vformat(&cx,"B%d:",n2); |
| + sha3_hash_step_vformat(&cx,"B%d:",n2); |
| SHA3Update(&cx, z2, n2); |
| break; |
| } |
| @@ -690,17 +690,8 @@ |
| } |
| |
| |
| -#ifdef _WIN32 |
| -__declspec(dllexport) |
| -#endif |
| -int sqlite3_shathree_init( |
| - sqlite3 *db, |
| - char **pzErrMsg, |
| - const sqlite3_api_routines *pApi |
| -){ |
| +int sqlite3ShathreeInit(sqlite3 *db){ |
| int rc = SQLITE_OK; |
| - SQLITE_EXTENSION_INIT2(pApi); |
| - (void)pzErrMsg; /* Unused parameter */ |
| rc = sqlite3_create_function(db, "sha3", 1, |
| SQLITE_UTF8 | SQLITE_INNOCUOUS | SQLITE_DETERMINISTIC, |
| 0, sha3Func, 0, 0); |
| @@ -721,3 +712,18 @@ |
| } |
| return rc; |
| } |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| +#ifdef _WIN32 |
| +__declspec(dllexport) |
| +#endif |
| +int sqlite3_shathree_init( |
| + sqlite3 *db, |
| + char **pzErrMsg, |
| + const sqlite3_api_routines *pApi |
| +){ |
| + SQLITE_EXTENSION_INIT2(pApi); |
| + (void)pzErrMsg; /* Unused parameter */ |
| + return sqlite3ShathreeInit(db); |
| +} |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/sqlar.c |
| +++ /ext/misc/sqlar.c |
| @@ -14,6 +14,8 @@ |
| ** for working with sqlar archives and used by the shell tool's built-in |
| ** sqlar support. |
| */ |
| +#ifdef SQLITE_HAVE_ZLIB |
| + |
| #include "sqlite3ext.h" |
| SQLITE_EXTENSION_INIT1 |
| #include <zlib.h> |
| @@ -101,6 +103,20 @@ |
| } |
| |
| |
| +int sqlite3SqlarInit(sqlite3 *db){ |
| + int rc = SQLITE_OK; |
| + rc = sqlite3_create_function(db, "sqlar_compress", 1, |
| + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| + sqlarCompressFunc, 0, 0); |
| + if( rc==SQLITE_OK ){ |
| + rc = sqlite3_create_function(db, "sqlar_uncompress", 2, |
| + SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| + sqlarUncompressFunc, 0, 0); |
| + } |
| + return rc; |
| +} |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -109,16 +125,10 @@ |
| char **pzErrMsg, |
| const sqlite3_api_routines *pApi |
| ){ |
| - int rc = SQLITE_OK; |
| SQLITE_EXTENSION_INIT2(pApi); |
| (void)pzErrMsg; /* Unused parameter */ |
| - rc = sqlite3_create_function(db, "sqlar_compress", 1, |
| - SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| - sqlarCompressFunc, 0, 0); |
| - if( rc==SQLITE_OK ){ |
| - rc = sqlite3_create_function(db, "sqlar_uncompress", 2, |
| - SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| - sqlarUncompressFunc, 0, 0); |
| - } |
| - return rc; |
| + return sqlite3SqlarInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| + |
| +#endif /* SQLITE_HAVE_ZLIB */ |
| --- /ext/misc/totype.c |
| +++ /ext/misc/totype.c |
| @@ -491,17 +491,8 @@ |
| #pragma warning(default: 4748) |
| #endif |
| |
| -#ifdef _WIN32 |
| -__declspec(dllexport) |
| -#endif |
| -int sqlite3_totype_init( |
| - sqlite3 *db, |
| - char **pzErrMsg, |
| - const sqlite3_api_routines *pApi |
| -){ |
| +int sqlite3TotypeInit(sqlite3 *db){ |
| int rc = SQLITE_OK; |
| - SQLITE_EXTENSION_INIT2(pApi); |
| - (void)pzErrMsg; /* Unused parameter */ |
| rc = sqlite3_create_function(db, "tointeger", 1, |
| SQLITE_UTF8 | SQLITE_DETERMINISTIC | SQLITE_INNOCUOUS, 0, |
| tointegerFunc, 0, 0); |
| @@ -512,3 +503,18 @@ |
| } |
| return rc; |
| } |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| +#ifdef _WIN32 |
| +__declspec(dllexport) |
| +#endif |
| +int sqlite3_totype_init( |
| + sqlite3 *db, |
| + char **pzErrMsg, |
| + const sqlite3_api_routines *pApi |
| +){ |
| + SQLITE_EXTENSION_INIT2(pApi); |
| + (void)pzErrMsg; /* Unused parameter */ |
| + return sqlite3TotypeInit(db); |
| +} |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/uint.c |
| +++ /ext/misc/uint.c |
| @@ -78,6 +78,11 @@ |
| return (nKey1 - i) - (nKey2 - j); |
| } |
| |
| +int sqlite3UintInit(sqlite3 *db){ |
| + return sqlite3_create_collation(db, "UINT", SQLITE_UTF8, 0, uintCollFunc); |
| +} |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -88,5 +93,6 @@ |
| ){ |
| SQLITE_EXTENSION_INIT2(pApi); |
| (void)pzErrMsg; /* Unused parameter */ |
| - return sqlite3_create_collation(db, "uint", SQLITE_UTF8, 0, uintCollFunc); |
| + return sqlite3UintInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/uuid.c |
| +++ /ext/misc/uuid.c |
| @@ -206,21 +206,12 @@ |
| sqlite3_result_blob(context, pBlob, 16, SQLITE_TRANSIENT); |
| } |
| |
| -#ifdef _WIN32 |
| -__declspec(dllexport) |
| -#endif |
| -int sqlite3_uuid_init( |
| - sqlite3 *db, |
| - char **pzErrMsg, |
| - const sqlite3_api_routines *pApi |
| -){ |
| +int sqlite3UuidInit(sqlite3 *db){ |
| int rc = SQLITE_OK; |
| - SQLITE_EXTENSION_INIT2(pApi); |
| - (void)pzErrMsg; /* Unused parameter */ |
| rc = sqlite3_create_function(db, "uuid", 0, SQLITE_UTF8|SQLITE_INNOCUOUS, 0, |
| sqlite3UuidFunc, 0, 0); |
| if( rc==SQLITE_OK ){ |
| - rc = sqlite3_create_function(db, "uuid_str", 1, |
| + rc = sqlite3_create_function(db, "uuid_str", 1, |
| SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, |
| 0, sqlite3UuidStrFunc, 0, 0); |
| } |
| @@ -231,3 +222,18 @@ |
| } |
| return rc; |
| } |
| + |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| +#ifdef _WIN32 |
| +__declspec(dllexport) |
| +#endif |
| +int sqlite3_uuid_init( |
| + sqlite3 *db, |
| + char **pzErrMsg, |
| + const sqlite3_api_routines *pApi |
| +){ |
| + SQLITE_EXTENSION_INIT2(pApi); |
| + (void)pzErrMsg; /* Unused parameter */ |
| + return sqlite3UuidInit(db); |
| +} |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| --- /ext/misc/zipfile.c |
| +++ /ext/misc/zipfile.c |
| @@ -24,6 +24,8 @@ |
| ** * No support for zip64 extensions |
| ** * Only the "inflate/deflate" (zlib) compression method is supported |
| */ |
| +#ifdef SQLITE_HAVE_ZLIB |
| + |
| #include "sqlite3ext.h" |
| SQLITE_EXTENSION_INIT1 |
| #include <stdio.h> |
| @@ -2139,7 +2141,7 @@ |
| /* |
| ** Register the "zipfile" virtual table. |
| */ |
| -static int zipfileRegister(sqlite3 *db){ |
| +int sqlite3ZipfileInit(sqlite3 *db){ |
| static sqlite3_module zipfileModule = { |
| 1, /* iVersion */ |
| zipfileConnect, /* xCreate */ |
| @@ -2173,9 +2175,10 @@ |
| return rc; |
| } |
| #else /* SQLITE_OMIT_VIRTUALTABLE */ |
| -# define zipfileRegister(x) SQLITE_OK |
| +# define sqlite3ZipfileInit(x) SQLITE_OK |
| #endif |
| |
| +#if !defined(SQLITE_CORE) || defined(SQLITE_TEST) |
| #ifdef _WIN32 |
| __declspec(dllexport) |
| #endif |
| @@ -2186,5 +2189,8 @@ |
| ){ |
| SQLITE_EXTENSION_INIT2(pApi); |
| (void)pzErrMsg; /* Unused parameter */ |
| - return zipfileRegister(db); |
| + return sqlite3ZipfileInit(db); |
| } |
| +#endif /* !defined(SQLITE_CORE) || defined(SQLITE_TEST) */ |
| + |
| +#endif /* SQLITE_HAVE_ZLIB */ |