h,%i      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq0.0.1 None"%&(-1>TsqA  '* performs a read-only query. Obtain with .A  ' can permorm ' s only. Obtain with .A  ' can permorm ' s only. Obtain with   or  .sqA  '. performs a read or write query. Obtain with  .A  ' can permorm both ' and ' s. Obtain with   or  .A  ' can permorm both ' and ' s. Obtain with  or .rstuNone"%&(-1>sqA non-empty list of s that can be rendered as  or  parameters in a . As a user of Sq, you never construct a  manually. Rather, uses of  and  build one for you from its  constituents. "s are only exposed to you through ,  and .sq,Part of a binding name suitable to use with , ,  and .Construct with  or v.sq%First character must be ASCII letter.sqThe NULL SQL datatype.8Mostly useful if you want to encode or decode a literal NULL value through  and  instances.$However, often you can benefit from  and  instead.None"%&(-1>61sq.Default way to encode a Haskell value of type a$ into a single SQLite column value.If there there exist also a  instance for a#, then it must roundtrip with the  instance for a.sq.Default way to encode a Haskell value of type a$ into a single SQLite column value.sqSee .sq-How to encode a single Haskell value of type a into a SQLite value.sqEncode a value of type a as  !.Ideally, the type a; should be small enough that this function always returns |. However, that can sometimes be annoying, so we allow this function to fail with ! if necessary, in which case an  exception will be eventually thrown while trying to bind the relevant  to a }%. Why? Because for example, not all ~s can be safely encoded as a  " seeing as some non-unicode characters will silently be lost in the conversion. So, we could either not have an r for ~4 at all, which would be annoying, or we could have  as we do here in order to safely deal with those obscure corner cases.sq'A convenience function for refining an +r through a function that may fail with a ~ error message. The  is preserved.5If you need a more sophisticated refinement, use the  constructor.sqa's  # if  , otherwise  $.sqa's  # if  , otherwise b's  #. sq % if it fits in  , otherwise  &.!sq '."sq &.#sq Encodes as  &.sq() in a @ &. hh:mmsq() in a @ &.  PyYmMdDThHmMs[.ssssssssssss]SWARNING: SQLite date and time functions support resolution only up to milliseconds.sq() in a @ &. PyYmMdDsq() in a @ &. hh:mm:ss[.ssssssssssss]Sorting these lexicographically in SQL corresponds to sorting them by time.WARNING: SQLite date and time functions support resolution only up to milliseconds.WARNING<: SQLite date and time functions don't support leap seconds.sqISO-8601 in a @ &.  yyyy-mm-ddSorting these lexicographically in SQL corresponds to sorting them by time.sq() in a @ &. yyyy-mm-ddThh:mm:ss[.ssssssssssss]Sorting these lexicographically in SQL corresponds to sorting them by time.WARNING: SQLite date and time functions support resolution only up to milliseconds.WARNING<: SQLite date and time functions don't support leap seconds.sq() in a @ &. yyyy-mm-ddThh:mm:ss[.ssssssssssss]hh:mmWARNING: Sorting these lexicographically in SQL won't work unless the offset is always the same! Convert to (* first.WARNING: SQLite date and time functions support resolution only up to milliseconds.WARNING<: SQLite date and time functions don't support leap seconds.sq() in a @ &. yyyy-mm-ddThh:mm:ss[.ssssssssssss]+00:00Sorting these lexicographically in SQL corresponds to sorting them by time.WARNING: SQLite date and time functions support resolution only up to milliseconds.WARNING<: SQLite date and time functions don't support leap seconds.sq '.sq '.sq '.sq &.sq &.sq &.sq &.sq % if it fits in  , otherwise  &.sq % if it fits in  , otherwise  &.sq % if it fits in  , otherwise  &.sq % if it fits in  , otherwise  &.sq %.sq %.sq %.sq %.sq %.sq %.sq %.sq +.sq % . Encodes  as 0 and  as 1.sqSee .sqSee .sqThis is .sq $.sq '.sq +.sq %.sq &.sqLiteral  ! . #!" ,None"%&(-1>"$sqSee .&sq(How to encode all the input to a single .Construct with ', v. Nest with (. Compose with , ,  and  tools.'sqEncode a single input parameter. The value will be reachable from the SQL query through the specified  , with a $ prefix.   (' "foo"  ) 2 "INSERT INTO t (a) VALUES ($foo)" :: ( x) =>  - x () =Note that by design, this library doesn't support positional &% parameters. You must always pick a . Multiple &s can be composed with , ,  and  tools.   ( (' "foo" ) (' "bar"  )) ; "INSERT INTO t (a, b) VALUES ($foo, $bar)" :: ( x,  y) =>  - (x, y) () Pro-tip: Consider using the v instance for &. For example, "foo" means ' "foo" 9. That is, the last example could be written as follows:   ( "foo" "bar") ; "INSERT INTO t (a, b) VALUES ($foo, $bar)" :: ( x,  y) =>  - (x, y) () (sq Add a prefix " to parameters names in the given &, separated by __#This is useful for making reusable &(s. For example, consider the following. data Point = Point { x :: , y ::  } pointInput :: & Point pointInput = , (\case Point x _ -> x) "x" <>  (\case Point _ y -> y) "y" After (:   ( (($ "p1" pointInput) (( "p2" pointInput))  [.| INSERT INTO vectors (ax, ay, bx, by) VALUES ($p1__x, $p1__y, $p2__x, $p2__y) |] ::  - (Point, Point) () sq   "a" 0 "INSERT INTO t (x) VALUES ($a)" :: ( a) =>  - a () sq#Left-biased in case of overlapping s.sq#Left-biased in case of overlapping s. '($%&/None"%&(-1>-2)sqDefault way to decode a SQLite value into a Haskell value of type a.If there there exist also a  instance for a#, then it must roundtrip with the  instance for a.*sqDefault way to decode a SQLite value into a Haskell value of type a.+sqSee /.,sq Received  # , expected  #s..sqHow to decode a single SQLite column value into a Haskell value of type a./sq Decode a  ! value into a value of type a.0sq&A convenience function for refining a .+r through a function that may fail with a ~ error message. The  is preserved.5If you need a more sophisticated refinement, use the . constructor.1sqAttempt to decode a$ first, otherwise attempt decode a  $ as .2sq 2 da db = fmap  da  fmap | db 3sq %.4sq '.5sq &.6sq &.sq7Leftmost result on success, rightmost error on failure.sq7Leftmost result on success, rightmost error on failure.sq () ==  ()sq  =  sq +.sq() in a @ &.sq() in a @ &.TODO: Currently precission over picoseconds is successfully parsed but silently floored. This is an issue in Data.Time.Format.ISO8601. Fix.sq() in a @ &.TODO: Currently precission over picoseconds is successfully parsed but silently floored. This is an issue in Data.Time.Format.ISO8601. Fix.sq() in a @ &.TODO: Currently precission over picoseconds is successfully parsed but silently floored. This is an issue in Data.Time.Format.ISO8601. Fix.sq() in a @ &.sq() in a @ &.sq & ((), or seconds since Epoch with optional decimal part of up to picosecond precission), or  0 (seconds since Epoch).TODO: Currently precission over picoseconds is successfully parsed but silently floored. This is an issue in Data.Time.Format.ISO8601. Fix.sq Like for (1.sq % and  + only.0 is , every other number is .sq % if it fits in  , otherwise  &.sq %.sq % if it fits in  , otherwise  &.sq % if it fits in  , otherwise  &.sq %.sq %.sq %.sq %.sq %.sq %.sq %,  +,  & depicting a literal integer.sqSee 2.sqSee 1.sq '.sq &.sq &.sq &.sq $.sq '.sq &.sq +.sq %.sqLiteral  ! ..6421503./)*+-,2None"%&(-1>68sq Error from /.9sqMissing column name in the raw SQL.:sq Error from 34.;sq*How to decode an output row from a single .Construct with <, v. Nest with =. Compose with , , , , , ,  and 34 tools.<sq!Decode the column with the given .   (< "foo" *%) "SELECT foo FROM t" :: () x) =>  5 () x =Note that by design, this library doesn't support positional ;% parameters. You must always pick a . In the raw SQL, you can use AS- to rename your output columns as necessary.   (< "abc" *,) "SELECT foo AS abc FROM t" :: () x) =>  5 () x  Multiple Outputss can be composed with , , , , , ,  and 34 tools.   (do foo <- < "foo" *  (foo > 10) do  "Oh no!" bar <- < "bar" * 5 (foo, bar)) "SELECT foo, bar FROM t" :: () y) =>  5 () (, y) Pro-tip: Consider using the v instance for ;, where for example "foo" means < "foo" *:  ( (,) "foo" "bar") ) "SELECT foo, bar FROM t" :: () x, ) y) =>  5 () (x, y) =sq Add a prefix  to column names in the given ;, separated by __#This is useful for making reusable ;(s. For example, consider the following. data Point = Point { x :: , y ::  } pointOutput :: ; Point pointOutput = Point  "x"  "y"  After using =:   ( (=# "p1" pointInput) (= "p2" pointInput)) [.| SELECT ax AS p1__x, ay AS p1__y, bx AS p2__x, by AS p2__y FROM vectors|] ::  5 () (Point, Point) sq9TODO cache names after lookup. Important for Alternative.<=798:;6None"%&(-1>< >sqA SQL statement taking a value i! as input and producing rows of o values as output.s$ indicates whether the statement is -only or read-.Construct with A or B.?sq%Raw SQL string. Completely unchecked.@sqA  for raw SQL strings.WARNING: This doesn't check the validity of the SQL. It is offered simply because writing multi-line strings in Haskell is otherwise very annoying.Asq Construct a -only >.WARNING: This library doesn't yet" provide a safe way to construct >.s. You can potentially write anything in your ? string. Don't do that.The ? must be read-only.The ?! must contain a single statement.The ? must not contain any transaction nor savepoint management statements.Bsq Construct a >( that can only be executed as part of a   Transaction.WARNING: This library doesn't yet" provide a safe way to construct >.s. You can potentially write anything in your ? string. Don't do that.The ?! must contain a single statement.The ? must not contain any transaction nor savepoint management statements.sqRaw SQL string as 78.sqRaw SQL string.A@B?>9None"%&(-1>=sq Generate a  unique within this OS process.If once per nanosecond, it will take 548 years to run out of unique 9 identifiers. Thus, we don't check whether for overflow.sqZero.sqMore than one.sqMore than zero.sqZero.sqMore than one.:None"%&(-1>RCsqSee R, S and T.WARNING safely dealing with C!s can be tricky. Consider using 3; on <, which is implemented using C and does the right thing.Esq)Fewer rows than requested were available.Fsq(More rows than requested were available.Hsq4A same column name appears twice or more in the raw ?.sqThe SQLITE_STMTSTATUS_REPREPARE when columns was generated.IsqA database transaction handle.t indicates whether -only or read- >s are supported.Prefer to use a -only I if you are solely performing -only >4s. It will be more efficient in concurrent settings. Obtain with  or   . Or, if you are testing, with  .If you have access to a I within its intended scope, then you can assume that a database transaction has started, and will eventually be automatically commited or rolled back as requested when it was obtained.!It's safe and efficient to use a I8 concurrently as is. Concurrency is handled internally.sqInternal. While a  can be used concurrently, an  can't. If one has access to an , then one can assume that nobody else has access to the underlying  =! connection handle at the moment.sqA  or  connection handle.It is safe to attempt to use this connection concurrently without any locking. The  itself mantains an internal locking mechanism so that transactions are always executed serially.Note: We don't export = directly to the public, because it's easier to export just .sq if the connection has vanished.sqSame timeout as in JJsqSQLite connection settings.Lsq$SQLite busy Timeout in milliseconds.NsqDatabase file path. Not an URI.$Note: To keep things simple, native :memory:0 SQLite databases are not supported. Maybe use > or tmpfs if you need that?sqSee -https://www.sqlite.org/c3ref/stmt_status.htmlsqReturns same as input.sqSee .https://www.sqlite.org/c3ref/busy_handler.htmlOsqDefault connection settings.sqSee 6https://www.sqlite.org/c3ref/c_stmtstatus_counter.htmlPsqFold the output rows from a >$ in a way that allows interleaving  actions.This is simpler alternative to Q& for when all you need to do is fold. If you don't need to interleave  actions, then consider using ?.QsqStream the output rows from a >$ in a way that allows interleaving  actions.&An exclusive lock will be held on the I while the @A is producing rows.The I' lock is released automatically if the @A is consumed until exhaustion.If you won't consume the @A) until exhaustion, then be sure to exit m by means of BC9 or similar as soon as possible in order to release the I lock.sq Acquires an  action that will yield the next output row each time it is called, if any. Among other  exceptions, 7 may be thrown.Rsq(Obtain savepoint to which one can later S or T.Ssq/Disregard all the changes that happened to the I related to this C) since the time it was obtained through R. Trying to S a C3 that isn't reachable anymore throws an exception.A C) stops being reachable when the relevant I ends, or when a S to an earlier C on the same I% is performed, or when it or a later C" is explicitely released through T.Tsq Release a C( so that it, together with any previous Cs on the same I(, become unreachable to future uses of S or T. Trying to T a C3 that isn't reachable anymore throws an exception.A C) stops being reachable when the relevant I ends, or when a S to an earlier C on the same I% is performed, or when it or a later C" is explicitely released through T.sqopsqresetFlgsq milliseconds.Osq$Database file path. Not an URI, not :memory:sqWhether to finally COMMIT& the transaction. Otherwise, it will ROLLBACK.PsqHow to acquire the I once the m is executed, and how to release it when it's not needed anymore.If you want this > to be the only one in the I, then use one of ,   or  .%Otherwise, if you already obtained a I" by other means, then simply use  to wrap a I in DE.QsqHow to acquire the I once the @A starts being consumed, and how to release it when it's not needed anymore.If you want this > to be the only one in the I, then use one of , 'Sq.commitTransaction or  .%Otherwise, if you already obtained a I" by other means, then simply use  to wrap a I in DE.sqA @A from the  streaming library. We use the  streaming library because it is fast and doesn't add any transitive dependencies to this project.PRTSOQDEFGHCJKNLMIFNone"%&(-1>YfUsq)Pool of connections to a SQLite database.p indicates whether -only or read-  Statements are supported by this U. Obtain with  ,  or .!It's safe and efficient to use a U8 concurrently as is. Concurrency is handled internally.VsqUse V to obtain the -only subset from a read- U.Useful if you are passing the U as an argument to some code, and you want to ensure that it can't performs  operations on it. The @new@ U is not new. It shares all the underlying resources with the original one, including their lifetime.Wsq Acquire a read-only transaction.3You may need this function if you are using one of G, H or I. Otherwise, just use J.XsqAcquire a read-write transaction where changes are finally commited to the database unless there is an unhandled exception during the transaction, in which case they are rolled back.3You may need this function if you are using one of G, H or I. Otherwise, just use K.YsqAcquire a read-write transaction where changes are always rolled back. This is mostly useful for testing purposes.3You may need this function if you are using one of G, H or I. Otherwise, just use K.+An equivalent behavior can be achieved by LMing changes between N and O in a Xting transaction. Or by using 3P and 3; within  Transactional. However, using a Y is much faster than using Qs.XWYVURNone"%&(-1>vZsqLike , but you can use it inside [ through the  and  vocabulary.sq INTERNAL.[sq[ g r t a4 groups together multiple interactions with a same I t& that finally produce a value of type a . Think of [ as if it was .g is an ephemeral tag for the whole inteaction group that prevents Zs and stream)s from escaping its intended scope (like ST: does it). Just ignore it, it will always be polymorphic.r says whether the [ could potentially be retried from scratch in order to observe a new snapshot of the database (like & does it). Learn more about this in \.t says whether the [ could potentially perform  or -only operations.a is the Haskell value finally produced by a successfu execution of the [. To execute a [ you will normally use one of J or K (or U or G, but those are less common). -- We are using K to execute the [ . This means  -- that the [ will have read and  capabilities, that  -- it can a1, and that ultimately, unless there are unhandled <-- exceptions, the changes will be commited to the database. Sq.K pool do -- We can execute  >s:  userId1 <- Sq.V  insertUser "haskell@example.com" -- And  >s:  userId2 <- Sq.V getUserIdByEmail "haskell@example.com"  -- We have  too:  (userId1 /= userId2) do ! "Something unexpected happened!" -- We also have Zs, which work just like s: ref <-  (0 :: ) -- 3; behaves like , undoing changes to Zs =-- and to the database itself when the original action fails:  userId3 <- 3; -- Something will fail ... (do  ref (+ 1) _ <- Sq.V  insertUser "sqlite@example.com" 3P FakeException123) -- ... but there is a catch! (\FakeException123 -> do 4-- The observable universe has been reset to what it -- was before the 3;: Sq.W getUserIdByEmail "sqlite@example.com"  ref (+ 10)) -- Only the effects from the exception handling function were preserved: Sq.W getUserIdByEmail "sqlite@example.com" 10 <-  ref -- a and its synonyms  and  not only discard changes as -- 3;' does, but they also cause the ongoing I to be -- discarded, and the entire [ to be executed again on a  -- brand new I. observing a new snapshot of the database. For <-- example, the following code will keep retrying the whole [ 2-- until the user with the specified email exists.  userId4 <- Sq. getUserIdByEmail "nix@example.com" >>= \case  x ->  x  -> a -- Presumably, this example was waiting for a concurrent connection to -- insert said user. If we got here, it is because that happened.  -- As usual,  and  can be handled by means of  and , -- or its synonym b.  <-  ( ref 8 >>  >>  ) ( ) -- The recent  to 8 on the aied [ was discarded: 10 <-  ref  () sqCurrent transaction.sqCurrently valid Z0s. We keep track of them in order to implement . The # is just for fast diffing purposes.sq Next unique  within the [ to be used as key in \sq Used as the r type-parameter in [ g r t a.If the [ uses any  or  feature, then r must be \ , and the [ can only be executed through J, K or U. Otherwise, r can be ]. In that case, _" can also be used to execute the [.sq&INTERNAL only. This doesn't deal with g.sqINTERNAL. Used to implement J, K and U.Run all the actions in a [ as part of a single I._sqEmbeds all the actions in a [ as part of an ongoing I.NOTICE Contrary to J, K or U, this [ cannot a4, as doing so would require cancelling the ongoing I.`sq Impurely fold the output rows. For a non-[ version of this function, see H.asqa behaves like 's XY. It causes the current I to be cancelled so that a new one can take its place and the entire [% is executed again. This allows the [+ to observe a new snapshot of the database.a,  and / all do fundamentally the same thing, however a8 leads to better type inferrence because it forces the r type-parameter to be \.NOTICE You only need to use  if you need access to a newer database snapshot. If all you want to do is undo some Z= transformation effects, or undo database changes, then use  which doesn't abandon the I.WARNING If we keep aing and the database never changes, then we will be stuck in a loop forever. To mitigate this, when executing the [ through J, K or U, you may want to use Z[& to abort at some point in the future.bsqb ma mb behaves like 's X\ ma mb. If ma completes without executing a), then that constitutes the entirety of b ma mb. Otherwise, if ma executed a, then all the effects from ma are discared and mb is tried in its place.b,  and  all do the same thing, but b7 has a more general type because it doesn't force the r type-parameter to be \.sq:Creates a @savepoint@ with the current state of the given s. The produced $ action can be used to rollback the s current state in the future.sqAll operations are atomic.sq  = a  = b sq  = a  = b sq3; behaves like STM's .In 3; ma f, if an exception is thrown by ma, then any database or Z changes made by ma% will be discarded. Furthermore, if f can handle said exception, then the action resulting from applying f" will be executed. Otherwise, if f0 can't handle the exception, it will bubble up.Note: This instance's ];/ catches async exceptions because that's what ]^ instances normaly do. As a user of this instance, you probably want to use Control.Exceptions.Safe to make sure you don't catch async exceptions unless you really want to.sqPointer equality_sqOngoing transaction. _`baZ\]^[None"%&(-1>~csqDE through B_. c =   .  Data.Acquire.D` dsqDE through 3a. d = "Control.Monad.Trans.Resource.Extra.Bb. esqDE through Bc. e =  Data.Acquire.Dd fsqAcquire a read- U temporarily persisted in the file-system. It will be deleted once released. This can be useful for testing.Use Di.ef to obtain the eg parameter. Consider using Di.Core.hi. to filter-out excessive logging. For example: Di.Core.hi \l _ _ -> l >= Df1.gjgsqAcquire a read- U according to the given J.Use Di.ef to obtain the eg parameter. Consider using Di.Core.hi. to filter-out excessive logging. For example: Di.Core.hi \l _ _ -> l >= Df1.gjhsq Acquire a -only U according to the given J.Use Di.ef to obtain the eg parameter. Consider using Di.Core.hi. to filter-out excessive logging. For example: Di.Core.hi \l _ _ -> l >= Df1.gjisq Executes a > expected to return  zero or one rows.Throws F if more than one row.jsq Executes a > expected to return exactly one row.Throws E if zero rows, F if more than one row.ksq Executes a > expected to return exactly zero rows.Throws F if more than zero rows.lsq Executes a > expected to return  one or more rows.Returns the length of the  list, too.Throws E if zero rows.msq Executes a > expected to return  zero or more rows.$Returns the length of the list, too.nsq Purely fold all the output rows.osq Execute a -only [ in a fresh I0 that will be automatically released when done.psqExecute a read- [ in a fresh I1 that will be automatically committed when done.qsqExecute a read- [ in a fresh I3 that will be automatically rolled-back when done.!This is mostly useful for testing.pnmicjohqlfedgkPRTSOQ6421503#!" '(<=XWYVA@B_`ba DEFGHCJKNLMI./)*+-,$%&798:;U?>Z\]^[>AB?@&'( #!";<=./0)*123645[opq_Zabjiklmn`QPUhgfVJLKNMOIWXYcdeCRST\^]$%+-,789:GHDEF klmklnkloklpklqklrklskltkl!kluklvkl"klwklxyz5-{|}~~,,,,,//////////////2222222666.66 :Q:::::::::[::::H:I:N::FF FF F RR<RRRRGRRYR\fd VW?JKUk,,,,,,,/////////////////////////////////////266666666.6666.99999999999999:::::[:::::::::::::::FRRRL;RRRRRRRRRRsq-0.0.1-3ralxBLthYkJjE6HIEqtAOSqsqSq.Mode Statement readStatement TransactionreadTransactionPoolreadPoolsubPoolwriteStatementcommitTransactionrollbackTransaction writePooltempPoolSq.NamesInputOutputinputoutputErrInput ErrOutput ErrStatementencodedecodeSq.Null EncodeDefault DecodeDefault encodeMaybe decodeMaybe Sq.EncodersSSQLDataSQLText ColumnType NullColumn IntegerColumn TextColumn BlobColumnTimeISO8601UTCTime FloatColumnSq.InputWritesql Sq.DecodersInteger ZonedTime Sq.OutputEx MonadThrowRead Sq.StatementTText Sq.Support Sq.Connectioncatch TransactionalDatabasepoolTempfoldZStreamR runResourceTAAcquireSq.PoolembedfoldIOstreamIOreadcommitControl.Exception.Safebracket savepoint rollbackTothrowM SavepointSq.Transactional Data.STRefSTrollbackonezeroControl.Concurrent.STMretrySystem.TimeouttimeoutorElseCx MonadCatch MonadResourceallocateAcquire MonadMask withAcquire MonadUnliftIOwithDinewDf1Di.CorefilterInfo+direct-sqlite-2.3.29-Kq2aheM3Z356K3NyVAtSq7Database.SQLite3SQLVFS SQLVFSDefault SQLVFSUnixSQLVFSUnixDotFileSQLVFSUnixExclSQLVFSUnixNoneSQLVFSUnixNamedSem SQLVFSCustom SQLIntegerSQLFloatSQLBlobSQLNullSubModeMode BindingNameNamenameNull encodeDefault ErrEncodeEncode encodeRefine encodeEitherencodeSizedIntegral encodeBinary encodeShow encodeAeson decodeDefault ErrDecodeErrDecode_TypeErrDecode_FailDecode decodeRefine decodeEitherdecodeSizedIntegral decodeBinary decodeRead decodeAesonErrOutput_ColumnValueErrOutput_ColumnMissingErrOutput_FailSQLErrRowsErrRows_TooFewErrRows_TooMany ErrStatement_DuplicateColumnNameSettingsvfsfilesettingssavepointRollbacksavepointReleaseRefRetryNoRetryfoldMuithmaybesomelist fromSModeSModeSReadSWritebase Data.StringIsStringrenderInputBindingNamerenderOutputBindingNameparseOutputBindingName bindingNameparseInputBindingName Data.EitherRightDatabase.SQLite3.DirectGHC.BaseStringGHC.Stack.Types CallStack GHC.MaybeJustLeftGHC.IntInt64$fEncodeDefaultTimeZone$fEncodeDefaultCalendarDiffTime$fEncodeDefaultCalendarDiffDays$fEncodeDefaultTimeOfDay$fEncodeDefaultDay$fEncodeDefaultLocalTime$fEncodeDefaultZonedTime$fEncodeDefaultUTCTime$fEncodeDefaultBuilder$fEncodeDefaultShortByteString$fEncodeDefaultByteString$fEncodeDefaultList$fEncodeDefaultChar$fEncodeDefaultBuilder0$fEncodeDefaultText$fEncodeDefaultNatural$fEncodeDefaultInteger$fEncodeDefaultWord64$fEncodeDefaultWord$fEncodeDefaultInt$fEncodeDefaultWord32$fEncodeDefaultInt32$fEncodeDefaultWord16$fEncodeDefaultInt16$fEncodeDefaultWord8$fEncodeDefaultInt8$fEncodeDefaultFloat$fEncodeDefaultBoolghc-prim GHC.TypesFalseTrue$fEncodeDefaultEither$fEncodeDefaultMaybe$fEncodeDefaultVoidabsurd$fEncodeDefaultNull$fEncodeDefaultByteString0$fEncodeDefaultDouble$fEncodeDefaultInt64$fEncodeDefaultText0$fEncodeDefaultSQLDataData.Functor.Contravariant Contravariant*contravariant-1.5.5-3Qr2Ksalp6z6SCHsPflVR9$Data.Functor.Contravariant.Divisible Divisible DecidableMonoidmemptydividedInt contramap$fIsStringInput$fSemigroupInput$fDivisibleInput bindInput rawBoundInputrunInput BoundInputNothing<|>$fMonadPlusDecode$fAlternativeDecode$fSemigroupDecode<>liftA2$fMonoidDecodepure$fDecodeDefaultFloat$fDecodeDefaultTimeZone$fDecodeDefaultCalendarDiffTime$fDecodeDefaultCalendarDiffDays$fDecodeDefaultTimeOfDay$fDecodeDefaultDay$fDecodeDefaultLocalTime$fDecodeDefaultZonedTime$fDecodeDefaultUTCTime$fDecodeDefaultBool$fDecodeDefaultNatural$fDecodeDefaultInt$fDecodeDefaultWord64$fDecodeDefaultWord$fDecodeDefaultWord32$fDecodeDefaultInt32$fDecodeDefaultWord16$fDecodeDefaultInt16$fDecodeDefaultWord8$fDecodeDefaultInt8$fDecodeDefaultInteger$fDecodeDefaultEither$fDecodeDefaultMaybe$fDecodeDefaultByteString$fDecodeDefaultList$fDecodeDefaultChar$fDecodeDefaultText$fDecodeDefaultNull$fDecodeDefaultByteString0$fDecodeDefaultText0$fDecodeDefaultDouble$fDecodeDefaultInt64$fDecodeDefaultSQLDataFunctor Applicative AlternativeMonad MonadPlusControl.Monad.Fail MonadFailwhenfail Data.Functor<$><*> runOutputtemplate-haskellLanguage.Haskell.TH.Quote QuasiQuoter$fHasFieldSymbol"text"SQLText $fShowSQL bindStatementBoundStatement newUniqueGHC.WordWord64 foldNonEmptyM foldMaybeM foldZeroMfoldOneM acquireTmpDirfoldList foldPostmapM hushThrow manyTill1notereleaseTypeExceptionresourceVanishedWithCallStackshow'PreparedStatement repreparesExclusiveConnection Connectionxconnc_sqlite3_stmt_statusc_sqlite3_sleepc_sqlite3_busy_handlerc_SQLITE_STMTSTATUS_REPREPAREIO rowPopperconnectionWriteTransaction connectionconnectionReadTransaction ConnectionId SavepointIdsmode TransactionIdpool GHC.Conc.SyncTVar%ref-tf-0.5.0.1-4RjXxe7bsZjKc817IGPXQgControl.Monad.RefMonadRefMonadAtomicRefErrRetrySTMnewRefcatchSTM modifyRefreadRefmzerocontainers-0.6.8-inplaceData.IntMap.Internalempty Data.MaybempluswriteRefEnvtxrefs.safe-exceptions-0.1.7.4-KzqDYHFDstpCr6G0jCcyqWIntMapuniqueuntransactionalRetry saveSomeRefsSomeRef$fMonadRefTransactional$fMonadPlusTransactional$fAlternativeTransactional$fMonadCatchTransactional$fEqReffmap Data.TuplesndNonEmpty