doc: clarify sqlite user-defined function behaviour · nodejs/node@91638ee
@@ -176,11 +176,14 @@ added: v23.5.0
176176* `useBigIntArguments` {boolean} If `true`, integer arguments to `function`
177177 are converted to `BigInt`s. If `false`, integer arguments are passed as
178178 JavaScript numbers. **Default:** `false`.
179-* `varargs` {boolean} If `true`, `function` can accept a variable number of
180- arguments. If `false`, `function` must be invoked with exactly
181-`function.length` arguments. **Default:** `false`.
179+* `varargs` {boolean} If `true`, `function` may be invoked with any number of
180+ arguments (between zero and [`SQLITE_MAX_FUNCTION_ARG`][]). If `false`,
181+`function` must be invoked with exactly `function.length` arguments.
182+**Default:** `false`.
182183* `function` {Function} The JavaScript function to call when the SQLite
183- function is invoked.
184+ function is invoked. The return value of this function should be a valid
185+ SQLite data type: see [Type conversion between JavaScript and SQLite][].
186+ The result defaults to `NULL` if the return value is `undefined`.
184187185188This method is used to create SQLite user-defined functions. This method is a
186189wrapper around [`sqlite3_create_function_v2()`][].
@@ -579,10 +582,12 @@ resolution handler passed to [`database.applyChangeset()`][]. See also
579582[Constants Passed To The Conflict Handler]: https://www.sqlite.org/session/c_changeset_conflict.html
580583[Constants Returned From The Conflict Handler]: https://www.sqlite.org/session/c_changeset_abort.html
581584[SQL injection]: https://en.wikipedia.org/wiki/SQL_injection
585+[Type conversion between JavaScript and SQLite]: #type-conversion-between-javascript-and-sqlite
582586[`ATTACH DATABASE`]: https://www.sqlite.org/lang_attach.html
583587[`PRAGMA foreign_keys`]: https://www.sqlite.org/pragma.html#pragma_foreign_keys
584588[`SQLITE_DETERMINISTIC`]: https://www.sqlite.org/c3ref/c_deterministic.html
585589[`SQLITE_DIRECTONLY`]: https://www.sqlite.org/c3ref/c_deterministic.html
590+[`SQLITE_MAX_FUNCTION_ARG`]: https://www.sqlite.org/limits.html#max_function_arg
586591[`database.applyChangeset()`]: #databaseapplychangesetchangeset-options
587592[`sqlite3_changes64()`]: https://www.sqlite.org/c3ref/changes.html
588593[`sqlite3_close_v2()`]: https://www.sqlite.org/c3ref/close.html