Attempt to improve documentation on sqlite3_column_ and sqlite3_value_
interfaces. FossilOrigin-Name: 9111ac69bf307997e590bc9459222661fc79f549b3c493168a654a5046e6e4ad
This commit is contained in:
parent
05dda7ba8e
commit
cde336e0dc
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
||||
C Add\smore\stests\sfor\sLSM\slog\sfile\srecovery.\sFix\sa\sproblem\sin\srecovering\slog\nfiles\sthat\scontain\srange\sdeletes.
|
||||
D 2017-07-03T09:00:18.115
|
||||
C Attempt\sto\simprove\sdocumentation\son\ssqlite3_column_\sand\ssqlite3_value_\ninterfaces.
|
||||
D 2017-07-03T17:37:04.837
|
||||
F Makefile.in 081e48dfe7f995d57ce1a88ddf4d2917b4349158648a6cd45b42beae30de3a12
|
||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||
F Makefile.msc 4ebb1d257cac7fb1bcb4ba59278416d410ff1c4bf59447a9c37a415f3516056a
|
||||
@ -450,7 +450,7 @@ F src/resolve.c d1e69759e7a79c156c692793f5d16f82f9a60ce5e82efd95e4374b2423034946
|
||||
F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
|
||||
F src/select.c 741937503c74d85e64828b63d5a4219d3cfce480a717efef635839606001b1ba
|
||||
F src/shell.c a2b148e4ca8eb81b96e1050207c83d4a16ea6bf9182374faee4dd2a43628c291
|
||||
F src/sqlite.h.in 731f189fd07c115e274a09f83043f822866144f68861c38a08ea4a977b1fbd84
|
||||
F src/sqlite.h.in 651cba56f8df64ff4418aa981cdfd5bc2d65e5fef95c1671f9826f1a164a5fa3
|
||||
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
|
||||
F src/sqlite3ext.h 58fd0676d3111d02e62e5a35992a7d3da5d3f88753acc174f2d37b774fbbdd28
|
||||
F src/sqliteInt.h 37f1a9a3266aa7b11126585314cd98cf11ba6f174b1244de2221270107ea754d
|
||||
@ -1628,7 +1628,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P dd55af30b4440bba1b97c2155b9f499d791cd7d8bae8341972c41439fdc41edc
|
||||
R 28a4b3f47ac9a6ed16a81e9fcc9e6dc7
|
||||
U dan
|
||||
Z 748ed88e39ac7ec5284cc27ded18a498
|
||||
P e34eafd4c5b2bbf2735e136ad69b67bb4288ad4d01a0128d8e107ac46209a182
|
||||
R daf6aa916562f77defe7fb8012cb61e0
|
||||
U drh
|
||||
Z 91228c779b3dd3fbfc53cd1f8eb1df59
|
||||
|
@ -1 +1 @@
|
||||
e34eafd4c5b2bbf2735e136ad69b67bb4288ad4d01a0128d8e107ac46209a182
|
||||
9111ac69bf307997e590bc9459222661fc79f549b3c493168a654a5046e6e4ad
|
103
src/sqlite.h.in
103
src/sqlite.h.in
@ -4268,6 +4268,28 @@ int sqlite3_data_count(sqlite3_stmt *pStmt);
|
||||
** KEYWORDS: {column access functions}
|
||||
** METHOD: sqlite3_stmt
|
||||
**
|
||||
** <b>Summary:</b>
|
||||
** <blockquote><table border=0 cellpadding=0 cellspacing=0>
|
||||
** <tr><td><b>sqlite3_column_blob</b><td>→<td>BLOB result
|
||||
** <tr><td><b>sqlite3_column_double</b><td>→<td>REAL result
|
||||
** <tr><td><b>sqlite3_column_int</b><td>→<td>32-bit INTEGER result
|
||||
** <tr><td><b>sqlite3_column_int64</b><td>→<td>64-bit INTEGER result
|
||||
** <tr><td><b>sqlite3_column_text</b><td>→<td>UTF-8 TEXT result
|
||||
** <tr><td><b>sqlite3_column_text16</b><td>→<td>UTF-16 TEXT result
|
||||
** <tr><td><b>sqlite3_column_value</b><td>→<td>The result as an
|
||||
** [sqlite3_value|unprotected sqlite3_value] object.
|
||||
** <tr><td> <td> <td>
|
||||
** <tr><td><b>sqlite3_column_bytes</b><td>→<td>Size of a BLOB
|
||||
** or a UTF-8 TEXT result in bytes
|
||||
** <tr><td><b>sqlite3_column_bytes16 </b>
|
||||
** <td>→ <td>Size of UTF-16
|
||||
** TEXT in bytes
|
||||
** <tr><td><b>sqlite3_column_type</b><td>→<td>Default
|
||||
** datatype of the result
|
||||
** </table></blockquote>
|
||||
**
|
||||
** <b>Details:</b>
|
||||
**
|
||||
** ^These routines return information about a single column of the current
|
||||
** result row of a query. ^In every case the first argument is a pointer
|
||||
** to the [prepared statement] that is being evaluated (the [sqlite3_stmt*]
|
||||
@ -4289,16 +4311,29 @@ int sqlite3_data_count(sqlite3_stmt *pStmt);
|
||||
** are called from a different thread while any of these routines
|
||||
** are pending, then the results are undefined.
|
||||
**
|
||||
** The first six interfaces (_blob, _double, _int, _int64, _text, and _text16)
|
||||
** each return the value of a result column in a specific data format. If
|
||||
** the result column is not initially in the requested format (for example,
|
||||
** if the query returns an integer but the sqlite3_column_text() interface
|
||||
** is used to extract the value) then an automatic type conversion is performed.
|
||||
**
|
||||
** ^The sqlite3_column_type() routine returns the
|
||||
** [SQLITE_INTEGER | datatype code] for the initial data type
|
||||
** of the result column. ^The returned value is one of [SQLITE_INTEGER],
|
||||
** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL]. The value
|
||||
** returned by sqlite3_column_type() is only meaningful if no type
|
||||
** conversions have occurred as described below. After a type conversion,
|
||||
** the value returned by sqlite3_column_type() is undefined. Future
|
||||
** [SQLITE_FLOAT], [SQLITE_TEXT], [SQLITE_BLOB], or [SQLITE_NULL].
|
||||
** The return value of sqlite3_column_type() can be used to decide which
|
||||
** of the first six interface should be used to extract the column value.
|
||||
** The value returned by sqlite3_column_type() is only meaningful if no
|
||||
** automatic type conversions have occurred for the value in question.
|
||||
** After a type conversion, the result of calling sqlite3_column_type()
|
||||
** is undefined, though harmless. Future
|
||||
** versions of SQLite may change the behavior of sqlite3_column_type()
|
||||
** following a type conversion.
|
||||
**
|
||||
** If the result is a BLOB or a TEXT string, then the sqlite3_column_bytes()
|
||||
** or sqlite3_column_bytes16() interfaces can be used to determine the size
|
||||
** of that BLOB or string.
|
||||
**
|
||||
** ^If the result is a BLOB or UTF-8 string then the sqlite3_column_bytes()
|
||||
** routine returns the number of bytes in that BLOB or string.
|
||||
** ^If the result is a UTF-16 string, then sqlite3_column_bytes() converts
|
||||
@ -4335,9 +4370,13 @@ int sqlite3_data_count(sqlite3_stmt *pStmt);
|
||||
** [sqlite3_column_value()] is used in any other way, including calls
|
||||
** to routines like [sqlite3_value_int()], [sqlite3_value_text()],
|
||||
** or [sqlite3_value_bytes()], the behavior is not threadsafe.
|
||||
** Hence, the sqlite3_column_value() interface
|
||||
** is normally only useful within the implementation of
|
||||
** [application-defined SQL functions] or [virtual tables], not within
|
||||
** top-level application code.
|
||||
**
|
||||
** These routines attempt to convert the value where appropriate. ^For
|
||||
** example, if the internal representation is FLOAT and a text result
|
||||
** The these routines may attempt to convert the datatype of the result.
|
||||
** ^For example, if the internal representation is FLOAT and a text result
|
||||
** is requested, [sqlite3_snprintf()] is used internally to perform the
|
||||
** conversion automatically. ^(The following table details the conversions
|
||||
** that are applied:
|
||||
@ -4409,7 +4448,7 @@ int sqlite3_data_count(sqlite3_stmt *pStmt);
|
||||
** ^The pointers returned are valid until a type conversion occurs as
|
||||
** described above, or until [sqlite3_step()] or [sqlite3_reset()] or
|
||||
** [sqlite3_finalize()] is called. ^The memory space used to hold strings
|
||||
** and BLOBs is freed automatically. Do <em>not</em> pass the pointers returned
|
||||
** and BLOBs is freed automatically. Do not pass the pointers returned
|
||||
** from [sqlite3_column_blob()], [sqlite3_column_text()], etc. into
|
||||
** [sqlite3_free()].
|
||||
**
|
||||
@ -4420,15 +4459,15 @@ int sqlite3_data_count(sqlite3_stmt *pStmt);
|
||||
** [SQLITE_NOMEM].)^
|
||||
*/
|
||||
const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
|
||||
double sqlite3_column_double(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_int(sqlite3_stmt*, int iCol);
|
||||
sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
|
||||
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
|
||||
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_type(sqlite3_stmt*, int iCol);
|
||||
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
|
||||
int sqlite3_column_type(sqlite3_stmt*, int iCol);
|
||||
|
||||
/*
|
||||
** CAPI3REF: Destroy A Prepared Statement Object
|
||||
@ -4662,21 +4701,39 @@ SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
|
||||
** CAPI3REF: Obtaining SQL Values
|
||||
** METHOD: sqlite3_value
|
||||
**
|
||||
** The C-language implementation of SQL functions and aggregates uses
|
||||
** this set of interface routines to access the parameter values on
|
||||
** the function or aggregate.
|
||||
** <b>Summary:</b>
|
||||
** <blockquote><table border=0 cellpadding=0 cellspacing=0>
|
||||
** <tr><td><b>sqlite3_value_blob</b><td>→<td>BLOB value
|
||||
** <tr><td><b>sqlite3_value_double</b><td>→<td>REAL value
|
||||
** <tr><td><b>sqlite3_value_int</b><td>→<td>32-bit INTEGER value
|
||||
** <tr><td><b>sqlite3_value_int64</b><td>→<td>64-bit INTEGER value
|
||||
** <tr><td><b>sqlite3_value_text</b><td>→<td>UTF-8 TEXT value
|
||||
** <tr><td><b>sqlite3_value_text16</b><td>→<td>UTF-16 TEXT value in
|
||||
** the native byteorder
|
||||
** <tr><td><b>sqlite3_value_text16be</b><td>→<td>UTF-16be TEXT value
|
||||
** <tr><td><b>sqlite3_value_text16le</b><td>→<td>UTF-16le TEXT value
|
||||
** <tr><td> <td> <td>
|
||||
** <tr><td><b>sqlite3_value_bytes</b><td>→<td>Size of a BLOB
|
||||
** or a UTF-8 TEXT in bytes
|
||||
** <tr><td><b>sqlite3_value_bytes16 </b>
|
||||
** <td>→ <td>Size of UTF-16
|
||||
** TEXT in bytes
|
||||
** <tr><td><b>sqlite3_value_type</b><td>→<td>Default
|
||||
** datatype of the value
|
||||
** <tr><td><b>sqlite3_value_numeric_type </b>
|
||||
** <td>→ <td>Best numeric datatype of the value
|
||||
** </table></blockquote>
|
||||
**
|
||||
** The xFunc (for scalar functions) or xStep (for aggregates) parameters
|
||||
** to [sqlite3_create_function()] and [sqlite3_create_function16()]
|
||||
** define callbacks that implement the SQL functions and aggregates.
|
||||
** The 3rd parameter to these callbacks is an array of pointers to
|
||||
** [protected sqlite3_value] objects. There is one [sqlite3_value] object for
|
||||
** each parameter to the SQL function. These routines are used to
|
||||
** extract values from the [sqlite3_value] objects.
|
||||
** <b>Details:</b>
|
||||
**
|
||||
** This routine extract type, size, and content information from
|
||||
** [protected sqlite3_value] objects. Protected sqlite3_value objects
|
||||
** are used to pass parameter information into implementation of
|
||||
** [application-defined SQL functions] and [virtual tables].
|
||||
**
|
||||
** These routines work only with [protected sqlite3_value] objects.
|
||||
** Any attempt to use these routines on an [unprotected sqlite3_value]
|
||||
** object results in undefined behavior.
|
||||
** is not threadsafe.
|
||||
**
|
||||
** ^These routines work just like the corresponding [column access functions]
|
||||
** except that these routines take a single [protected sqlite3_value] object
|
||||
@ -4716,8 +4773,6 @@ SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int64,int),
|
||||
** the SQL function that supplied the [sqlite3_value*] parameters.
|
||||
*/
|
||||
const void *sqlite3_value_blob(sqlite3_value*);
|
||||
int sqlite3_value_bytes(sqlite3_value*);
|
||||
int sqlite3_value_bytes16(sqlite3_value*);
|
||||
double sqlite3_value_double(sqlite3_value*);
|
||||
int sqlite3_value_int(sqlite3_value*);
|
||||
sqlite3_int64 sqlite3_value_int64(sqlite3_value*);
|
||||
@ -4725,6 +4780,8 @@ const unsigned char *sqlite3_value_text(sqlite3_value*);
|
||||
const void *sqlite3_value_text16(sqlite3_value*);
|
||||
const void *sqlite3_value_text16le(sqlite3_value*);
|
||||
const void *sqlite3_value_text16be(sqlite3_value*);
|
||||
int sqlite3_value_bytes(sqlite3_value*);
|
||||
int sqlite3_value_bytes16(sqlite3_value*);
|
||||
int sqlite3_value_type(sqlite3_value*);
|
||||
int sqlite3_value_numeric_type(sqlite3_value*);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user