packages feed

beam-sqlite 0.5.3.0 → 0.5.4.0

raw patch · 5 files changed

+47/−53 lines, 5 filesdep −Win32dep −unixnew-uploaderPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: Win32, unix

API changes (from Hackage documentation)

- Database.Beam.Sqlite.Connection: instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
- Database.Beam.Sqlite.Connection: instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
- Database.Beam.Sqlite.Connection: instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
- Database.Beam.Sqlite.Connection: instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.ByteString
- Database.Beam.Sqlite.Syntax: instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.ByteString.Internal.ByteString
+ Database.Beam.Sqlite.Connection: instance Database.Beam.Backend.SQL.Row.FromBackendRow Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.Type.ByteString
+ Database.Beam.Sqlite.Connection: instance Database.Beam.Migrate.Generics.Tables.HasDefaultSqlDataType Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.Type.ByteString
+ Database.Beam.Sqlite.Connection: instance Database.Beam.Query.Ord.HasSqlEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.Type.ByteString
+ Database.Beam.Sqlite.Connection: instance Database.Beam.Query.Ord.HasSqlQuantifiedEqualityCheck Database.Beam.Sqlite.Connection.Sqlite Data.ByteString.Internal.Type.ByteString
+ Database.Beam.Sqlite.Syntax: instance Database.Beam.Backend.SQL.SQL92.HasSqlValueSyntax Database.Beam.Sqlite.Syntax.SqliteValueSyntax Data.ByteString.Internal.Type.ByteString

Files

