1.Dd March 11, 2017 2.Dt SQLITE3_VALUE 3 3.Os 4.Sh NAME 5.Nm sqlite3_value 6.Nd Dynamically Typed Value Object 7.Sh SYNOPSIS 8.Vt typedef struct Mem sqlite3_value; 9.Sh DESCRIPTION 10SQLite uses the sqlite3_value object to represent all values that can 11be stored in a database table. 12SQLite uses dynamic typing for the values it stores. 13Values stored in sqlite3_value objects can be integers, floating point 14values, strings, BLOBs, or NULL. 15.Pp 16An sqlite3_value object may be either "protected" or "unprotected". 17Some interfaces require a protected sqlite3_value. 18Other interfaces will accept either a protected or an unprotected sqlite3_value. 19Every interface that accepts sqlite3_value arguments specifies whether 20or not it requires a protected sqlite3_value. 21The sqlite3_value_dup() interface can be used to 22construct a new protected sqlite3_value from an unprotected sqlite3_value. 23.Pp 24The terms "protected" and "unprotected" refer to whether or not a mutex 25is held. 26An internal mutex is held for a protected sqlite3_value object but 27no mutex is held for an unprotected sqlite3_value object. 28If SQLite is compiled to be single-threaded (with SQLITE_THREADSAFE=0 29and with sqlite3_threadsafe() returning 0) or if 30SQLite is run in one of reduced mutex modes SQLITE_CONFIG_SINGLETHREAD 31or SQLITE_CONFIG_MULTITHREAD then there is 32no distinction between protected and unprotected sqlite3_value objects 33and they can be used interchangeably. 34However, for maximum code portability it is recommended that applications 35still make the distinction between protected and unprotected sqlite3_value 36objects even when not strictly required. 37.Pp 38The sqlite3_value objects that are passed as parameters into the implementation 39of application-defined SQL functions 40are protected. 41The sqlite3_value object returned by sqlite3_column_value() 42is unprotected. 43Unprotected sqlite3_value objects may only be used with sqlite3_result_value() 44and sqlite3_bind_value(). 45The sqlite3_value_type() family of interfaces 46require protected sqlite3_value objects. 47.Sh SEE ALSO 48.Xr sqlite3_create_function 3 , 49.Xr sqlite3_bind_blob 3 , 50.Xr sqlite3_column_blob 3 , 51.Xr sqlite3_result_blob 3 , 52.Xr sqlite3_threadsafe 3 , 53.Xr sqlite3_value_blob 3 , 54.Xr sqlite3_value_dup 3 , 55.Xr SQLITE_CONFIG_SINGLETHREAD 3 56