!E      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None@ACMa$= direct-sqliteThe Database.SQLite3 and Database.SQLite3.Directa modules use higher-level representations of some types than those used in the FFI signatures (Database.SQLite3.Bindings/). This typeclass helps with the conversions. direct-sqlite (https://www.sqlite.org/c3ref/c_blob.html direct-sqlite )https://www.sqlite.org/c3ref/c_abort.html  direct-sqlite@Index of an argument to a custom function. Indices start from 0.  direct-sqlite3Number of arguments of a user defined SQL function.  direct-sqlite *https://www.sqlite.org/c3ref/c_static.htmlPtr CDestructor = sqlite3_destructor_type direct-sqlite"Number of columns in a result set. direct-sqlite@Index of a column in a result set. Column indices start from 0. direct-sqliteOIndex of a parameter in a parameterized query. Parameter indices start from 1.When a query is Zd, SQLite allocates an array indexed from 1 to the highest parameter index. For example: X>Right stmt <- prepare conn "SELECT ?1, ?5, ?3, ?" >bindParameterCount stmt ParamIndex 61This will allocate an array indexed from 1 to 6 (?{ takes the highest preceding index plus one). The array is initialized with null values. When you bind a parameter with 2, it assigns a new value to one of these indices.See  .https://www.sqlite.org/lang_expr.html#varparamS for the syntax of parameter placeholders, and how parameter indices are assigned. direct-sqlite (https://www.sqlite.org/c3ref/backup.htmlCBackup = sqlite3_backup direct-sqlite &https://www.sqlite.org/c3ref/blob.htmlCBlob =  sqlite3_blob direct-sqlite )https://www.sqlite.org/c3ref/context.htmlCContext = sqlite3_context direct-sqlite 'https://www.sqlite.org/c3ref/value.htmlCValue =  sqlite3_value direct-sqlite &https://www.sqlite.org/c3ref/stmt.html CStatement =  sqlite3_stmt direct-sqlite )https://www.sqlite.org/c3ref/sqlite3.html CDatabase = sqlite3 direct-sqlite (https://www.sqlite.org/c3ref/c_blob.html% direct-sqlite )https://www.sqlite.org/c3ref/c_abort.html& direct-sqliteSuccessful result' direct-sqliteSQL error or missing database( direct-sqliteInternal logic error in SQLite) direct-sqliteAccess permission denied* direct-sqlite#Callback routine requested an abort+ direct-sqliteThe database file is locked, direct-sqlite!A table in the database is locked- direct-sqliteA malloc() failed. direct-sqlite$Attempt to write a readonly database/ direct-sqliteOperation terminated by sqlite3_interrupt()0 direct-sqlite$Some kind of disk I/O error occurred1 direct-sqlite$The database disk image is malformed2 direct-sqliteUnknown opcode in sqlite3_file_control()3 direct-sqlite)Insertion failed because database is full4 direct-sqlite Unable to open the database file5 direct-sqliteDatabase lock protocol error6 direct-sqliteDatabase is empty7 direct-sqliteThe database schema changed8 direct-sqlite!String or BLOB exceeds size limit9 direct-sqlite!Abort due to constraint violation: direct-sqliteData type mismatch; direct-sqliteLibrary used incorrectly< direct-sqlite&Uses OS features not supported on host= direct-sqliteAuthorization denied> direct-sqliteAuxiliary database format error? direct-sqlite*2nd parameter to sqlite3_bind out of range@ direct-sqlite'File opened that is not a database fileA direct-sqlite Notifications from sqlite3_log()B direct-sqliteWarnings from sqlite3_log()C direct-sqlitesqlite3_step() has another row readyD direct-sqlitesqlite3_step() has finished executingE direct-sqliteHTells SQLite3 that the content pointer is constant and will never changeF direct-sqlite6Tells SQLite3 to make its own private copy of the dataH direct-sqliteDTells SQLite3 that the defined custom SQL function is deterministic.I direct-sqliteNote that this is a partial function. If the error code is invalid, or perhaps introduced in a newer version of SQLite but this library has not been updated to support it, the result is undefined.To be clear, if I fails, it is undefined behavior#, not an exception you can handle.Therefore, do not use direct-sqlite with a different version of SQLite than the one bundled (currently, 3.24.0). If you do, ensure that I and K are still exhaustive.K direct-sqlite+Note that this is a partial function. See I for more information.M direct-sqliteBLimit min/max bounds to fit into SQLite's native parameter ranges.N direct-sqliteEThis just shows the underlying integer, without the data constructor.O direct-sqliteBLimit min/max bounds to fit into SQLite's native parameter ranges.P direct-sqliteEThis just shows the underlying integer, without the data constructor.Q direct-sqliteEThis just shows the underlying integer, without the data constructor.R direct-sqliteEThis just shows the underlying integer, without the data constructor.T direct-sqliteEThis just shows the underlying integer, without the data constructor.V direct-sqliteEThis just shows the underlying integer, without the data constructor.M  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMIJ%&'()*+,-./0123456789:;<=>?@ABCDKL !"#$  EFG HNone؎H direct-sqlite Fhttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backuppagecount direct-sqlite Fhttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupremaining direct-sqlite Ahttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupstep direct-sqlite Chttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish direct-sqlite Ahttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupinit direct-sqlite ,https://www.sqlite.org/c3ref/blob_write.html direct-sqlite +https://www.sqlite.org/c3ref/blob_read.html direct-sqlite ,https://www.sqlite.org/c3ref/blob_bytes.html direct-sqlite -https://www.sqlite.org/c3ref/blob_reopen.html direct-sqlite ,https://www.sqlite.org/c3ref/blob_close.html direct-sqlite +https://www.sqlite.org/c3ref/blob_open.html direct-sqlite *https://www.sqlite.org/c3ref/wal_hook.html direct-sqlite 3https://sqlite.org/c3ref/enable_load_extension.html direct-sqlite "https://sqlite.org/c3ref/free.html direct-sqlite "https://sqlite.org/c3ref/free.html direct-sqlite 2https://www.sqlite.org/c3ref/create_collation.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite -https://www.sqlite.org/c3ref/result_blob.html direct-sqlite ,https://www.sqlite.org/c3ref/value_blob.html direct-sqlite ,https://www.sqlite.org/c3ref/value_blob.html direct-sqlite ,https://www.sqlite.org/c3ref/value_blob.html direct-sqlite ,https://www.sqlite.org/c3ref/value_blob.html direct-sqlite ,https://www.sqlite.org/c3ref/value_blob.html direct-sqlite ,https://www.sqlite.org/c3ref/value_blob.html direct-sqlite 3https://www.sqlite.org/c3ref/aggregate_context.html direct-sqlite 3https://www.sqlite.org/c3ref/context_db_handle.html direct-sqlite +https://www.sqlite.org/c3ref/user_data.html direct-sqlite -https://sqlite.org/c3ref/create_function.html direct-sqlite /https://www.sqlite.org/c3ref/total_changes.html direct-sqlite )https://www.sqlite.org/c3ref/changes.html direct-sqlite 3https://www.sqlite.org/c3ref/last_insert_rowid.html direct-sqlite -https://www.sqlite.org/c3ref/column_blob.html direct-sqlite -https://www.sqlite.org/c3ref/column_blob.html direct-sqlite -https://www.sqlite.org/c3ref/column_blob.html direct-sqlite -https://www.sqlite.org/c3ref/column_blob.html direct-sqlite -https://www.sqlite.org/c3ref/column_blob.html direct-sqlite -https://www.sqlite.org/c3ref/column_blob.html direct-sqlite +https://www.sqlite.org/c3ref/bind_blob.html direct-sqlite +https://www.sqlite.org/c3ref/bind_blob.html direct-sqlite +https://www.sqlite.org/c3ref/bind_blob.html direct-sqlite +https://www.sqlite.org/c3ref/bind_blob.html direct-sqlite +https://www.sqlite.org/c3ref/bind_blob.html direct-sqlite +https://www.sqlite.org/c3ref/bind_blob.html direct-sqlite -https://www.sqlite.org/c3ref/column_name.html direct-sqlite .https://www.sqlite.org/c3ref/column_count.html direct-sqlite 6https://www.sqlite.org/c3ref/bind_parameter_index.html direct-sqlite 5https://www.sqlite.org/c3ref/bind_parameter_name.html direct-sqlite 6https://www.sqlite.org/c3ref/bind_parameter_count.htmlThis returns the index of the largest (rightmost) parameter, which is not necessarily the number of parameters. If numbered parameters like ?5* are used, there may be gaps in the list. direct-sqlite %https://www.sqlite.org/c3ref/sql.html direct-sqlite 0https://www.sqlite.org/c3ref/clear_bindings.html?A look at the source reveals that this function always returns  SQLITE_OK. direct-sqlite *https://www.sqlite.org/c3ref/finalize.htmlWarning: If the most recent = call failed, this will return the corresponding error code. direct-sqlite 'https://www.sqlite.org/c3ref/reset.htmlWarning: If the most recent = call failed, this will return the corresponding error code. direct-sqlite &https://www.sqlite.org/c3ref/step.html direct-sqlite &https://www.sqlite.org/c3ref/step.html direct-sqlite +https://www.sqlite.org/c3ref/db_handle.html direct-sqlite )https://www.sqlite.org/c3ref/prepare.html6If the query contains no SQL statements, this returns  SQLITE_OK and sets the   to null. direct-sqliteDA couple important things to know about callbacks from Haskell code:5If the callback throws an exception, apparently, the  whole program is terminated.Remember to call A when you are done with the wrapper, to avoid leaking memory. direct-sqlite &https://www.sqlite.org/c3ref/exec.html direct-sqlite 5https://www.sqlite.org/c3ref/enable_shared_cache.html direct-sqlite 0https://www.sqlite.org/c3ref/get_autocommit.html direct-sqlite )https://www.sqlite.org/c3ref/profile.html direct-sqlite +https://www.sqlite.org/c3ref/interrupt.html direct-sqlite )https://www.sqlite.org/c3ref/errcode.html direct-sqlite )https://www.sqlite.org/c3ref/errcode.html direct-sqlite 'https://www.sqlite.org/c3ref/close.html direct-sqlite &https://www.sqlite.org/c3ref/open.htmlThis sets the 'Ptr CDatabase' even on failure.  direct-sqliteUUTF-8 rendering of the SQL statement text as the statement first begins executing. direct-sqliteNNumber of columns, which is the number of elements in the following arrays. direct-sqlite*Array of column values, as returned by 3. Null values are represented as null pointers. direct-sqliteArray of column names direct-sqlite*If the callback returns non-zero, then  returns  SQLITE_ABORT (*). direct-sqliteDestination database handle. direct-sqliteDestination database name. direct-sqliteSource database handle. direct-sqliteSource database name. direct-sqliteDatabase name. direct-sqlite Table name. direct-sqlite Column name. direct-sqlite Row ROWID. direct-sqliteFlags. direct-sqlite(OUT: Blob handle, will be NULL on error. direct-sqliteName of the collation. direct-sqliteText encoding. direct-sqlite User data. direct-sqliteName of the function. direct-sqliteNumber of arguments. direct-sqlite2Preferred text encoding (also used to pass flags). direct-sqlite User data. direct-sqliteWarning: If this pointer is NULL<, this will bind a null value, rather than an empty text. direct-sqlite[Length, in bytes. If this is negative, the value is treated as a NUL-terminated string. direct-sqlite$Index of the SQL parameter to be set direct-sqliteValue to bind to the parameter.Warning: If this pointer is NULL<, this will bind a null value, rather than an empty blob. direct-sqlite-Length, in bytes. This must not be negative. direct-sqliteSQL statement, UTF-8 encoded. direct-sqliteMaximum length of the SQL statement, in bytes. If this is negative, then the SQL statement is treated as a NUL-terminated string. direct-sqlite.OUT: Statement handle. This must not be null. direct-sqlite'OUT: Pointer to unused portion of zSql. direct-sqliteSQL statement, UTF-8 encoded. direct-sqlite/Optional callback function called for each row. direct-sqliteContext passed to the callback. direct-sqliteOUT: Error message string. direct-sqlite/Optional callback function called for each row. direct-sqliteContext passed to the callback. direct-sqlite=Returns context pointer from previously. registered trace.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLUNoneMXN7 direct-sqlite&A handle for an online backup process. direct-sqlite6The type of blob handles used for incremental blob I/O direct-sqlite'The arguments of a custom SQL function. direct-sqlite7The context in which a custom SQL function is executed. direct-sqliteA 5 containing UTF8-encoded text with no NUL characters. direct-sqlite(There are still more pages to be copied. direct-sqlite#All pages were successfully copied. direct-sqliteLike unsafeUseAsCStringLenF, but if the string is empty, never pass the callback a null pointer. direct-sqlite &https://www.sqlite.org/c3ref/open.html direct-sqlite 'https://www.sqlite.org/c3ref/close.html direct-sqlite +https://www.sqlite.org/c3ref/interrupt.html#Cause any pending operation on the  handle to stop at its earliest opportunity. This simply sets a flag and returns immediately. It does not wait for the pending operation to finish.You'll need to compile with  -threaded# for this to do any good. Without  -threaded), FFI calls block the whole RTS, meaning & would never run at the same time as . direct-sqlite )https://www.sqlite.org/c3ref/errcode.html direct-sqlite )https://www.sqlite.org/c3ref/errcode.html direct-sqlite &https://www.sqlite.org/c3ref/exec.html direct-sqliteLike ., but invoke the callback for each result row.=If the callback throws an exception, it will be rethrown by . direct-sqlite )https://www.sqlite.org/c3ref/profile.htmlNEnable/disable tracing of SQL execution. Tracing can be disabled by setting  as the logger callback.pWarning: If the logger callback throws an exception, your whole program will crash. Enable only for debugging! direct-sqlite 0https://www.sqlite.org/c3ref/get_autocommit.htmlReturn - if the connection is in autocommit mode, or  if a transaction started with BEGIN is still active.NBe warned that some errors roll back the transaction automatically, and that ROLLBACK7 will throw an error if no transaction is active. Use  to avoid such an error:  autocommit <-  conn  (not autocommit) $   conn "ROLLBACK"  direct-sqlite 5https://www.sqlite.org/c3ref/enable_shared_cache.html:Enable or disable shared cache for all future connections. direct-sqlite )https://www.sqlite.org/c3ref/prepare.html7If the query contains no SQL statements, this returns  . direct-sqlite +https://www.sqlite.org/c3ref/db_handle.html direct-sqlite &https://www.sqlite.org/c3ref/step.html direct-sqlite &https://www.sqlite.org/c3ref/step.htmljFaster step for statements that don't callback to Haskell functions (e.g. by using custom SQL functions). direct-sqlite 'https://www.sqlite.org/c3ref/reset.htmlWarning:If the most recent ; call failed, this will return the corresponding error.BThis does not reset the bindings on a prepared statement. Use   to do that. direct-sqlite *https://www.sqlite.org/c3ref/finalize.htmlWarning: If the most recent 8 call failed, this will return the corresponding error.  direct-sqlite %https://www.sqlite.org/c3ref/sql.htmlEReturn a copy of the original SQL text used to compile the statement.  direct-sqlite 0https://www.sqlite.org/c3ref/clear_bindings.html5Set all parameters in the prepared statement to null.  direct-sqlite 6https://www.sqlite.org/c3ref/bind_parameter_count.htmlThis returns the index of the largest (rightmost) parameter. Note that this is not necessarily the number of parameters. If numbered parameters like ?5) are used, there may be gaps in the list.See  for more information.  direct-sqlite 5https://www.sqlite.org/c3ref/bind_parameter_name.html  direct-sqlite 6https://www.sqlite.org/c3ref/bind_parameter_index.html direct-sqlite .https://www.sqlite.org/c3ref/column_count.html direct-sqlite -https://www.sqlite.org/c3ref/column_name.html direct-sqlite 3https://www.sqlite.org/c3ref/last_insert_rowid.html direct-sqlite )https://www.sqlite.org/c3ref/changes.htmlVReturn the number of rows that were changed, inserted, or deleted by the most recent INSERT, DELETE, or UPDATE statement. direct-sqlite /https://www.sqlite.org/c3ref/total_changes.html1Return the total number of row changes caused by INSERT, DELETE, or UPDATE statements since the  was opened. direct-sqlite -https://sqlite.org/c3ref/create_function.htmlOCreate a custom SQL function or redefine the behavior of an existing function. direct-sqliteLike . except that it creates an aggregate function.  direct-sqlite-Delete an SQL function (scalar or aggregate).- direct-sqlite 3https://www.sqlite.org/c3ref/context_db_handle.html direct-sqlite`Deallocate the function pointer to the comparison function used to implement a custom collation direct-sqliteIThis is called by sqlite so we create one global FunPtr to pass to sqlite. direct-sqlite 2https://www.sqlite.org/c3ref/create_collation.html/ direct-sqliteDelete a collation.0 direct-sqlite 7https://www.sqlite.org/c3ref/enable_load_extension.html$Enable or disable extension loading.1 direct-sqlite +https://www.sqlite.org/c3ref/blob_open.html Open a blob for incremental I/O.2 direct-sqlite ,https://www.sqlite.org/c3ref/blob_close.html3 direct-sqlite -https://www.sqlite.org/c3ref/blob_reopen.html4 direct-sqlite ,https://www.sqlite.org/c3ref/blob_bytes.html5 direct-sqlite +https://www.sqlite.org/c3ref/blob_read.html7 direct-sqlite ,https://www.sqlite.org/c3ref/blob_write.html8 direct-sqlite Ahttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupinit9 direct-sqlite Chttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish: direct-sqlite Ahttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupstep; direct-sqlite Fhttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupremaining< direct-sqlite Fhttps://www.sqlite.org/c3ref/backup_finish.html#sqlite3backuppagecount= direct-sqlite fromString = Utf8 .  .   direct-sqlitesNumber of columns, which is the number of items in the following lists. This will be the same for every row. direct-sqlite>List of column names. This will be the same for every row. direct-sqlite&List of column values, as returned by . direct-sqliteName of the function. direct-sqliteNumber of arguments. < means that the function accepts any number of arguments. direct-sqliteIs the function deterministic? direct-sqliteImplementation of the function. direct-sqliteName of the function. direct-sqliteNumber of arguments. direct-sqliteInitial aggregate state. direct-sqlite/Process one row and update the aggregate state. direct-sqlitevCalled after all rows have been processed. Can be used to construct the returned value from the aggregate state.. direct-sqliteName of the collation. direct-sqliteComparison function.1 direct-sqlite0The symbolic name of the database (e.g. "main"). direct-sqliteThe table name. direct-sqliteThe column name. direct-sqliteThe ROWID of the row. direct-sqliteOpen the blob for read-write.3 direct-sqliteThe ROWID of the row.5 direct-sqliteNumber of bytes to read. direct-sqliteOffset within the blob.7 direct-sqliteOffset within the blob.8 direct-sqliteDestination database handle. direct-sqliteDestination database name. direct-sqliteSource database handle. direct-sqliteSource database name.: direct-sqliteLNumber of pages to copy; if negative, all remaining source pages are copied.  !"#$%&'()*+,-./0123456789:;<=>?@ABCD      !"#$%&'()*+,-./0123456789:;<     0 !"#$%&'()*+,-./123456789:;< !"#$%&'()*+,-./0123456789:;<=>?@ABCD None2"R direct-sqlite/Exception thrown when SQLite3 reports an error.Hdirect-sqlite may throw other types of exceptions if you misuse the API.T direct-sqliteError code returned by API callU direct-sqliteText describing the errorV direct-sqlite3Indicates what action produced this error, e.g. exec "SELECT * FROM foo" direct-sqliteLike  decodeUtf8;, but substitute a custom error message if decoding fails.] direct-sqlite &https://www.sqlite.org/c3ref/open.html^ direct-sqlite 'https://www.sqlite.org/c3ref/close.html_ direct-sqliteMake it possible to interrupt the given database operation with an asynchronous exception. This only works if the program is compiled with base >= 4.3 and  -threaded.OIt works by running the callback in a forked thread. If interrupted, it uses  to try to stop the operation.` direct-sqlite<Execute zero or more SQL statements delimited by semicolons.a direct-sqliteLike `, but print result rows to  .gThis is mainly for convenience when experimenting in GHCi. The output format may change in the future.b direct-sqliteLike `., but invoke the callback for each result row.c direct-sqlite )https://www.sqlite.org/c3ref/prepare.htmlUnlike `, cG only executes the first statement, and ignores subsequent statements.5If the query string contains no SQL statements, this s.d direct-sqlite )https://www.sqlite.org/c3ref/prepare.htmlPIt can help to avoid redundant Utf8 to Text conversion if you already have Utf85If the query string contains no SQL statements, this s.e direct-sqlite &https://www.sqlite.org/c3ref/step.htmlf direct-sqlite &https://www.sqlite.org/c3ref/step.htmljFaster step for statements that don't callback to Haskell functions (e.g. by using custom SQL functions).g direct-sqlite 'https://www.sqlite.org/c3ref/reset.htmlNote that in the C API,  sqlite3_reset+ returns an error code if the most recent  sqlite3_step@ indicated an error. We do not replicate that behavior here. g never throws an exception.h direct-sqlite *https://www.sqlite.org/c3ref/finalize.htmlLike g, h never throws an exception.i direct-sqlite 5https://www.sqlite.org/c3ref/bind_parameter_name.html#Return the N-th SQL parameter name.@Named parameters are returned as-is. E.g. ":v" is returned as  Just ":v"2. Unnamed parameters, however, are converted to Nothing.1Note that the parameter index starts at 1, not 0.j direct-sqlite -https://www.sqlite.org/c3ref/column_name.htmlRReturn the name of a result column. If the column index is out of range, return .r direct-sqlite"If the index is not between 1 and   inclusive, this fails with ?\. Otherwise, it succeeds, even if the query skips this index by using numbered parameters.Example: $> stmt <- prepare conn "SELECT ?1, ?3, ?5" > bindSQLData stmt 1 (SQLInteger 1) > bindSQLData stmt 2 (SQLInteger 2) > bindSQLData stmt 6 (SQLInteger 6) *** Exception: SQLite3 returned ErrorRange while attempting to perform bind int64. > step stmt >> columns stmt [SQLInteger 1,SQLNull,SQLNull]s direct-sqliteGConvenience function for binding values to all parameters. This will 0 if the list has the wrong number of parameters.t direct-sqliteLConvenience function for binding named values to all parameters. This will O if the list has the wrong number of parameters or if an unknown name is used.Example: jstmt <- prepare conn "SELECT :foo + :bar" bindNamed stmt [(":foo", SQLInteger 1), (":bar", SQLInteger 2)] u direct-sqliteThis will throw a T if the datum contains invalid UTF-8. If this behavior is undesirable, you can use  from Database.SQLite3.Direct', which does not perform conversion to .x direct-sqliteThis avoids extra API calls using the list of column types. If passed types do not correspond to the actual types, the values will be converted according to the rules at  -https://www.sqlite.org/c3ref/column_blob.htmlS. If the list contains more items that number of columns, the result is undefined.y direct-sqlite -https://sqlite.org/c3ref/create_function.htmlCreate a custom SQL function or redefine the behavior of an existing function. If the function is deterministic, i.e. if it always returns the same result given the same input, you can set the boolean flag to let sqlite" perform additional optimizations.z direct-sqliteLike y. except that it creates an aggregate function.{ direct-sqlite-Delete an SQL function (scalar or aggregate). direct-sqlite 2https://www.sqlite.org/c3ref/create_collation.html direct-sqliteDelete a collation. direct-sqlite +https://www.sqlite.org/c3ref/blob_open.html Open a blob for incremental I/O. direct-sqlite ,https://www.sqlite.org/c3ref/blob_close.html direct-sqlite -https://www.sqlite.org/c3ref/blob_reopen.html direct-sqlite +https://www.sqlite.org/c3ref/blob_read.html direct-sqlite ,https://www.sqlite.org/c3ref/blob_write.html Q direct-sqlitesNumber of columns, which is the number of items in the following lists. This will be the same for every row. direct-sqlite>List of column names. This will be the same for every row. direct-sqlite&List of column values, as returned by u.y direct-sqliteName of the function. direct-sqliteNumber of arguments. < means that the function accepts any number of arguments. direct-sqliteIs the function deterministic? direct-sqliteImplementation of the function.z direct-sqliteName of the function. direct-sqliteNumber of arguments. direct-sqliteInitial aggregate state. direct-sqlite/Process one row and update the aggregate state. direct-sqlitevCalled after all rows have been processed. Can be used to construct the returned value from the aggregate state. direct-sqliteName of the collation. direct-sqliteComparison function. direct-sqlite0The symbolic name of the database (e.g. "main"). direct-sqliteThe table name. direct-sqliteThe column name. direct-sqliteThe ROWID of the row. direct-sqliteOpen the blob for read-write. direct-sqliteThe ROWID of the row. direct-sqliteNumber of bytes to read. direct-sqliteOffset within the blob. direct-sqliteOffset within the blob. direct-sqliteDestination database handle. direct-sqliteDestination database name. direct-sqliteSource database handle. direct-sqliteSource database name.  !"#$%&'()*+,-./0123456789:;<=>?@ABCD  !"#$&'(*+,-4;<QRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~]^`abQcdefgh  ijrstnomqklpvwxuyz{!"#$|&}'(~*+,-_4;<WXYZ[\RSTUV !"#$%&'()*+,-./0123456789:;<=>?@ABCD    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKKLMNOPQRSTU VW   X  YZ[\]^#()+,-/01234_`abcdefdghijkldmnopqoprdstuvwxywz{|d}~ww+direct-sqlite-2.3.24-Ddmy20gHjXW1oJFP1AjLnxDatabase.SQLite3.Bindings.TypesDatabase.SQLite3.BindingsDatabase.SQLite3.DirectDatabase.SQLite3prepare bindSQLData Control.Monadwhenexec System.IOstdoutFFITypetoFFIfromFFI CColumnTypeCError CArgCountArgIndexArgCount CDestructor CNumBytes CColumnCount CColumnIndex CParamIndex ColumnCount ColumnIndex ParamIndexCBackupCBlobCContextCValue CStatement CDatabase ColumnType IntegerColumn FloatColumn TextColumn BlobColumn NullColumnErrorErrorOK ErrorError ErrorInternalErrorPermission ErrorAbort ErrorBusy ErrorLocked ErrorNoMemory ErrorReadOnlyErrorInterruptErrorIO ErrorCorrupt ErrorNotFound ErrorFullErrorCan'tOpen ErrorProtocol ErrorEmpty ErrorSchema ErrorTooBigErrorConstraint ErrorMismatch ErrorMisuseErrorNoLargeFileSupportErrorAuthorization ErrorFormat ErrorRangeErrorNotADatabase ErrorNotice ErrorWarningErrorRow ErrorDonec_SQLITE_STATICc_SQLITE_TRANSIENT c_SQLITE_UTF8c_SQLITE_DETERMINISTIC decodeError encodeErrordecodeColumnTypeencodeColumnType$fBoundedParamIndex$fShowParamIndex$fBoundedColumnIndex$fShowColumnIndex$fShowCParamIndex$fShowCColumnIndex$fBoundedArgCount$fShowArgCount$fBoundedCArgCount$fShowCArgCount$fFFITypeArgCountCArgCount$fFFITypeColumnTypeCColumnType$fFFITypeErrorCError $fFFITypeColumnIndexCColumnIndex$fFFITypeParamIndexCParamIndex $fEqError $fShowError$fEqColumnType$fShowColumnType$fEqParamIndex$fOrdParamIndex$fEnumParamIndex$fNumParamIndex$fRealParamIndex$fIntegralParamIndex$fEqColumnIndex$fOrdColumnIndex$fEnumColumnIndex$fNumColumnIndex$fRealColumnIndex$fIntegralColumnIndex$fEqCParamIndex$fOrdCParamIndex$fEnumCParamIndex$fNumCParamIndex$fRealCParamIndex$fIntegralCParamIndex$fEqCColumnIndex$fOrdCColumnIndex$fEnumCColumnIndex$fNumCColumnIndex$fRealCColumnIndex$fIntegralCColumnIndex $fEqCNumBytes$fOrdCNumBytes$fShowCNumBytes$fEnumCNumBytes$fNumCNumBytes$fRealCNumBytes$fIntegralCNumBytes $fEqArgCount $fOrdArgCount$fEnumArgCount $fNumArgCount$fRealArgCount$fIntegralArgCount $fEqCArgCount$fOrdCArgCount$fEnumCArgCount$fNumCArgCount$fRealCArgCount$fIntegralCArgCount $fEqCError $fShowCError$fEqCColumnType$fShowCColumnTypeCWalHookCCompare CFuncDestroy CFuncFinalCFuncCTraceCallback CExecCallbackc_sqlite3_backup_pagecountc_sqlite3_backup_remainingc_sqlite3_backup_stepc_sqlite3_backup_finishc_sqlite3_backup_initc_sqlite3_blob_writec_sqlite3_blob_readc_sqlite3_blob_bytesc_sqlite3_blob_reopenc_sqlite3_blob_closec_sqlite3_blob_open mkCWalHookc_sqlite3_wal_hookc_sqlite3_enable_load_extensionc_sqlite3_free_pc_sqlite3_free mkCComparec_sqlite3_create_collation_v2c_sqlite3_result_errorc_sqlite3_result_valuec_sqlite3_result_doublec_sqlite3_result_int64c_sqlite3_result_textc_sqlite3_result_zeroblobc_sqlite3_result_blobc_sqlite3_result_nullc_sqlite3_value_doublec_sqlite3_value_int64c_sqlite3_value_textc_sqlite3_value_blobc_sqlite3_value_bytesc_sqlite3_value_typec_sqlite3_aggregate_contextc_sqlite3_context_db_handlec_sqlite3_user_datamkCFuncDestroy mkCFuncFinalmkCFuncc_sqlite3_create_function_v2c_sqlite3_total_changesc_sqlite3_changesc_sqlite3_last_insert_rowidc_sqlite3_column_doublec_sqlite3_column_int64c_sqlite3_column_textc_sqlite3_column_blobc_sqlite3_column_bytesc_sqlite3_column_typec_sqlite3_bind_nullc_sqlite3_bind_int64c_sqlite3_bind_doublec_sqlite3_bind_textc_sqlite3_bind_zeroblobc_sqlite3_bind_blobc_sqlite3_column_namec_sqlite3_column_countc_sqlite3_bind_parameter_indexc_sqlite3_bind_parameter_namec_sqlite3_bind_parameter_count c_sqlite3_sqlc_sqlite3_clear_bindingsc_sqlite3_finalizec_sqlite3_resetc_sqlite3_step_unsafec_sqlite3_stepc_sqlite3_db_handlec_sqlite3_prepare_v2mkCTraceCallbackmkCExecCallbackc_sqlite3_execc_sqlite3_enable_shared_cachec_sqlite3_get_autocommitc_sqlite3_tracec_sqlite3_interruptc_sqlite3_errmsgc_sqlite3_errcodec_sqlite3_closec_sqlite3_open ExecCallbackBackupBlobFuncArgs FuncContextUtf8BackupStepResultBackupOK BackupDone StepResultRowDone StatementDatabaseopenclose interrupterrcodeerrmsgexecWithCallbacksetTrace getAutoCommitsetSharedCacheEnabledgetStatementDatabasestepstepNoCBresetfinalize statementSql clearBindingsbindParameterCountbindParameterNamebindParameterIndex columnCount columnName bindInt64 bindDoublebindTextbindBlob bindZeroBlobbindNull columnType columnInt64 columnDouble columnText columnBloblastInsertRowIdchanges totalChangescreateFunctioncreateAggregatedeleteFunction funcArgCount funcArgType funcArgInt64 funcArgDouble funcArgText funcArgBlobfuncResultInt64funcResultDoublefuncResultTextfuncResultBlobfuncResultZeroBlobfuncResultNullgetFuncContextDatabasecreateCollationdeleteCollationsetLoadExtensionEnabledblobOpen blobClose blobReopen blobBytesblobRead blobReadBuf blobWrite backupInit backupFinish backupStepbackupRemainingbackupPagecount$fIsStringUtf8 $fShowUtf8 $fEqDatabase$fShowDatabase $fEqStatement$fShowStatement$fEqStepResult$fShowStepResult$fEqBackupStepResult$fShowBackupStepResult$fEqUtf8 $fOrdUtf8$fSemigroupUtf8 $fMonoidUtf8$fEqFuncContext$fShowFuncContext$fEqBlob $fShowBlob $fEqBackup $fShowBackupSQLErrorsqlErrorsqlErrorDetailssqlErrorContextSQLData SQLIntegerSQLFloatSQLTextSQLBlobSQLNull interruptibly execPrint prepareUtf8bindIntbind bindNamedcolumncolumns typedColumnsfuncResultSQLData$fExceptionSQLError$fShowSQLError $fEqSQLData $fShowSQLData $fEqSQLErrorbaseGHC.PtrPtr Foreign.PtrfreeHaskellFunPtrbytestring-0.10.8.2Data.ByteString.Internal ByteStringunsafeUseAsCStringLenNoNull GHC.MaybeNothingghc-prim GHC.TypesTrueFalse Data.EitherRightdestroyCComparedestroyCComparePtr text-1.2.3.1Data.Text.Encoding encodeUtf8 Data.TextpackfromUtf8GHC.BasefailData.Text.Encoding.Error DecodeErrorData.Text.InternalText