*** 276,278 **** --- 276,301 ---- *: argc > 1 && argv[0] == NULL: a new row is inserted with rowid argv[1] *: argc > 1 && argv[0] != NULL && argv[0] == argv[1]: the row with rowid argv[0] is updated with new values in argv[2] and following parameters *: argc > 1 && argv[0] != NULL && argv[0] != argv[1]: the row with rowid argv[0] is updated with rowid argv[1] and new values in argv[2] and following parameters. This will occur when an SQL statement updates a rowid, as in the statement UPDATE table SET rowid=rowid+1 WHERE ...; + + ---- + *xFindFunction* + + int (*xFindFunction)( + sqlite3_vtab *pVtab, + int nArg, + const char *zName, + void (**pxFunc)(sqlite3_context*,int,sqlite3_value**), + void **ppArg + ); + + This method is called during sqlite3_prepare to give the virtual table + implementation an opportunity to overload functions. This method may + be set to NULL in which case no overloading occurs. + + When a function uses a column from a virtual table as its first + argument, this method is called to see if the virtual table would + like to overload the function. The first three parameters are + inputs: the virtual table, the number of arguments to the function, + and the name of the function. If no overloading is desired, return 0. + To overload the function, write the new function implementation + into *pxFunc and user data into *ppArg and return 1.