simplest-sqlite 0.1.0.8 → 0.1.0.9
raw patch · 3 files changed
+18/−9 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- simplest-sqlite.cabal +1/−1
- src/Database/SmplstSQLite3.hs +14/−4
- src/Database/SmplstSQLite3/Exception/Internal.hs +3/−4
simplest-sqlite.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.10 name: simplest-sqlite-version: 0.1.0.8+version: 0.1.0.9 stability: Experimental author: YoshikuniJujo <PAF01143@nifty.ne.jp> maintainer: YoshikuniJujo <PAF01143@nifty.ne.jp>
src/Database/SmplstSQLite3.hs view
@@ -107,6 +107,8 @@ c_sqlite3_column_text :: Ptr Stmt -> CInt -> IO CString foreign import ccall unsafe "sqlite3.h sqlite3_column_blob" c_sqlite3_column_blob :: Ptr Stmt -> CInt -> IO CString+foreign import ccall unsafe "sqlite3.h sqlite3_column_bytes"+ c_sqlite3_column_bytes :: Ptr Stmt -> CInt -> IO CInt class SQLiteDataList a where bindNList :: Stmt -> Int -> [a] -> IO ()@@ -158,8 +160,10 @@ instance SQLiteData BS.ByteString where bindN = sqlite3BindBlob- column (Stmt sm) i = packCString' "ByteString column"- =<< c_sqlite3_column_blob sm (fromIntegral i)+ column (Stmt sm) i = do+ ln <- c_sqlite3_column_bytes sm (fromIntegral i)+ cs <- c_sqlite3_column_blob sm (fromIntegral i)+ packCStringLen' "ByteString column" (cs, fromIntegral ln) instance SQLiteData T.Text where bindN sm i = sqlite3BindByteString sm i . T.encodeUtf8@@ -176,6 +180,11 @@ | cstr == nullPtr = nullPointerException em | otherwise = BS.packCString cstr +packCStringLen' :: String -> CStringLen -> IO BS.ByteString+packCStringLen' em csln@(cstr, _)+ | cstr == nullPtr = nullPointerException em+ | otherwise = BS.packCStringLen csln+ foreign import ccall unsafe "sqlite3.h sqlite3_bind_null" c_sqlite3_bind_null :: Ptr Stmt -> CInt -> IO CInt foreign import ccall unsafe "sqlite3.h sqlite3_bind_int"@@ -223,8 +232,9 @@ when (ret /= sQLITE_OK) $ sqliteThrow "Cannot bind text" ret sqlite3BindBlob :: Stmt -> Int -> BS.ByteString -> IO ()-sqlite3BindBlob (Stmt sm) i s = BS.useAsCString s $ \cs -> do- ret <- c_sqlite3_bind_blob sm (fromIntegral i) cs (- 1) nullPtr+sqlite3BindBlob (Stmt sm) i s = BS.useAsCStringLen s $ \(cs, n) -> do+ ret <- c_sqlite3_bind_blob+ sm (fromIntegral i) cs (fromIntegral n) nullPtr when (ret /= sQLITE_OK) $ sqliteThrow "Cannot bind text" ret foreign import ccall unsafe "sqlite3.h sqlite3_bind_parameter_index"
src/Database/SmplstSQLite3/Exception/Internal.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TemplateHaskell, ExistentialQuantification, DeriveDataTypeable #-}+{-# LANGUAGE TemplateHaskell, ExistentialQuantification #-} module Database.SmplstSQLite3.Exception.Internal ( sqliteThrow, sqliteThrowBindError,@@ -124,7 +124,6 @@ import Control.Exception import Control.Exception.Hierarchy-import Data.Typeable import Foreign.C.Types import Database.SmplstSQLite3.Constants@@ -233,7 +232,7 @@ "SQLITE_BIND_ERROR" ] -data SQLITE_ERROR_OTHER = SQLITE_ERROR_OTHER CInt String deriving (Typeable, Show)+data SQLITE_ERROR_OTHER = SQLITE_ERROR_OTHER CInt String deriving Show exceptionHierarchy Nothing $ ExNode "SQLiteException" [@@ -449,7 +448,7 @@ sqliteThrowBindError em = throw $ SQLITE_BIND_ERROR em newtype NullPointerException = NullPointerException String- deriving (Typeable, Show)+ deriving Show exceptionHierarchy Nothing (ExType ''NullPointerException)