summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/sqlite3_get_table.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man3/sqlite3_get_table.3')
-rw-r--r--static/netbsd/man3/sqlite3_get_table.3122
1 files changed, 122 insertions, 0 deletions
diff --git a/static/netbsd/man3/sqlite3_get_table.3 b/static/netbsd/man3/sqlite3_get_table.3
new file mode 100644
index 00000000..6e3a30f9
--- /dev/null
+++ b/static/netbsd/man3/sqlite3_get_table.3
@@ -0,0 +1,122 @@
+.Dd January 24, 2024
+.Dt SQLITE3_GET_TABLE 3
+.Os
+.Sh NAME
+.Nm sqlite3_get_table ,
+.Nm sqlite3_free_table
+.Nd convenience routines for running queries
+.Sh SYNOPSIS
+.In sqlite3.h
+.Ft int
+.Fo sqlite3_get_table
+.Fa "sqlite3 *db"
+.Fa "const char *zSql"
+.Fa "char ***pazResult"
+.Fa "int *pnRow"
+.Fa "int *pnColumn"
+.Fa "char **pzErrmsg"
+.Fc
+.Ft void
+.Fo sqlite3_free_table
+.Fa "char **result"
+.Fc
+.Sh DESCRIPTION
+This is a legacy interface that is preserved for backwards compatibility.
+Use of this interface is not recommended.
+.Pp
+Definition: A \fBresult table\fP is memory data structure created by the
+.Fn sqlite3_get_table
+interface.
+A result table records the complete query results from one or more
+queries.
+.Pp
+The table conceptually has a number of rows and columns.
+But these numbers are not part of the result table itself.
+These numbers are obtained separately.
+Let N be the number of rows and M be the number of columns.
+.Pp
+A result table is an array of pointers to zero-terminated UTF-8 strings.
+There are (N+1)*M elements in the array.
+The first M pointers point to zero-terminated strings that contain
+the names of the columns.
+The remaining entries all point to query results.
+NULL values result in NULL pointers.
+All other values are in their UTF-8 zero-terminated string representation
+as returned by
+.Fn sqlite3_column_text .
+A result table might consist of one or more memory allocations.
+It is not safe to pass a result table directly to
+.Fn sqlite3_free .
+A result table should be deallocated using
+.Fn sqlite3_free_table .
+As an example of the result table format, suppose a query result is
+as follows:
+.Bd -ragged
+.Bd -literal
+Name | Age ----------------------- Alice | 43 Bob
+| 28 Cindy | 21
+.Ed
+.Pp
+.Ed
+.Pp
+There are two columns (M==2) and three rows (N==3).
+Thus the result table has 8 entries.
+Suppose the result table is stored in an array named azResult.
+Then azResult holds this content:
+.Bd -ragged
+.Bd -literal
+azResult[0] = "Name"; azResult[1] = "Age"; azResult[2] = "Alice"; azResult[3]
+= "43"; azResult[4] = "Bob"; azResult[5] = "28"; azResult[6] = "Cindy";
+azResult[7] = "21";
+.Ed
+.Pp
+.Ed
+.Pp
+The sqlite3_get_table() function evaluates one or more semicolon-separated
+SQL statements in the zero-terminated UTF-8 string of its 2nd parameter
+and returns a result table to the pointer given in its 3rd parameter.
+.Pp
+After the application has finished with the result from sqlite3_get_table(),
+it must pass the result table pointer to sqlite3_free_table() in order
+to release the memory that was malloced.
+Because of the way the
+.Fn sqlite3_malloc
+happens within sqlite3_get_table(), the calling function must not try
+to call
+.Fn sqlite3_free
+directly.
+Only
+.Fn sqlite3_free_table
+is able to release the memory properly and safely.
+.Pp
+The sqlite3_get_table() interface is implemented as a wrapper around
+.Fn sqlite3_exec .
+The sqlite3_get_table() routine does not have access to any internal
+data structures of SQLite.
+It uses only the public interface defined here.
+As a consequence, errors that occur in the wrapper layer outside of
+the internal
+.Fn sqlite3_exec
+call are not reflected in subsequent calls to
+.Fn sqlite3_errcode
+or
+.Fn sqlite3_errmsg .
+.Sh IMPLEMENTATION NOTES
+These declarations were extracted from the
+interface documentation at line 2865.
+.Bd -literal
+SQLITE_API int sqlite3_get_table(
+ sqlite3 *db, /* An open database */
+ const char *zSql, /* SQL to be evaluated */
+ char ***pazResult, /* Results of the query */
+ int *pnRow, /* Number of result rows written here */
+ int *pnColumn, /* Number of result columns written here */
+ char **pzErrmsg /* Error msg written here */
+);
+SQLITE_API void sqlite3_free_table(char **result);
+.Ed
+.Sh SEE ALSO
+.Xr sqlite3_column_blob 3 ,
+.Xr sqlite3_errcode 3 ,
+.Xr sqlite3_exec 3 ,
+.Xr sqlite3_malloc 3