Manage a connection to a database in an exception-safe way (with bracket)
Moduledirect-sqlite-2.3.29Haskell2010
Database.SQLite3
- 20 types
- 72 values
- Packagedirect-sqlite-2.3.29
- Exports92
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceSQLite3.hs
Connection management
4 declarationsSimple query execution
4 declarationsExecute zero or more SQL statements delimited by semicolons.
Like exec, but print result rows to System.IO.stdout.
This is mainly for convenience when experimenting in GHCi. The output format may change in the future.
Like exec, but invoke the callback for each result row.
Statement management
8 declarationswithStatement https://www.sqlite.org/c3ref/prepare.html
Unlike exec, prepare only executes the first statement, and ignores subsequent statements.
If the query string contains no SQL statements, this fails.
https://www.sqlite.org/c3ref/prepare.html
It can help to avoid redundant Utf8 to Text conversion if you already have Utf8
If the query string contains no SQL statements, this fails.
https://www.sqlite.org/c3ref/step.html
Faster step for statements that don't callback to Haskell functions (e.g. by using custom SQL functions).
https://www.sqlite.org/c3ref/reset.html
Note 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. reset never throws an exception.
https://www.sqlite.org/c3ref/clear_bindings.html
Set all parameters in the prepared statement to null.
Parameter and column information
4 declarationshttps://www.sqlite.org/c3ref/bind_parameter_count.html
This 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 ParamIndex for more information.
https://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". Unnamed parameters, however, are converted to
Nothing.
Note that the parameter index starts at 1, not 0.
https://www.sqlite.org/c3ref/column_name.html
Return the name of a result column. If the column index is out of range, return Nothing.
Binding values to a prepared statement
10 declarationsIf the index is not between 1 and bindParameterCount inclusive, this fails with ErrorRange. 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]Convenience function for binding values to all parameters. This will fail if the list has the wrong number of parameters.
Convenience function for binding named values to all parameters. This will fail if the list has the wrong number of parameters or if an unknown name is used.
Example:
stmt <- prepare conn "SELECT :foo + :bar"
bindNamed stmt [(":foo", SQLInteger 1), (":bar", SQLInteger 2)]
Reading the result row
8 declarationshttps://www.sqlite.org/c3ref/column_blob.html
Warning: column and columns will throw a DecodeError if any TEXT
datum contains invalid UTF-8.
This 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.html. If the list contains more items that number of columns, the result is undefined.
This will throw a DecodeError if the datum contains invalid UTF-8. If this behavior is undesirable, you can use columnText from Database.SQLite3.Direct, which does not perform conversion to Text.
Result statistics
2 declarationshttps://www.sqlite.org/c3ref/changes.html
Return the number of rows that were changed, inserted, or deleted
by the most recent INSERT, DELETE, or UPDATE statement.
Create custom SQL functions
3 declarationscreateFunction https://sqlite.org/c3ref/create_function.html
Create 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.
createAggregate :: Database-> TextName of the function.
-> Maybe ArgCountNumber of arguments.
-> aInitial aggregate state.
-> (FuncContext -> FuncArgs -> a -> IO a)Process one row and update the aggregate state.
-> (FuncContext -> a -> IO ())Called after all rows have been processed. Can be used to construct the returned value from the aggregate state.
-> IO ()
Like createFunction except that it creates an aggregate function.
Delete an SQL function (scalar or aggregate).
Extract function arguments
Set the result of a function
Create custom collations
2 declarationscreateCollation Delete a collation.
Interrupting a long-running query
2 declarationshttps://www.sqlite.org/c3ref/interrupt.html
Cause any pending operation on the Database 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 interrupt
would never run at the same time as step.
Make 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.
It works by running the callback in a forked thread. If interrupted, it uses interrupt to try to stop the operation.
Incremental blob I/O
7 declarationsblobOpen https://www.sqlite.org/c3ref/blob_open.html
Open a blob for incremental I/O.
Online Backup API
5 declarationsTypes
11 declarationsConstructors
Instances4Eq, Show, Generic, Rep
Eq SQLDataDefined in direct-sqlite-2.3.29 · Database.SQLite3Show SQLDataDefined in direct-sqlite-2.3.29 · Database.SQLite3Generic SQLDataDefined in direct-sqlite-2.3.29 · Database.SQLite3type Rep SQLData = D1 ('MetaDataDefined in direct-sqlite-2.3.29 · Database.SQLite3"SQLData"
"Database.SQLite3"
"direct-sqlite-2.3.29-LPSIgtYmnsA4GbWAuo8ZRP"
'False) ((C1 ('MetaCons"SQLInteger"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Int64)) :+: C1 ('MetaCons"SQLFloat"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 Double))) :+: (C1 ('MetaCons"SQLText"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text)) :+: (C1 ('MetaCons"SQLBlob"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteString)) :+: C1 ('MetaCons"SQLNull"
'PrefixI 'False) U1)))
These flags are used when using the open2 function. https://www.sqlite.org/c3ref/c_open_autoproxy.html
Instances2Eq, Show
Eq SQLOpenFlagDefined in direct-sqlite-2.3.29 · Database.SQLite3Show SQLOpenFlagDefined in direct-sqlite-2.3.29 · Database.SQLite3
These VFS names are used when using the open2 function.
Exception thrown when SQLite3 reports an error.
direct-sqlite may throw other types of exceptions if you misuse the API.
Constructors
SQLErrorsqlError :: !ErrorError code returned by API call
sqlErrorDetails :: TextText describing the error
sqlErrorContext :: TextIndicates what action produced this error, e.g.
exec "SELECT * FROM foo"
Instances5Eq, Show, Generic, Exception, Rep
Eq SQLErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3Show SQLErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3Generic SQLErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3Exception SQLErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3type Rep SQLError = D1 ('MetaDataDefined in direct-sqlite-2.3.29 · Database.SQLite3"SQLError"
"Database.SQLite3"
"direct-sqlite-2.3.29-LPSIgtYmnsA4GbWAuo8ZRP"
'False) (C1 ('MetaCons"SQLError"
'PrefixI 'True) (S1 ('MetaSel ('Just"sqlError"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Error) :*: (S1 ('MetaSel ('Just"sqlErrorDetails"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just"sqlErrorContext"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))
Instances3Eq, Show, FFIType
Eq ColumnTypeDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesShow ColumnTypeDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesFFIType ColumnType CColumnTypeDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.Types
The context in which a custom SQL function is executed.
Instances2Eq, Show
Eq FuncContextDefined in direct-sqlite-2.3.29 · Database.SQLite3.DirectShow FuncContextDefined in direct-sqlite-2.3.29 · Database.SQLite3.Direct
The arguments of a custom SQL function.
The type of blob handles used for incremental blob I/O
A handle for an online backup process.
Results and errors
Instances2Eq, Show
Eq StepResultDefined in direct-sqlite-2.3.29 · Database.SQLite3.DirectShow StepResultDefined in direct-sqlite-2.3.29 · Database.SQLite3.Direct
Constructors
BackupOKThere are still more pages to be copied.
BackupDoneAll pages were successfully copied.
Instances2Eq, Show
Eq BackupStepResultDefined in direct-sqlite-2.3.29 · Database.SQLite3.DirectShow BackupStepResultDefined in direct-sqlite-2.3.29 · Database.SQLite3.Direct
Constructors
ErrorOKSuccessful result
ErrorErrorSQL error or missing database
ErrorInternalInternal logic error in SQLite
ErrorPermissionAccess permission denied
ErrorAbortCallback routine requested an abort
ErrorBusyThe database file is locked
ErrorLockedA table in the database is locked
ErrorNoMemoryA
malloc()failedErrorReadOnlyAttempt to write a readonly database
ErrorInterruptOperation terminated by
sqlite3_interrupt()ErrorIOSome kind of disk I/O error occurred
ErrorCorruptThe database disk image is malformed
ErrorNotFoundUnknown opcode in
sqlite3_file_control()ErrorFullInsertion failed because database is full
ErrorCan'tOpenUnable to open the database file
ErrorProtocolDatabase lock protocol error
ErrorEmptyDatabase is empty
ErrorSchemaThe database schema changed
ErrorTooBigString or BLOB exceeds size limit
ErrorConstraintAbort due to constraint violation
ErrorMismatchData type mismatch
ErrorMisuseLibrary used incorrectly
ErrorNoLargeFileSupportUses OS features not supported on host
ErrorAuthorizationAuthorization denied
ErrorFormatAuxiliary database format error
ErrorRange2nd parameter to sqlite3_bind out of range
ErrorNotADatabaseFile opened that is not a database file
ErrorNoticeNotifications from sqlite3_log()
ErrorWarningWarnings from sqlite3_log()
ErrorRowsqlite3_step()has another row readyErrorDonesqlite3_step()has finished executingErrorErrorMissingCollatingSquenceErrorErrorRetryErrorErrorSnapshotErrorIOReadErrorIOShortReadErrorIOWriteErrorIOFsyncErrorIODirectoryFsyncErrorIOTruncateErrorIOFstatErrorIOUnlockErrorIOReadLockErrorIOBlockedErrorIODeleteErrorIONoMemoryErrorIOAccessErrorIOCheckReservedLockErrorIOLockErrorIOCloseErrorIODirectoryCloseErrorIOShmOpenErrorIOShmSizeErrorIOShmLockErrorIOShmMapErrorIOSeekErrorIODeleteNoEntityErrorIOMmapErrorIOGetTempPathErrorIOConvertedPathErrorIOVNodeErrorIOAuthErrorIOBeginAtomicErrorIOCommitAtomicErrorIORollbackAtomicErrorIODataErrorIOCorruptFilesystemErrorLockedVirtualTableErrorBusyRecoveryErrorBusySnapshotErrorBusyTimeoutErrorCan'tOpenNotTempDirectoryErrorCan'tOpenIsDirectoryErrorCan'tOpenFullPathErrorCan'tOpenConvertedPathErrorCan'tOpenDirtyWriteAheadLogErrorCan'tOpenSymlinkErrorCorruptVirtualTableErrorCorruptSequenceErrorCorruptIndexErrorReadOnlyRecoveryErrorReadOnlyCan'tLockErrorReadOnlyRollbackErrorReadOnlyDatabaseMovedErrorReadOnlyCan'tInitErrorReadOnlyDirectoryErrorAbortRollbackErrorConstraintCheckErrorConstraintCommitHookErrorConstraintForeignKeyErrorConstraintFunctionErrorConstraintNotNullErrorConstraintPrimaryKeyErrorConstraintTriggerErrorConstraintUniqueErrorConstraintVirtualTableErrorConstraintRowIdErrorConstraintPinnedErrorConstraintDataTypeErrorNoticeRecoverWriteAheadLogErrorNoticeRecoverRollbackErrorWarningAutoIndexErrorAuthUserErrorOkLoadPermanently
Instances5Eq, Show, Generic, FFIType, Rep
Eq ErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesShow ErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesGeneric ErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesFFIType Error CErrorDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.Typestype Rep Error = D1 ('MetaDataDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.Types"Error"
"Database.SQLite3.Bindings.Types"
"direct-sqlite-2.3.29-LPSIgtYmnsA4GbWAuo8ZRP"
'False) ((((((C1 ('MetaCons"ErrorOK"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorError"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorInternal"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorPermission"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorAbort"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorBusy"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorLocked"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorNoMemory"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorReadOnly"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorInterrupt"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIO"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorCorrupt"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorNotFound"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"ErrorFull"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorCan'tOpen"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorProtocol"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorEmpty"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorSchema"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorTooBig"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorConstraint"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorMismatch"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorMisuse"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorNoLargeFileSupport"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorAuthorization"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorFormat"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorRange"
'PrefixI 'False) U1))))) :+: ((((C1 ('MetaCons"ErrorNotADatabase"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorNotice"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorWarning"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorRow"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorDone"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorErrorMissingCollatingSquence"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorErrorRetry"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorErrorSnapshot"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIORead"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorIOShortRead"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOWrite"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorIOFsync"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIODirectoryFsync"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"ErrorIOTruncate"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIOFstat"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOUnlock"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorIOReadLock"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIOBlocked"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIODelete"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorIONoMemory"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIOAccess"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOCheckReservedLock"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorIOLock"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOClose"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorIODirectoryClose"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOShmOpen"
'PrefixI 'False) U1)))))) :+: (((((C1 ('MetaCons"ErrorIOShmSize"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIOShmLock"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOShmMap"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorIOSeek"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIODeleteNoEntity"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOMmap"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorIOGetTempPath"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIOConvertedPath"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOVNode"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorIOAuth"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIOBeginAtomic"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorIOCommitAtomic"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorIORollbackAtomic"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"ErrorIOData"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorIOCorruptFilesystem"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorLockedSharedCache"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorLockedVirtualTable"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorBusyRecovery"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorBusySnapshot"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorBusyTimeout"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorCan'tOpenNotTempDirectory"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorCan'tOpenIsDirectory"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorCan'tOpenFullPath"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorCan'tOpenConvertedPath"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorCan'tOpenDirtyWriteAheadLog"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorCan'tOpenSymlink"
'PrefixI 'False) U1))))) :+: ((((C1 ('MetaCons"ErrorCorruptVirtualTable"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorCorruptSequence"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorCorruptIndex"
'PrefixI 'False) U1)) :+: (C1 ('MetaCons"ErrorReadOnlyRecovery"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorReadOnlyCan'tLock"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorReadOnlyRollback"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorReadOnlyDatabaseMoved"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorReadOnlyCan'tInit"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorReadOnlyDirectory"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorAbortRollback"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorConstraintCheck"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorConstraintCommitHook"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorConstraintForeignKey"
'PrefixI 'False) U1)))) :+: (((C1 ('MetaCons"ErrorConstraintFunction"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorConstraintNotNull"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorConstraintPrimaryKey"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorConstraintTrigger"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorConstraintUnique"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorConstraintVirtualTable"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorConstraintRowId"
'PrefixI 'False) U1))) :+: ((C1 ('MetaCons"ErrorConstraintPinned"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"ErrorConstraintDataType"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorNoticeRecoverWriteAheadLog"
'PrefixI 'False) U1)) :+: ((C1 ('MetaCons"ErrorNoticeRecoverRollback"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorWarningAutoIndex"
'PrefixI 'False) U1) :+: (C1 ('MetaCons"ErrorAuthUser"
'PrefixI 'False) U1 :+: C1 ('MetaCons"ErrorOkLoadPermanently"
'PrefixI 'False) U1)))))))
Special integers
Index of a parameter in a parameterized query. Parameter indices start from 1.
When a query is prepared, SQLite allocates an array indexed from 1 to the highest parameter index. For example:
>Right stmt <- prepare conn "SELECT ?1, ?5, ?3, ?"
>bindParameterCount stmt
ParamIndex 6This 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 bindSQLData, it assigns a
new value to one of these indices.
See https://www.sqlite.org/lang_expr.html#varparam for the syntax of parameter placeholders, and how parameter indices are assigned.
Constructors
Instances9Bounded, Enum, Eq, Integral, Num, Ord, …
Bounded ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesLimit min/max bounds to fit into SQLite's native parameter ranges.
Enum ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesEq ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesIntegral ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesNum ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesOrd ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesReal ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesShow ParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesThis just shows the underlying integer, without the data constructor.
FFIType ParamIndex CParamIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.Types
Index of a column in a result set. Column indices start from 0.
Constructors
Instances9Bounded, Enum, Eq, Integral, Num, Ord, …
Bounded ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesLimit min/max bounds to fit into SQLite's native parameter ranges.
Enum ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesEq ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesIntegral ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesNum ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesOrd ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesReal ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesShow ColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesThis just shows the underlying integer, without the data constructor.
FFIType ColumnIndex CColumnIndexDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.Types
Number of columns in a result set.
Instances9Bounded, Enum, Eq, Integral, Num, Ord, …
Bounded ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesEnum ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesEq ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesIntegral ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesNum ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesOrd ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesReal ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesShow ArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.TypesThis just shows the underlying integer, without the data constructor.
FFIType ArgCount CArgCountDefined in direct-sqlite-2.3.29 · Database.SQLite3.Bindings.Types
Index of an argument to a custom function. Indices start from 0.