direct-sqlite-2.3.29: Low-level binding to SQLite3. Includes UTF8 and BLOB support.
Safe HaskellNone
LanguageHaskell2010

Database.SQLite3

Synopsis

Connection management

withDatabase #

Arguments

:: Text

connection string

-> (Database -> IO a)

user program

-> IO a 

Manage a connection to a database in an exception-safe way (with bracket)

Simple query execution

exec :: Database -> Text -> IO () #

Execute zero or more SQL statements delimited by semicolons.

execPrint :: Database -> Text -> IO () #

Like exec, but print result rows to stdout.

This is mainly for convenience when experimenting in GHCi. The output format may change in the future.

execWithCallback :: Database -> Text -> ExecCallback -> IO () #

Like exec, but invoke the callback for each result row.

type ExecCallback #

Arguments

 = ColumnCount

Number of columns, which is the number of items in the following lists. This will be the same for every row.

-> [Text]

List of column names. This will be the same for every row.

-> [Maybe Text]

List of column values, as returned by columnText.

-> IO () 

Statement management

withStatement #

Arguments

:: Database

DB connection

-> Text

SQL statement

-> (Statement -> IO a)

User program

-> IO a 

Bracket prepare and finalize. Useful for stepping multiple times through a Statement

prepare :: Database -> Text -> IO Statement #

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.

prepareUtf8 :: Database -> Utf8 -> IO Statement #

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.

stepNoCB :: Statement -> IO StepResult #

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).

reset :: Statement -> IO () #

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.

clearBindings :: Statement -> IO () #

https://www.sqlite.org/c3ref/clear_bindings.html

Set all parameters in the prepared statement to null.

Parameter and column information

bindParameterCount :: Statement -> IO ParamIndex #

https://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.

bindParameterName :: Statement -> ParamIndex -> IO (Maybe Text) #

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.

columnName :: Statement -> ColumnIndex -> IO (Maybe Text) #

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

bindSQLData :: Statement -> ParamIndex -> SQLData -> IO () #

If 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]

bind :: Statement -> [SQLData] -> IO () #

Convenience function for binding values to all parameters. This will fail if the list has the wrong number of parameters.

bindNamed :: Statement -> [(Text, SQLData)] -> IO () #

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

https://www.sqlite.org/c3ref/column_blob.html

Warning: column and columns will throw a DecodeError if any TEXT datum contains invalid UTF-8.

typedColumns :: Statement -> [Maybe ColumnType] -> IO [SQLData] #

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.

columnText :: Statement -> ColumnIndex -> IO Text #

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

changes :: Database -> IO Int #

https://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

createFunction #

Arguments

:: Database 
-> Text

Name of the function.

-> Maybe ArgCount

Number of arguments. Nothing means that the function accepts any number of arguments.

-> Bool

Is the function deterministic?

-> (FuncContext -> FuncArgs -> IO ())

Implementation of the function.

-> IO () 

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 #

Arguments

:: Database 
-> Text

Name of the function.

-> Maybe ArgCount

Number of arguments.

-> a

Initial 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.

deleteFunction :: Database -> Text -> Maybe ArgCount -> IO () #

Delete an SQL function (scalar or aggregate).

Extract function arguments

Set the result of a function

Create custom collations

createCollation #

Arguments

:: Database 
-> Text

Name of the collation.

-> (Text -> Text -> Ordering)

Comparison function.

-> IO () 

deleteCollation :: Database -> Text -> IO () #

Delete a collation.

Interrupting a long-running query

interrupt :: Database -> IO () #

https://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.

interruptibly :: Database -> IO a -> IO a #

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

blobOpen #

Arguments

:: Database 
-> Text

The symbolic name of the database (e.g. "main").

-> Text

The table name.

-> Text

The column name.

-> Int64

The ROWID of the row.

-> Bool

Open the blob for read-write.

-> IO Blob 

https://www.sqlite.org/c3ref/blob_open.html

Open a blob for incremental I/O.

blobReopen #

Arguments

:: Blob 
-> Int64

The ROWID of the row.

-> IO () 

blobRead #

Arguments

:: Blob 
-> Int

