summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/sqlite3_value_blob.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man3/sqlite3_value_blob.3')
-rw-r--r--static/netbsd/man3/sqlite3_value_blob.3250
1 files changed, 250 insertions, 0 deletions
diff --git a/static/netbsd/man3/sqlite3_value_blob.3 b/static/netbsd/man3/sqlite3_value_blob.3
new file mode 100644
index 00000000..df74210d
--- /dev/null
+++ b/static/netbsd/man3/sqlite3_value_blob.3
@@ -0,0 +1,250 @@
+.Dd January 24, 2024
+.Dt SQLITE3_VALUE_BLOB 3
+.Os
+.Sh NAME
+.Nm sqlite3_value_blob ,
+.Nm sqlite3_value_double ,
+.Nm sqlite3_value_int ,
+.Nm sqlite3_value_int64 ,
+.Nm sqlite3_value_pointer ,
+.Nm sqlite3_value_text ,
+.Nm sqlite3_value_text16 ,
+.Nm sqlite3_value_text16le ,
+.Nm sqlite3_value_text16be ,
+.Nm sqlite3_value_bytes ,
+.Nm sqlite3_value_bytes16 ,
+.Nm sqlite3_value_type ,
+.Nm sqlite3_value_numeric_type ,
+.Nm sqlite3_value_nochange ,
+.Nm sqlite3_value_frombind
+.Nd obtaining SQL values
+.Sh SYNOPSIS
+.In sqlite3.h
+.Ft const void *
+.Fo sqlite3_value_blob
+.Fa "sqlite3_value*"
+.Fc
+.Ft double
+.Fo sqlite3_value_double
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_int
+.Fa "sqlite3_value*"
+.Fc
+.Ft sqlite3_int64
+.Fo sqlite3_value_int64
+.Fa "sqlite3_value*"
+.Fc
+.Ft void *
+.Fo sqlite3_value_pointer
+.Fa "sqlite3_value*"
+.Fa "const char*"
+.Fc
+.Ft const unsigned char *
+.Fo sqlite3_value_text
+.Fa "sqlite3_value*"
+.Fc
+.Ft const void *
+.Fo sqlite3_value_text16
+.Fa "sqlite3_value*"
+.Fc
+.Ft const void *
+.Fo sqlite3_value_text16le
+.Fa "sqlite3_value*"
+.Fc
+.Ft const void *
+.Fo sqlite3_value_text16be
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_bytes
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_bytes16
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_type
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_numeric_type
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_nochange
+.Fa "sqlite3_value*"
+.Fc
+.Ft int
+.Fo sqlite3_value_frombind
+.Fa "sqlite3_value*"
+.Fc
+.Sh DESCRIPTION
+\fBSummary:\fP
+.Bd -ragged
+.Pp
+ \fBsqlite3_value_blob\fP \(-> BLOB value
+ \fBsqlite3_value_double\fP \(-> REAL value
+ \fBsqlite3_value_int\fP \(-> 32-bit INTEGER value
+ \fBsqlite3_value_int64\fP \(-> 64-bit INTEGER value
+ \fBsqlite3_value_pointer\fP \(-> Pointer value
+ \fBsqlite3_value_text\fP \(-> UTF-8 TEXT value
+ \fBsqlite3_value_text16\fP \(-> UTF-16 TEXT value in the native byteorder
+ \fBsqlite3_value_text16be\fP \(-> UTF-16be TEXT value
+ \fBsqlite3_value_text16le\fP \(-> UTF-16le TEXT value
+
+ \fBsqlite3_value_bytes\fP \(-> Size of a BLOB or a UTF-8 TEXT in bytes
+ \fBsqlite3_value_bytes16 \fP \(-> Size of UTF-16 TEXT in bytes
+ \fBsqlite3_value_type\fP \(-> Default datatype of the value
+ \fBsqlite3_value_numeric_type \fP \(-> Best numeric datatype of the value
+ \fBsqlite3_value_nochange \fP \(-> True if the column is unchanged in an
+UPDATE against a virtual table.
+ \fBsqlite3_value_frombind \fP \(-> True if value originated from a bound parameter
+.Pp
+.Ed
+.Pp
+\fBDetails:\fP
+.Pp
+These routines extract type, size, and content information from protected sqlite3_value
+objects.
+Protected sqlite3_value objects are used to pass parameter information
+into the functions that implement application-defined SQL functions
+and virtual tables.
+.Pp
+These routines work only with protected sqlite3_value
+objects.
+Any attempt to use these routines on an unprotected sqlite3_value
+is not threadsafe.
+.Pp
+These routines work just like the corresponding column access functions
+except that these routines take a single protected sqlite3_value
+object pointer instead of a sqlite3_stmt* pointer and
+an integer column number.
+.Pp
+The sqlite3_value_text16() interface extracts a UTF-16 string in the
+native byte-order of the host machine.
+The sqlite3_value_text16be() and sqlite3_value_text16le() interfaces
+extract UTF-16 strings as big-endian and little-endian respectively.
+.Pp
+If sqlite3_value object V was initialized using sqlite3_bind_pointer(S,I,P,X,D)
+or sqlite3_result_pointer(C,P,X,D) and
+if X and Y are strings that compare equal according to strcmp(X,Y),
+then sqlite3_value_pointer(V,Y) will return the pointer P.
+Otherwise, sqlite3_value_pointer(V,Y) returns a NULL.
+The sqlite3_bind_pointer() routine is part of the pointer passing interface
+added for SQLite 3.20.0.
+.Pp
+The sqlite3_value_type(V) interface returns the datatype code
+for the initial datatype of the sqlite3_value object V.
+The returned value is one of SQLITE_INTEGER, SQLITE_FLOAT,
+SQLITE_TEXT, SQLITE_BLOB, or SQLITE_NULL.
+Other interfaces might change the datatype for an sqlite3_value object.
+For example, if the datatype is initially SQLITE_INTEGER and sqlite3_value_text(V)
+is called to extract a text value for that integer, then subsequent
+calls to sqlite3_value_type(V) might return SQLITE_TEXT.
+Whether or not a persistent internal datatype conversion occurs is
+undefined and may change from one release of SQLite to the next.
+.Pp
+The sqlite3_value_numeric_type() interface attempts to apply numeric
+affinity to the value.
+This means that an attempt is made to convert the value to an integer
+or floating point.
+If such a conversion is possible without loss of information (in other
+words, if the value is a string that looks like a number) then the
+conversion is performed.
+Otherwise no conversion occurs.
+The datatype after conversion is returned.
+.Pp
+Within the xUpdate method of a virtual table, the
+sqlite3_value_nochange(X) interface returns true if and only if the
+column corresponding to X is unchanged by the UPDATE operation that
+the xUpdate method call was invoked to implement and if and the prior
+xColumn method call that was invoked to extracted the value
+for that column returned without setting a result (probably because
+it queried
+.Fn sqlite3_vtab_nochange
+and found that the column was unchanging).
+Within an xUpdate method, any value for which sqlite3_value_nochange(X)
+is true will in all other respects appear to be a NULL value.
+If sqlite3_value_nochange(X) is invoked anywhere other than within
+an xUpdate method call for an UPDATE statement, then the return
+value is arbitrary and meaningless.
+.Pp
+The sqlite3_value_frombind(X) interface returns non-zero if the value
+X originated from one of the sqlite3_bind() interfaces.
+If X comes from an SQL literal value, or a table column, or an expression,
+then sqlite3_value_frombind(X) returns zero.
+.Pp
+Please pay particular attention to the fact that the pointer returned
+from
+.Fn sqlite3_value_blob ,
+.Fn sqlite3_value_text ,
+or
+.Fn sqlite3_value_text16
+can be invalidated by a subsequent call to
+.Fn sqlite3_value_bytes ,
+.Fn sqlite3_value_bytes16 ,
+.Fn sqlite3_value_text ,
+or
+.Fn sqlite3_value_text16 .
+These routines must be called from the same thread as the SQL function
+that supplied the sqlite3_value* parameters.
+.Pp
+As long as the input parameter is correct, these routines can only
+fail if an out-of-memory error occurs during a format conversion.
+Only the following subset of interfaces are subject to out-of-memory
+errors:
+.Bl -bullet
+.It
+sqlite3_value_blob()
+.It
+sqlite3_value_text()
+.It
+sqlite3_value_text16()
+.It
+sqlite3_value_text16le()
+.It
+sqlite3_value_text16be()
+.It
+sqlite3_value_bytes()
+.It
+sqlite3_value_bytes16()
+.El
+.Pp
+If an out-of-memory error occurs, then the return value from these
+routines is the same as if the column had contained an SQL NULL value.
+Valid SQL NULL returns can be distinguished from out-of-memory errors
+by invoking the
+.Fn sqlite3_errcode
+immediately after the suspect return value is obtained and before any
+other SQLite interface is called on the same database connection.
+.Sh IMPLEMENTATION NOTES
+These declarations were extracted from the
+interface documentation at line 5629.
+.Bd -literal
+SQLITE_API const void *sqlite3_value_blob(sqlite3_value*);
+SQLITE_API double sqlite3_value_double(sqlite3_value*);
+SQLITE_API int sqlite3_value_int(sqlite3_value*);
+SQLITE_API sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
+SQLITE_API void *sqlite3_value_pointer(sqlite3_value*, const char*);
+SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16le(sqlite3_value*);
+SQLITE_API const void *sqlite3_value_text16be(sqlite3_value*);
+SQLITE_API int sqlite3_value_bytes(sqlite3_value*);
+SQLITE_API int sqlite3_value_bytes16(sqlite3_value*);
+SQLITE_API int sqlite3_value_type(sqlite3_value*);
+SQLITE_API int sqlite3_value_numeric_type(sqlite3_value*);
+SQLITE_API int sqlite3_value_nochange(sqlite3_value*);
+SQLITE_API int sqlite3_value_frombind(sqlite3_value*);
+.Ed
+.Sh SEE ALSO
+.Xr sqlite3 3 ,
+.Xr sqlite3_bind_blob 3 ,
+.Xr sqlite3_column_blob 3 ,
+.Xr sqlite3_errcode 3 ,
+.Xr sqlite3_value 3 ,
+.Xr sqlite3_vtab_nochange 3 ,
+.Xr SQLITE_INTEGER 3