summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/sqlite3_get_auxdata.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man3/sqlite3_get_auxdata.3')
-rw-r--r--static/netbsd/man3/sqlite3_get_auxdata.3105
1 files changed, 105 insertions, 0 deletions
diff --git a/static/netbsd/man3/sqlite3_get_auxdata.3 b/static/netbsd/man3/sqlite3_get_auxdata.3
new file mode 100644
index 00000000..3220c724
--- /dev/null
+++ b/static/netbsd/man3/sqlite3_get_auxdata.3
@@ -0,0 +1,105 @@
+.Dd January 24, 2024
+.Dt SQLITE3_GET_AUXDATA 3
+.Os
+.Sh NAME
+.Nm sqlite3_get_auxdata ,
+.Nm sqlite3_set_auxdata
+.Nd function auxiliary data
+.Sh SYNOPSIS
+.In sqlite3.h
+.Ft void *
+.Fo sqlite3_get_auxdata
+.Fa "sqlite3_context*"
+.Fa "int N"
+.Fc
+.Ft void
+.Fo sqlite3_set_auxdata
+.Fa "sqlite3_context*"
+.Fa "int N"
+.Fa "void*"
+.Fa "void (*)(void*)"
+.Fc
+.Sh DESCRIPTION
+These functions may be used by (non-aggregate) SQL functions to associate
+auxiliary data with argument values.
+If the same argument value is passed to multiple invocations of the
+same SQL function during query execution, under some circumstances
+the associated auxiliary data might be preserved.
+An example of where this might be useful is in a regular-expression
+matching function.
+The compiled version of the regular expression can be stored as auxiliary
+data associated with the pattern string.
+Then as long as the pattern string remains the same, the compiled regular
+expression can be reused on multiple invocations of the same function.
+.Pp
+The sqlite3_get_auxdata(C,N) interface returns a pointer to the auxiliary
+data associated by the sqlite3_set_auxdata(C,N,P,X) function with the
+Nth argument value to the application-defined function.
+N is zero for the left-most function argument.
+If there is no auxiliary data associated with the function argument,
+the sqlite3_get_auxdata(C,N) interface returns a NULL pointer.
+.Pp
+The sqlite3_set_auxdata(C,N,P,X) interface saves P as auxiliary data
+for the N-th argument of the application-defined function.
+Subsequent calls to sqlite3_get_auxdata(C,N) return P from the most
+recent sqlite3_set_auxdata(C,N,P,X) call if the auxiliary data is still
+valid or NULL if the auxiliary data has been discarded.
+After each call to sqlite3_set_auxdata(C,N,P,X) where X is not NULL,
+SQLite will invoke the destructor function X with parameter P exactly
+once, when the auxiliary data is discarded.
+SQLite is free to discard the auxiliary data at any time, including:
+.Bl -bullet
+.It
+when the corresponding function parameter changes, or
+.It
+when
+.Fn sqlite3_reset
+or
+.Fn sqlite3_finalize
+is called for the SQL statement, or
+.It
+when sqlite3_set_auxdata() is invoked again on the same parameter,
+or
+.It
+during the original sqlite3_set_auxdata() call when a memory allocation
+error occurs.
+.It
+during the original sqlite3_set_auxdata() call if the function is evaluated
+during query planning instead of during query execution, as sometimes
+happens with SQLITE_ENABLE_STAT4.
+.El
+.Pp
+Note the last two bullets in particular.
+The destructor X in sqlite3_set_auxdata(C,N,P,X) might be called immediately,
+before the sqlite3_set_auxdata() interface even returns.
+Hence sqlite3_set_auxdata() should be called near the end of the function
+implementation and the function implementation should not make any
+use of P after sqlite3_set_auxdata() has been called.
+Furthermore, a call to sqlite3_get_auxdata() that occurs immediately
+after a corresponding call to sqlite3_set_auxdata() might still return
+NULL if an out-of-memory condition occurred during the sqlite3_set_auxdata()
+call or if the function is being evaluated during query planning rather
+than during query execution.
+.Pp
+In practice, auxiliary data is preserved between function calls for
+function parameters that are compile-time constants, including literal
+values and parameters and expressions composed from the same.
+.Pp
+The value of the N parameter to these interfaces should be non-negative.
+Future enhancements may make use of negative N values to define new
+kinds of function caching behavior.
+.Pp
+These routines must be called from the same thread in which the SQL
+function is running.
+.Pp
+.Sh IMPLEMENTATION NOTES
+These declarations were extracted from the
+interface documentation at line 5903.
+.Bd -literal
+SQLITE_API void *sqlite3_get_auxdata(sqlite3_context*, int N);
+SQLITE_API void sqlite3_set_auxdata(sqlite3_context*, int N, void*, void (*)(void*));
+.Ed
+.Sh SEE ALSO
+.Xr sqlite3_finalize 3 ,
+.Xr sqlite3_get_clientdata 3 ,
+.Xr sqlite3_reset 3