Number of bytes to read.

-> Int

Offset within the blob.

-> IO ByteString 

blobReadBuf :: Blob -> Ptr a -> Int -> Int -> IO () #

blobWrite #

Arguments

:: Blob 
-> ByteString 
-> Int

Offset within the blob.

-> IO () 

Online Backup API

backupInit #

Arguments

:: Database

Destination database handle.

-> Text

Destination database name.

-> Database

Source database handle.

-> Text

Source database name.

-> IO Backup 

Types

data Database #

Instances

Instances details
Show Database # 
Instance details

Defined in Database.SQLite3.Direct

Eq Database # 
Instance details

Defined in Database.SQLite3.Direct

data Statement #

Instances

Instances details
Show Statement # 
Instance details

Defined in Database.SQLite3.Direct

Eq Statement # 
Instance details

Defined in Database.SQLite3.Direct

data SQLData #

Instances

Instances details
Generic SQLData # 
Instance details

Defined in Database.SQLite3

Associated Types

type Rep SQLData 
Instance details

Defined in Database.SQLite3

Methods

from :: SQLData -> Rep SQLData x #

to :: Rep SQLData x -> SQLData #

Show SQLData # 
Instance details

Defined in Database.SQLite3

Eq SQLData # 
Instance details

Defined in Database.SQLite3

Methods

(==) :: SQLData -> SQLData -> Bool #

(/=) :: SQLData -> SQLData -> Bool #

type Rep SQLData # 
Instance details

Defined in Database.SQLite3

data SQLVFS #

These VFS names are used when using the open2 function.

Instances

Instances details
Show SQLVFS # 
Instance details

Defined in Database.SQLite3

Eq SQLVFS # 
Instance details

Defined in Database.SQLite3

Methods

(==) :: SQLVFS -> SQLVFS -> Bool #

(/=) :: SQLVFS -> SQLVFS -> Bool #

data SQLError #

Exception thrown when SQLite3 reports an error.

direct-sqlite may throw other types of exceptions if you misuse the API.

Constructors

SQLError 

Fields

Instances

Instances details
Exception SQLError # 
Instance details

Defined in Database.SQLite3

Generic SQLError # 
Instance details

Defined in Database.SQLite3

Associated Types

type Rep SQLError 
Instance details

Defined in Database.SQLite3

type Rep SQLError = D1 ('MetaData "SQLError" "Database.SQLite3" "direct-sqlite-2.3.29-HaWmSplQy1UBHlvGxhk0JP" '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))))

Methods

from :: SQLError -> Rep SQLError x #

to :: Rep SQLError x -> SQLError #

Show SQLError # 
Instance details

Defined in Database.SQLite3

Eq SQLError # 
Instance details

Defined in Database.SQLite3

type Rep SQLError # 
Instance details

Defined in Database.SQLite3

type Rep SQLError = D1 ('MetaData "SQLError" "Database.SQLite3" "direct-sqlite-2.3.29-HaWmSplQy1UBHlvGxhk0JP" '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))))

data FuncContext #

The context in which a custom SQL function is executed.

Instances

Instances details
Show FuncContext # 
Instance details

Defined in Database.SQLite3.Direct

Eq FuncContext # 
Instance details

Defined in Database.SQLite3.Direct

data FuncArgs #

The arguments of a custom SQL function.

data Blob #

The type of blob handles used for incremental blob I/O

Instances

Instances details
Show Blob # 
Instance details

Defined in Database.SQLite3.Direct

Methods

showsPrec :: Int -> Blob -> ShowS #

show :: Blob -> String #

showList :: [Blob] -> ShowS #

Eq Blob # 
Instance details

Defined in Database.SQLite3.Direct

Methods

(==) :: Blob -> Blob -> Bool #

(/=) :: Blob -> Blob -> Bool #

data Backup #

A handle for an online backup process.

Instances

Instances details
Show Backup # 
Instance details

Defined in Database.SQLite3.Direct

Eq Backup # 
Instance details

Defined in Database.SQLite3.Direct

Methods

(==) :: Backup -> Backup -> Bool #

(/=) :: Backup -> Backup -> Bool #