ChangeLog.md view
@@ -1,17 +1,30 @@+# 0.5.4.0++## Added features++ * Removed the reliance on either the `unix` or `windows` package, which should enable (#738)+   `beam-sqlite` to be buildable on a wider variety of platforms.++# 0.5.3.1++## Added features++ * Replaced use of deprecated functions.+ # 0.5.3.0 -# Added features+## Added features   * Loosen some version bounds  * `HasSqlEqualityCheck` instance for `Day`  # 0.5.2.0 -# Bug fixes+## Bug fixes   * Fix encoding for `UTCTime` -# Addded features+## Addded features   * `IN (SELECT ...)` syntax via `inQuery_` 
Database/Beam/Sqlite/Connection.hs view
@@ -1,6 +1,5 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE BangPatterns #-}-{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE UndecidableInstances #-}@@ -72,6 +71,7 @@ import qualified Data.ByteString.Char8 as BS import qualified Data.ByteString.Lazy.Char8 as BL import qualified Data.DList as D+import           Data.Hashable (hash) import           Data.Int import           Data.Maybe (mapMaybe) import           Data.Proxy (Proxy(..))@@ -82,21 +82,13 @@ import qualified Data.Text.Lazy as TL import qualified Data.Text.Lazy.Encoding as TL (decodeUtf8) import           Data.Time ( LocalTime, UTCTime, Day-                           , ZonedTime, utc, utcToLocalTime )+                           , ZonedTime, utc, utcToLocalTime, getCurrentTime ) import           Data.Typeable (cast) import           Data.Word import           GHC.TypeLits  import           Network.URI -#ifdef UNIX-import           System.Posix.Process (getProcessID)-#elif defined(WINDOWS)-import           System.Win32.Process (getCurrentProcessId)-#else-#error Need either POSIX or Win32 API for MonadBeamInsertReturning-#endif- import           Text.Read (readMaybe)  -- | The SQLite backend. Used to parameterize 'MonadBeam' and 'FromBackendRow'@@ -388,34 +380,34 @@ runInsertReturningList (SqlInsert tblSettings insertStmt_@(SqliteInsertSyntax nm _ _ _)) =   do (logger, conn) <- SqliteM ask      SqliteM . liftIO $ do--#ifdef UNIX-       processId <- fromString . show <$> getProcessID-#elif defined(WINDOWS)-       processId <- fromString . show <$> getCurrentProcessId-#else-#error Need either POSIX or Win32 API for MonadBeamInsertReturning-#endif+       +       -- We create a pseudo-random savepoint identification that can be referenced+       -- throughout this operation. -- This used to be based on the process ID +       -- (e.g. `System.Posix.Process.getProcessID` for UNIX),+       -- but using timestamps is more portable; see #738+       --+       -- Note that `hash` can return negative numbers, hence the use of `abs`.+       savepointId <- fromString . show . abs . hash <$> getCurrentTime         let tableNameTxt = T.decodeUtf8 (BL.toStrict (sqliteRenderSyntaxScript (fromSqliteTableName nm)))             startSavepoint =-             execute_ conn (Query ("SAVEPOINT insert_savepoint_" <> processId))+             execute_ conn (Query ("SAVEPOINT insert_savepoint_" <> savepointId))            rollbackToSavepoint =-             execute_ conn (Query ("ROLLBACK TRANSACTION TO SAVEPOINT insert_savepoint_" <> processId))+             execute_ conn (Query ("ROLLBACK TRANSACTION TO SAVEPOINT insert_savepoint_" <> savepointId))            releaseSavepoint =-             execute_ conn (Query ("RELEASE SAVEPOINT insert_savepoint_" <> processId))+             execute_ conn (Query ("RELEASE SAVEPOINT insert_savepoint_" <> savepointId))             createInsertedValuesTable =-             execute_ conn (Query ("CREATE TEMPORARY TABLE inserted_values_" <> processId <> " AS SELECT * FROM " <> tableNameTxt <> " LIMIT 0"))+             execute_ conn (Query ("CREATE TEMPORARY TABLE inserted_values_" <> savepointId <> " AS SELECT * FROM " <> tableNameTxt <> " LIMIT 0"))            dropInsertedValuesTable =-             execute_ conn (Query ("DROP TABLE inserted_values_" <> processId))+             execute_ conn (Query ("DROP TABLE inserted_values_" <> savepointId))             createInsertTrigger =-             execute_ conn (Query ("CREATE TEMPORARY TRIGGER insert_trigger_" <> processId <> " AFTER INSERT ON " <> tableNameTxt <> " BEGIN " <>-                                   "INSERT INTO inserted_values_" <> processId <> " SELECT * FROM " <> tableNameTxt <> " WHERE ROWID=last_insert_rowid(); END" ))+             execute_ conn (Query ("CREATE TEMPORARY TRIGGER insert_trigger_" <> savepointId <> " AFTER INSERT ON " <> tableNameTxt <> " BEGIN " <>+                                   "INSERT INTO inserted_values_" <> savepointId <> " SELECT * FROM " <> tableNameTxt <> " WHERE ROWID=last_insert_rowid(); END" ))            dropInsertTrigger =-             execute_ conn (Query ("DROP TRIGGER insert_trigger_" <> processId))+             execute_ conn (Query ("DROP TRIGGER insert_trigger_" <> savepointId))          mask $ \restore -> do@@ -430,7 +422,7 @@                               allBeamValues (\(Columnar' projField) -> quotedIdentifier (_fieldName projField)) $                               tblSettings -                fmap (\(BeamSqliteRow r) -> r) <$> query_ conn (Query ("SELECT " <> columns <> " FROM inserted_values_" <> processId))+                fmap (\(BeamSqliteRow r) -> r) <$> query_ conn (Query ("SELECT " <> columns <> " FROM inserted_values_" <> savepointId))            releaseSavepoint            return x 
Database/Beam/Sqlite/Migrate.hs view
@@ -3,8 +3,7 @@  -- | Migrations support for SQLite databases module Database.Beam.Sqlite.Migrate-  ( -- * @beam-migrate@ CLI support-    migrationBackend, SqliteCommandSyntax+  ( migrationBackend, SqliteCommandSyntax      -- * @beam-migrate@ utility functions   , migrateScript, writeMigrationScript@@ -48,8 +47,7 @@ import qualified Data.Text as T import qualified Data.Text.Encoding as TE --- | Top-level 'Tool.BeamMigrationBackend' loaded dynamically by the--- @beam-migrate@ CLI tool.+-- | Top-level 'Tool.BeamMigrationBackend' migrationBackend :: Tool.BeamMigrationBackend Sqlite SqliteM migrationBackend = Tool.BeamMigrationBackend                        "sqlite"
Database/Beam/Sqlite/Syntax.hs view
@@ -68,6 +68,7 @@ import qualified Data.Text.Encoding as TE import qualified Data.Text.Lazy as TL import           Data.Time+import qualified Data.Time.Format.ISO8601 as Time import           Data.Word #if !MIN_VERSION_base(4, 11, 0) import           Data.Semigroup@@ -105,12 +106,11 @@   displaySyntax = BL.unpack . sqliteRenderSyntaxScript  instance Semigroup SqliteSyntax where-  (<>) = mappend+  (<>) (SqliteSyntax ab av) (SqliteSyntax bb bv) =+    SqliteSyntax (\v -> ab v <> bb v) (av <> bv)  instance Monoid SqliteSyntax where   mempty = SqliteSyntax (\_ -> mempty) mempty-  mappend (SqliteSyntax ab av) (SqliteSyntax bb bv) =-    SqliteSyntax (\v -> ab v <> bb v) (av <> bv)  instance Eq SqliteSyntax where   SqliteSyntax ab av == SqliteSyntax bb bv =@@ -967,12 +967,10 @@   sqlValueSyntax tm = SqliteValueSyntax (emitValue (toField tm))  instance HasSqlValueSyntax SqliteValueSyntax LocalTime where-  sqlValueSyntax tm = SqliteValueSyntax (emitValue (SQLText (fromString tmStr)))-    where tmStr = formatTime defaultTimeLocale (iso8601DateFormat (Just "%H:%M:%S%Q")) tm+  sqlValueSyntax tm = SqliteValueSyntax (emitValue (SQLText (fromString (Time.formatShow Time.iso8601Format tm))))  instance HasSqlValueSyntax SqliteValueSyntax Day where-  sqlValueSyntax tm = SqliteValueSyntax (emitValue (SQLText (fromString tmStr)))-    where tmStr = formatTime defaultTimeLocale (iso8601DateFormat Nothing) tm+  sqlValueSyntax tm = SqliteValueSyntax (emitValue (SQLText (fromString (Time.formatShow Time.iso8601Format tm))))  instance HasDataTypeCreatedCheck SqliteDataTypeSyntax where   dataTypeHasBeenCreated _ _ = True
beam-sqlite.cabal view
@@ -1,5 +1,5 @@ name:                beam-sqlite-version:             0.5.3.0+version:             0.5.4.0 synopsis:            Beam driver for SQLite description:         Beam driver for the <https://sqlite.org/ SQLite> embedded database.                      See <https://haskell-beam.github.io/beam/user-guide/backends/beam-sqlite/ here>@@ -29,9 +29,9 @@                       beam-migrate  >=0.5  && <0.6,                        sqlite-simple >=0.4  && <0.5,-                      text          >=1.0  && <2.1,-                      bytestring    >=0.10 && <0.12,-                      hashable      >=1.2  && <1.5,+                      text          >=1.0  && <2.2,+                      bytestring    >=0.10 && <0.13,+                      hashable      >=1.2  && <1.6,                       time          >=1.6  && <1.13,                       dlist         >=0.8  && <1.1,                       mtl           >=2.1  && <2.4,@@ -39,7 +39,7 @@                       scientific    >=0.3  && <0.4,                       monad-control        >=1.0  && <1.1,                       network-uri   >=2.6  && <2.7,-                      aeson         >=0.11 && <2.2,+                      aeson         >=0.11 && <2.3,                       attoparsec    >=0.13 && <0.15,                       transformers-base    >=0.4  && <0.5   default-language:   Haskell2010@@ -49,13 +49,6 @@   ghc-options:        -Wall   if flag(werror)     ghc-options:       -Werror--  if os(windows)-    cpp-options:      -DWINDOWS-    build-depends:    Win32         >=2.4 && <2.8-  if os(freebsd) || os(netbsd) || os(openbsd) || os(darwin) || os(linux) || os(solaris) || os(android)-    cpp-options:      -DUNIX-    build-depends:    unix          >=2.0 && <2.9  test-suite beam-sqlite-tests   type: exitcode-stdio-1.0