Small. Fast. Reliable.
Choose any three.
*** 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.