Results and errors

data StepResult #

Constructors

Row 
Done 

Instances

Instances details
Show StepResult # 
Instance details

Defined in Database.SQLite3.Direct

Eq StepResult # 
Instance details

Defined in Database.SQLite3.Direct

data BackupStepResult #

Constructors

BackupOK

There are still more pages to be copied.

BackupDone

All pages were successfully copied.

data Error #

Constructors

ErrorOK

Successful result

ErrorError

SQL error or missing database

ErrorInternal

Internal logic error in SQLite

ErrorPermission

Access permission denied

ErrorAbort

Callback routine requested an abort

ErrorBusy

The database file is locked

ErrorLocked

A table in the database is locked

ErrorNoMemory

A malloc() failed

ErrorReadOnly

Attempt to write a readonly database

ErrorInterrupt

Operation terminated by sqlite3_interrupt()

ErrorIO

Some kind of disk I/O error occurred

ErrorCorrupt

The database disk image is malformed

ErrorNotFound

Unknown opcode in sqlite3_file_control()

ErrorFull

Insertion failed because database is full

ErrorCan'tOpen

Unable to open the database file

ErrorProtocol

Database lock protocol error

ErrorEmpty

Database is empty

ErrorSchema

The database schema changed

ErrorTooBig

String or BLOB exceeds size limit

ErrorConstraint

Abort due to constraint violation

ErrorMismatch

Data type mismatch

ErrorMisuse

Library used incorrectly

ErrorNoLargeFileSupport

Uses OS features not supported on host

ErrorAuthorization

Authorization denied

ErrorFormat

Auxiliary database format error

ErrorRange

2nd parameter to sqlite3_bind out of range

ErrorNotADatabase

File opened that is not a database file

ErrorNotice

Notifications from sqlite3_log()

ErrorWarning

Warnings from sqlite3_log()

ErrorRow

sqlite3_step() has another row ready

ErrorDone

sqlite3_step() has finished executing

ErrorErrorMissingCollatingSquence 
ErrorErrorRetry 
ErrorErrorSnapshot 
ErrorIORead 
ErrorIOShortRead 
ErrorIOWrite 
ErrorIOFsync 
ErrorIODirectoryFsync 
ErrorIOTruncate 
ErrorIOFstat 
ErrorIOUnlock 
ErrorIOReadLock 
ErrorIOBlocked 
ErrorIODelete 
ErrorIONoMemory 
ErrorIOAccess 
ErrorIOCheckReservedLock 
ErrorIOLock 
ErrorIOClose 
ErrorIODirectoryClose 
ErrorIOShmOpen 
ErrorIOShmSize 
ErrorIOShmLock 
ErrorIOShmMap 
ErrorIOSeek 
ErrorIODeleteNoEntity 
ErrorIOMmap 
ErrorIOGetTempPath 
ErrorIOConvertedPath 
ErrorIOVNode 
ErrorIOAuth 
ErrorIOBeginAtomic 
ErrorIOCommitAtomic 
ErrorIORollbackAtomic 
ErrorIOData 
ErrorIOCorruptFilesystem 
ErrorLockedSharedCache 
ErrorLockedVirtualTable 
ErrorBusyRecovery 
ErrorBusySnapshot 
ErrorBusyTimeout 
ErrorCan'tOpenNotTempDirectory 
ErrorCan'tOpenIsDirectory 
ErrorCan'tOpenFullPath 
ErrorCan'tOpenConvertedPath 
ErrorCan'tOpenDirtyWriteAheadLog 
ErrorCan'tOpenSymlink 
ErrorCorruptVirtualTable 
ErrorCorruptSequence 
ErrorCorruptIndex 
ErrorReadOnlyRecovery 
ErrorReadOnlyCan'tLock 
ErrorReadOnlyRollback 
ErrorReadOnlyDatabaseMoved 
ErrorReadOnlyCan'tInit 
ErrorReadOnlyDirectory 
ErrorAbortRollback 
ErrorConstraintCheck 
ErrorConstraintCommitHook 
ErrorConstraintForeignKey 
ErrorConstraintFunction 
ErrorConstraintNotNull 
ErrorConstraintPrimaryKey 
ErrorConstraintTrigger 
ErrorConstraintUnique 
ErrorConstraintVirtualTable 
ErrorConstraintRowId 
ErrorConstraintPinned 
ErrorConstraintDataType 
ErrorNoticeRecoverWriteAheadLog 
ErrorNoticeRecoverRollback 
ErrorWarningAutoIndex 
ErrorAuthUser 
ErrorOkLoadPermanently 

