Update: the problem is in the function registration.
I tried to comment out the UTF-16 registration and the really weird thing is that using the following code, only GLOB with 3 arguments gets actually registered (along with all 1-arg string functions and the two collations). There must be something obvious, but it escapes me completely right now. Any hint? --------------------------------------------------- SQLITE_PRIVATE int unifuzz_init( sqlite3 *db ){ struct FuncScalar { const char *zName; /* Function name */ int nArg; /* Number of arguments */ int enc; /* Optimal text encoding */ void *pContext; /* sqlite3_user_data() context */ void (*xFunc)(sqlite3_context*, int, sqlite3_value**); } scalars[] = { {"version", 0, SQLITE_ANY, 0, versionFunc }, {"upper", 1, SQLITE_UTF8, (void *) unifuzz_upper, caseFunc8 }, {"upper", 1, SQLITE_UTF16, (void *) unifuzz_upper, caseFunc16 }, {"lower", 1, SQLITE_UTF8, (void *) unifuzz_lower, caseFunc8 }, {"lower", 1, SQLITE_UTF16, (void *) unifuzz_lower, caseFunc16 }, {"title", 1, SQLITE_UTF8, (void *) unifuzz_title, caseFunc8 }, {"title", 1, SQLITE_UTF16, (void *) unifuzz_title, caseFunc16 }, {"fold", 1, SQLITE_UTF8, (void *) unifuzz_fold, caseFunc8 }, {"fold", 1, SQLITE_UTF16, (void *) unifuzz_fold, caseFunc16 }, {"unaccent", 1, SQLITE_UTF8, 0, unaccFunc8 }, {"unaccent", 1, SQLITE_UTF16, 0, unaccFunc16 }, {"proper", 1, SQLITE_UTF8, 0, properFunc8 }, {"proper", 1, SQLITE_UTF16, 0, properFunc16 }, {"like", 2, SQLITE_UTF8, (void *) &likeInfoNorm, likeFunc8 }, // {"like", 2, SQLITE_UTF16, (void *) &likeInfoNorm, likeFunc16 }, {"like", 3, SQLITE_UTF8, (void *) &likeInfoNorm, likeFunc8 }, // {"like", 3, SQLITE_UTF16, (void *) &likeInfoNorm, likeFunc16 }, {"glob", 2, SQLITE_UTF8, (void *) &globInfo, likeFunc8 }, // {"glob", 2, SQLITE_UTF16, (void *) &globInfo, likeFunc16 }, {"glob", 3, SQLITE_UTF8, (void *) &globInfo, likeFunc8 }, // {"glob", 3, SQLITE_UTF16, (void *) &globInfo, likeFunc16 }, {"typos", 2, SQLITE_UTF8, 0, typosFunc8 }, {"typos", 2, SQLITE_UTF16, 0, typosFunc16 } }; int i; for(i = 0; (i < (sizeof(scalars) / sizeof(struct FuncScalar))); i++){ struct FuncScalar *p = &scalars[i]; sqlite3_create_function(db, p->zName, p->nArg, p->enc, p->pContext, p->xFunc, 0, 0); } /* Also override the default NOCASE case-insensitive collation sequence. */ sqlite3_create_collation(db, "NOCASE", SQLITE_UTF16LE, 0, nocase_collate); sqlite3_create_collation(db, "NAMES", SQLITE_UTF16LE, 0, letters_collate); return SQLITE_OK; } --------------------------------- _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users