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

Reply via email to