Instances

Instances details
Generic Error # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Associated Types

type Rep Error 
Instance details

Defined in Database.SQLite3.Bindings.Types

type Rep Error = D1 ('MetaData "Error" "Database.SQLite3.Bindings.Types" "direct-sqlite-2.3.29-HaWmSplQy1UBHlvGxhk0JP" 'False) ((((((C1 ('MetaCons "ErrorOK" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorError" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorInternal" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorPermission" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorAbort" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorBusy" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorLocked" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorNoMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnly" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorInterrupt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIO" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorCorrupt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorNotFound" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorFull" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCan'tOpen" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorProtocol" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorEmpty" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorSchema" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorTooBig" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorConstraint" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorMismatch" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorMisuse" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorNoLargeFileSupport" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorAuthorization" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorFormat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorRange" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "ErrorNotADatabase" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorNotice" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorWarning" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorRow" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorDone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorErrorMissingCollatingSquence" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorErrorRetry" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorErrorSnapshot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIORead" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOShortRead" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOWrite" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIOFsync" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIODirectoryFsync" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorIOTruncate" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOFstat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOUnlock" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorIOReadLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOBlocked" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIODelete" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorIONoMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOAccess" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOCheckReservedLock" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOClose" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIODirectoryClose" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOShmOpen" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "ErrorIOShmSize" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOShmLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOShmMap" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorIOSeek" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIODeleteNoEntity" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOMmap" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorIOGetTempPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOConvertedPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOVNode" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOAuth" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOBeginAtomic" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIOCommitAtomic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIORollbackAtomic" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorIOData" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOCorruptFilesystem" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorLockedSharedCache" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorLockedVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorBusyRecovery" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorBusySnapshot" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorBusyTimeout" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCan'tOpenNotTempDirectory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenIsDirectory" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorCan'tOpenFullPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenConvertedPath" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorCan'tOpenDirtyWriteAheadLog" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenSymlink" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "ErrorCorruptVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCorruptSequence" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCorruptIndex" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorReadOnlyRecovery" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorReadOnlyCan'tLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnlyRollback" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorReadOnlyDatabaseMoved" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorReadOnlyCan'tInit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnlyDirectory" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorAbortRollback" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintCheck" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorConstraintCommitHook" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintForeignKey" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorConstraintFunction" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorConstraintNotNull" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintPrimaryKey" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorConstraintTrigger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintUnique" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorConstraintVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintRowId" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorConstraintPinned" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorConstraintDataType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorNoticeRecoverWriteAheadLog" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorNoticeRecoverRollback" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorWarningAutoIndex" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorAuthUser" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorOkLoadPermanently" 'PrefixI 'False) (U1 :: Type -> Type))))))))

Methods

from :: Error -> Rep Error x #

to :: Rep Error x -> Error #

Show Error # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Methods

showsPrec :: Int -> Error -> ShowS #

show :: Error -> String #

showList :: [Error] -> ShowS #

Eq Error # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Methods

(==) :: Error -> Error -> Bool #

(/=) :: Error -> Error -> Bool #

FFIType Error CError # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Methods

toFFI :: Error -> CError #

fromFFI :: CError -> Error #

type Rep Error # 
Instance details

Defined in Database.SQLite3.Bindings.Types

type Rep Error = D1 ('MetaData "Error" "Database.SQLite3.Bindings.Types" "direct-sqlite-2.3.29-HaWmSplQy1UBHlvGxhk0JP" 'False) ((((((C1 ('MetaCons "ErrorOK" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorError" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorInternal" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorPermission" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorAbort" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorBusy" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorLocked" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorNoMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnly" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorInterrupt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIO" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorCorrupt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorNotFound" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorFull" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCan'tOpen" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorProtocol" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorEmpty" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorSchema" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorTooBig" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorConstraint" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorMismatch" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorMisuse" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorNoLargeFileSupport" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorAuthorization" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorFormat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorRange" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "ErrorNotADatabase" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorNotice" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorWarning" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorRow" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorDone" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorErrorMissingCollatingSquence" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorErrorRetry" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorErrorSnapshot" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIORead" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOShortRead" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOWrite" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIOFsync" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIODirectoryFsync" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorIOTruncate" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOFstat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOUnlock" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorIOReadLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOBlocked" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIODelete" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorIONoMemory" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOAccess" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOCheckReservedLock" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOClose" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIODirectoryClose" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOShmOpen" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "ErrorIOShmSize" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOShmLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOShmMap" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorIOSeek" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIODeleteNoEntity" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOMmap" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorIOGetTempPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOConvertedPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOVNode" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorIOAuth" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIOBeginAtomic" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorIOCommitAtomic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorIORollbackAtomic" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorIOData" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorIOCorruptFilesystem" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorLockedSharedCache" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorLockedVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorBusyRecovery" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorBusySnapshot" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorBusyTimeout" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCan'tOpenNotTempDirectory" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenIsDirectory" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorCan'tOpenFullPath" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenConvertedPath" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorCan'tOpenDirtyWriteAheadLog" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCan'tOpenSymlink" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "ErrorCorruptVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorCorruptSequence" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorCorruptIndex" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "ErrorReadOnlyRecovery" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorReadOnlyCan'tLock" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnlyRollback" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorReadOnlyDatabaseMoved" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorReadOnlyCan'tInit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorReadOnlyDirectory" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorAbortRollback" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintCheck" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorConstraintCommitHook" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintForeignKey" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "ErrorConstraintFunction" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorConstraintNotNull" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintPrimaryKey" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorConstraintTrigger" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintUnique" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorConstraintVirtualTable" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorConstraintRowId" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "ErrorConstraintPinned" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ErrorConstraintDataType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorNoticeRecoverWriteAheadLog" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ErrorNoticeRecoverRollback" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorWarningAutoIndex" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ErrorAuthUser" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ErrorOkLoadPermanently" 'PrefixI 'False) (U1 :: Type -> Type))))))))

Special integers

newtype ParamIndex #

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 6

This 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

ParamIndex Int 

Instances

Instances details
Bounded ParamIndex #

Limit min/max bounds to fit into SQLite's native parameter ranges.

Instance details

Defined in Database.SQLite3.Bindings.Types

Enum ParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Num ParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Integral ParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Real ParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Show ParamIndex #

This just shows the underlying integer, without the data constructor.

Instance details

Defined in Database.SQLite3.Bindings.Types

Eq ParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Ord ParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

FFIType ParamIndex CParamIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

newtype ColumnIndex #

Index of a column in a result set. Column indices start from 0.

Constructors

ColumnIndex Int 

Instances

Instances details
Bounded ColumnIndex #

Limit min/max bounds to fit into SQLite's native parameter ranges.

Instance details

Defined in Database.SQLite3.Bindings.Types

Enum ColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Num ColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Integral ColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Real ColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Show ColumnIndex #

This just shows the underlying integer, without the data constructor.

Instance details

Defined in Database.SQLite3.Bindings.Types

Eq ColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Ord ColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

FFIType ColumnIndex CColumnIndex # 
Instance details

Defined in Database.SQLite3.Bindings.Types

type ColumnCount = ColumnIndex #

Number of columns in a result set.

newtype ArgCount #

Number of arguments of a user defined SQL function.

Constructors

ArgCount Int 

Instances

Instances details
Bounded ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Enum ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Num ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Integral ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Real ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Show ArgCount #

This just shows the underlying integer, without the data constructor.

Instance details

Defined in Database.SQLite3.Bindings.Types

Eq ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

Ord ArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

FFIType ArgCount CArgCount # 
Instance details

Defined in Database.SQLite3.Bindings.Types

type ArgIndex = ArgCount #

Index of an argument to a custom function. Indices start from 0.