packages feed

HDBC 2.3.1.2 → 2.4.0.5

raw patch · 11 files changed

Files

+ CHANGELOG.md view
@@ -0,0 +1,20 @@+# Changelog++#### 2.4.0.4++* Zero-prefix years when parsing dates.++#### 2.4.0.3++* Compatibility with GHC 8.8/time 1.9++#### 2.4.0.2++* Compatibility with GHC 8.2/time 1.8++#### 2.4.0.1++* Compatibility with time 1.5.+* Minor documentation fixes.++
Database/HDBC.hs view
@@ -128,28 +128,22 @@  * Support for querying database server properties   * Add-on package (hdbc-missingh) to integrate with MissingH,-   providing a database backend for AnyDBM.+   providing a database backend for AnyDBM - * Support for querying metadata such as column names.+ * Support for querying metadata such as column names   * Support for querying additional metadata (column types, etc.) -}  {- $drivers -Here is a list of known drivers as of January 26, 2009:+Here is a list of known drivers as of May 6, 2019: -[@Sqlite v3@] Available from <http://software.complete.org/hdbc-sqlite3>.  Or, to-participate in development, use -@git clone <git://git.complete.org/hdbc-sqlite3>@+[@Sqlite v3@] Available from <https://github.com/hdbc/hdbc-sqlite3>. -[@PostgreSQL@] Available from <http://software.complete.org/hdbc-postgresql>.  Or, to-participate in development, use-@git clone <git://git.complete.org/hdbc-postgresql>@+[@PostgreSQL@] Available from <https://github.com/hdbc/hdbc-postgresql>. -[@ODBC@] Available from <http://software.complete.org/hdbc-odbc>.  Or, to-partitipace in development, use-@git clone <git://git.complete.org/hdbc-odbc>@+[@ODBC@] Available from <https://github.com/hdbc/hdbc-odbc>.  [@MySQL@] MySQL users have two choices: the first is the ODBC driver, which works and has been tested against MySQL on both Linux\/Unix and Windows platforms.  There is@@ -157,16 +151,8 @@ <http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-mysql> with a homepage at <http://www.maubi.net/~waterson/hacks/hdbc-mysql.html>. -In addition, there is one integration package: /hdbc-anydbm/.  This-integrates with the AnyDBM library <http://software.complete.org/anydbm>.-It lets any HDBC database act as a backend for the-AnyDBM interface.  Available from <http://software.complete.org/hdbc-anydbm>.  Or,-to participate in development, use-@darcs get --partial <http://darcs.complete.org/hdbc-anydbm>@- The latest version of HDBC itself is available from-<http://software.complete.org/hdbc>.  Or, to participate in development, use-@git clone <git://git.complete.org/hdbc>@.+<https://github.com/hdbc/hdbc>. -}  {- $transactions
Database/HDBC/ColTypes.hs view
@@ -12,6 +12,7 @@  Written by John Goerzen, jgoerzen\@complete.org -}+{-# LANGUAGE DeriveDataTypeable #-}  module Database.HDBC.ColTypes (SqlColDesc(..),                                SqlTypeId(..),@@ -42,13 +43,7 @@               ,colDecDigits :: Maybe Int -- ^ Digits to the right of the period               ,colNullable :: Maybe Bool -- ^ Whether NULL is acceptable               }-   deriving (Eq, Read, Show)--sqlColDescTc :: TyCon-sqlColDescTc = mkTyCon "Database.HDBC.SqlColDesc"--instance Typeable SqlColDesc where-    typeOf _ = mkTyConApp sqlColDescTc []+   deriving (Eq, Read, Show, Typeable)  {- | The type identifier for a given column.  @@ -88,13 +83,7 @@     | SqlGUIDT                  -- ^ Global unique identifier     | SqlUnknownT String        -- ^ A type not represented here; implementation-specific information in the String -  deriving (Eq, Show, Read)--sqlTypeIdTc :: TyCon-sqlTypeIdTc = mkTyCon "Database.HDBC.SqlTypeId"--instance Typeable SqlTypeId where-    typeOf _ = mkTyConApp sqlTypeIdTc []+  deriving (Eq, Show, Read, Typeable)  {- | The different types of intervals in SQL. -} data SqlInterval =@@ -111,10 +100,4 @@     | SqlIntervalHourToMinuteT  -- ^ Difference in hours+minutes     | SqlIntervalHourToSecondT  -- ^ Difference in hours+seconds     | SqlIntervalMinuteToSecondT -- ^ Difference in minutes+seconds-      deriving (Eq, Show, Read)--sqlIntervalTc :: TyCon-sqlIntervalTc = mkTyCon "Database.HDBC.SqlInterval"--instance Typeable SqlInterval where-    typeOf _ = mkTyConApp sqlIntervalTc []+      deriving (Eq, Show, Read, Typeable)
Database/HDBC/Locale.hs view
@@ -1,17 +1,34 @@+{-# LANGUAGE CPP #-} module Database.HDBC.Locale     (      defaultTimeLocale,-     iso8601DateFormat+     iso8601DateFormat,+     oldIso8601DateFormat     )  where++#ifdef MIN_TIME_15+import Data.Time.Format (defaultTimeLocale)+#else import System.Locale (defaultTimeLocale)+#endif  -- | As the semantic of System.Locale.iso8601DateFormat has changed with --   old-locale-1.0.0.2 in a non-compatible way, we now define our own --   (compatible) version of it. iso8601DateFormat :: Maybe String -> String iso8601DateFormat mTimeFmt =+    "%0Y-%m-%d" ++ case mTimeFmt of+             Nothing  -> ""+             Just fmt -> ' ' : fmt++-- | HDBC would in versions up to and including 2.4.0.3 use this time format+-- string to serialize timestamps. To keep being able to deserialize timestamps+-- serialized on database engines that keep the representation intact (e.g.+-- SQLite) we keep this format string around, such that we can fall back to it.+oldIso8601DateFormat :: Maybe String -> String+oldIso8601DateFormat mTimeFmt =     "%Y-%m-%d" ++ case mTimeFmt of              Nothing  -> ""              Just fmt -> ' ' : fmt
Database/HDBC/SqlValue.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE StandaloneDeriving #-} module Database.HDBC.SqlValue     (      -- * SQL value marshalling@@ -7,6 +9,7 @@     )  where+import Control.Applicative ((<|>)) import Data.Dynamic import qualified Data.ByteString.UTF8 as BUTF8 import qualified Data.ByteString as B@@ -15,9 +18,18 @@ import Data.Word import Data.Int import qualified System.Time as ST-import Data.Time+import Data.Time ( Day (ModifiedJulianDay), DiffTime, LocalTime, NominalDiffTime, ParseTime+                 , TimeOfDay, TimeZone, UTCTime, ZonedTime, formatTime, localDay, localTimeOfDay+                 , timeOfDayToTime, timeToTimeOfDay, toModifiedJulianDay, utc+                 , utcToZonedTime, zonedTimeToLocalTime, zonedTimeToUTC, zonedTimeZone+#if MIN_TIME_15+                 , parseTimeM+#else+                 , parseTime+#endif+                 ) import Data.Time.Clock.POSIX-import Database.HDBC.Locale (defaultTimeLocale, iso8601DateFormat)+import Database.HDBC.Locale (defaultTimeLocale, iso8601DateFormat, oldIso8601DateFormat) import Data.Ratio import Data.Convertible import Data.Fixed@@ -59,7 +71,7 @@ posixToSql :: POSIXTime -> SqlValue posixToSql x = SqlPOSIXTime x -{- | 'SqlValue' is he main type for expressing Haskell values to SQL databases.+{- | 'SqlValue' is the main type for expressing Haskell values to SQL databases.  /INTRODUCTION TO SQLVALUE/ @@ -167,7 +179,7 @@  * Both represent the same type and the encapsulated values are considered equal    by applying (==) to them - * The values of each, when converted to a string, are equal.+ * The values of each, when converted to a string, are equal  /STRING VERSIONS OF TIMES/ @@ -198,21 +210,18 @@               | SqlBool Bool               | SqlDouble Double               | SqlRational Rational-              | SqlLocalDate Day            -- ^ Local YYYY-MM-DD (no timezone)-              | SqlLocalTimeOfDay TimeOfDay -- ^ Local HH:MM:SS (no timezone)+              | SqlLocalDate Day            -- ^ Local YYYY-MM-DD (no timezone).+              | SqlLocalTimeOfDay TimeOfDay -- ^ Local HH:MM:SS (no timezone).               | SqlZonedLocalTimeOfDay TimeOfDay TimeZone -- ^ Local HH:MM:SS -HHMM.  Converts to and from (TimeOfDay, TimeZone).-              | SqlLocalTime LocalTime      -- ^ Local YYYY-MM-DD HH:MM:SS (no timezone)+              | SqlLocalTime LocalTime      -- ^ Local YYYY-MM-DD HH:MM:SS (no timezone).               | SqlZonedTime ZonedTime      -- ^ Local YYYY-MM-DD HH:MM:SS -HHMM.  Considered equal if both convert to the same UTC time.-              | SqlUTCTime UTCTime          -- ^ UTC YYYY-MM-DD HH:MM:SS+              | SqlUTCTime UTCTime          -- ^ UTC YYYY-MM-DD HH:MM:SS.               | SqlDiffTime NominalDiffTime -- ^ Calendar diff between seconds.  Rendered as Integer when converted to String, but greater precision may be preserved for other types or to underlying database.               | SqlPOSIXTime POSIXTime      -- ^ Time as seconds since midnight Jan 1 1970 UTC.  Integer rendering as for 'SqlDiffTime'.               | SqlEpochTime Integer      -- ^ DEPRECATED Representation of ClockTime or CalendarTime.  Use SqlPOSIXTime instead.               | SqlTimeDiff Integer -- ^ DEPRECATED Representation of TimeDiff.  Use SqlDiffTime instead.-              | SqlNull         -- ^ NULL in SQL or Nothing in Haskell-     deriving (Show)--instance Typeable SqlValue where-    typeOf _ = mkTypeName "SqlValue"+              | SqlNull         -- ^ NULL in SQL or Nothing in Haskell.+     deriving (Show, Typeable)  instance Eq SqlValue where     SqlString a == SqlString b = a == b@@ -242,6 +251,9 @@     a == b = ((safeFromSql a)::ConvertResult String) ==               ((safeFromSql b)::ConvertResult String) +deriving instance Typeable ST.ClockTime+deriving instance Typeable ST.TimeDiff+ instance Convertible SqlValue SqlValue where     safeConvert = return @@ -595,30 +607,10 @@     safeConvert (SqlTimeDiff x) = return . fromIntegral $ x     safeConvert y@(SqlNull) = quickError y -#ifndef TIME_GT_113-instance Typeable Day where-    typeOf _ = mkTypeName "Day"-instance Typeable TimeOfDay where-    typeOf _ = mkTypeName "TimeOfDay"-instance Typeable LocalTime where-    typeOf _ = mkTypeName "LocalTime"-instance Typeable ZonedTime where-    typeOf _ = mkTypeName "ZonedTime"-instance Typeable DiffTime where-    typeOf _ = mkTypeName "DiffTime"-instance Typeable TimeZone where-    typeOf _ = mkTypeName "TimeZone"-#endif--instance Typeable ST.ClockTime where-    typeOf _ = mkTypeName "ClockTime"-instance Typeable ST.TimeDiff where-    typeOf _ = mkTypeName "TimeDiff"- instance Convertible Day SqlValue where     safeConvert = return . SqlLocalDate instance Convertible SqlValue Day where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat Nothing) x+    safeConvert (SqlString x) = parseTimeISO8601 Nothing x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert (SqlInt32 x) =          return $ ModifiedJulianDay {toModifiedJulianDay = fromIntegral x}@@ -679,7 +671,11 @@ instance Convertible SqlValue (TimeOfDay, TimeZone) where     safeConvert (SqlString x) =          do tod <- parseTime' "%T%Q %z" x+#if MIN_TIME_15+           tz <- case parseTimeM True defaultTimeLocale "%T%Q %z" x of+#else            tz <- case parseTime defaultTimeLocale "%T%Q %z" x of+#endif                       Nothing -> convError "Couldn't extract timezone in" (SqlString x)                       Just y -> Right y            return (tod, tz)@@ -709,7 +705,7 @@ instance Convertible LocalTime SqlValue where     safeConvert = return . SqlLocalTime instance Convertible SqlValue LocalTime where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T%Q")) x+    safeConvert (SqlString x) = parseTimeISO8601 (Just "%T%Q") x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert y@(SqlInt32 _) = quickError y     safeConvert y@(SqlInt64 _) = quickError y@@ -735,7 +731,7 @@ instance Convertible ZonedTime SqlValue where     safeConvert = return . SqlZonedTime instance Convertible SqlValue ZonedTime where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T%Q %z")) x+    safeConvert (SqlString x) = parseTimeISO8601 (Just "%T%Q %z") x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert (SqlInt32 x) = safeConvert (SqlInteger (fromIntegral x))     safeConvert (SqlInt64 x) = safeConvert (SqlInteger (fromIntegral x))@@ -761,7 +757,7 @@ instance Convertible UTCTime SqlValue where     safeConvert = return . SqlUTCTime instance Convertible SqlValue UTCTime where-    safeConvert (SqlString x) = parseTime' (iso8601DateFormat (Just "%T%Q")) x+    safeConvert (SqlString x) = parseTimeISO8601 (Just "%T%Q") x     safeConvert (SqlByteString x) = safeConvert (SqlString (BUTF8.toString x))     safeConvert y@(SqlInt32 _) = safeConvert y >>= return . posixSecondsToUTCTime     safeConvert y@(SqlInt64 _) = safeConvert y >>= return . posixSecondsToUTCTime@@ -953,8 +949,25 @@ #else parseTime' :: (Typeable t, Convertible SqlValue t, ParseTime t) => String -> String -> ConvertResult t parseTime' fmtstr inpstr = +#if MIN_TIME_15+    case parseTimeM True defaultTimeLocale fmtstr inpstr of+#else     case parseTime defaultTimeLocale fmtstr inpstr of+#endif       Nothing -> convError ("Cannot parse using default format string " ++ show fmtstr)                  (SqlString inpstr)       Just x -> Right x+#endif++parseTimeISO8601 :: (Typeable t, Convertible SqlValue t, ParseTime t) => Maybe String -> String -> ConvertResult t+parseTimeISO8601 fmtstr inpstr =+  case tryParse iso8601DateFormat <|> tryParse oldIso8601DateFormat of+    Nothing -> convError "Cannot parse ISO8601 timestamp" (SqlString inpstr)+    Just x -> Right x+  where+  tryParse fmtFunction =+#if MIN_TIME_15+    parseTimeM True defaultTimeLocale (fmtFunction fmtstr) inpstr+#else+    parseTime defaultTimeLocale (fmtFunction fmtstr) inpstr #endif
Database/HDBC/Statement.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DeriveDataTypeable #-} module Database.HDBC.Statement     (     Statement(..),@@ -107,13 +108,8 @@ data SqlError = SqlError {seState :: String,                           seNativeError :: Int,                           seErrorMsg :: String}-                deriving (Eq, Show, Read)--sqlErrorTc :: TyCon-sqlErrorTc = mkTyCon "Database.HDBC.SqlError"+                deriving (Eq, Show, Read, Typeable) -instance Typeable SqlError where-    typeOf _ = mkTyConApp sqlErrorTc []  #if __GLASGOW_HASKELL__ >= 610 --data SqlException
Database/HDBC/Utils.hs view
@@ -215,7 +215,7 @@         Just r -> do names <- getColumnNames sth                      return $ Just $ zip names r -{- | Strict version of 'fetchRowAL' -}+{- | Strict version of 'fetchRowAL'. -} fetchRowAL' :: Statement -> IO (Maybe [(String, SqlValue)]) fetchRowAL' sth =     do res <- fetchRowAL sth@@ -233,7 +233,7 @@               Nothing -> return Nothing               Just x -> return $ Just $ Map.fromList x -{- | Strict version of 'fetchRowMap' -}+{- | Strict version of 'fetchRowMap'. -} fetchRowMap' :: Statement -> IO (Maybe (Map.Map String SqlValue)) fetchRowMap' sth =      do res <- fetchRowMap sth@@ -272,7 +272,7 @@        return res  {- | A quick way to do a query.  Similar to preparing, executing, and-then calling 'fetchAllRows' on a statement. See also 'quickQuery'' -}+then calling 'fetchAllRows' on a statement. See also 'quickQuery''. -} quickQuery :: IConnection conn => conn -> String -> [SqlValue] -> IO [[SqlValue]] quickQuery conn qrystr args =     do sth <- prepare conn qrystr
HDBC.cabal view
@@ -1,12 +1,12 @@ Name: HDBC-Version: 2.3.1.2+Version: 2.4.0.5 License: BSD3-Maintainer: Nicolas Wu <nicolas.wu@gmail.com>-Author: John Goerzen+Maintainer: Nicolas Wu <nicolas.wu@gmail.com>, David Johnson <code@dmj.io>+Author: John Goerzen, Nicolas Wu homepage: https://github.com/hdbc/hdbc Copyright: Copyright (c) 2005-2011 John Goerzen license-file: LICENSE-extra-source-files: LICENSE, Makefile, README.md+extra-source-files: LICENSE, Makefile, README.md, CHANGELOG.md Category: Database synopsis: Haskell Database Connectivity Description: HDBC provides an abstraction layer between Haskell programs and SQL@@ -16,7 +16,7 @@ Stability: Stable Build-Type: Simple -Cabal-Version: >=1.8+Cabal-Version: >=1.10  source-repository head   type:            git@@ -27,21 +27,21 @@ flag buildtests   description: Build the executable to run unit tests   default: False--flag time_gte_113-  description: time > 1.1.3 has defined some more instances so omit them here+flag minTime15+  description: Use time 1.5 or higher.+  default: True  library   if flag(splitBase)-    Build-Depends: base>=3 && <5, old-time, time>=1.1.2.4 && <=1.5, bytestring, containers, old-locale-    if flag(time_gte_113)-      Build-Depends: time>=1.1.3-      CPP-OPTIONS: -DTIME_GT_113+    Build-Depends: base>=3 && <5, old-time, bytestring, containers+    if flag(minTime15)+      Build-Depends: time >= 1.5 && < 1.17+      CPP-Options: -DMIN_TIME_15     else-      Build-Depends: time<1.1.3+      Build-Depends: time >= 1.2 && < 1.5, old-locale   else     Build-Depends: base<3-  Build-Depends: mtl, convertible >= 1.0.10.0, text, utf8-string+  Build-Depends: mtl, convertible >= 1.1.0.0, text, utf8-string    -- Hack for cabal-install weirdness.  cabal-install forces base 3,   -- though it works fine for Setup.lhs manually.  Fix.@@ -54,25 +54,26 @@     Database.HDBC.ColTypes, Database.HDBC.Statement, Database.HDBC.SqlValue,     Database.HDBC.Locale   Other-Modules: Database.HDBC.Utils-  Extensions: ExistentialQuantification, CPP, MultiParamTypeClasses,+  Default-Extensions: ExistentialQuantification, CPP, MultiParamTypeClasses,     FlexibleContexts, TypeSynonymInstances, TypeOperators, RankNTypes,-    FlexibleInstances-    +    FlexibleInstances, DeriveDataTypeable+  Default-Language: Haskell2010+ Executable runtests    if flag(buildtests)       Buildable: True-      Build-Depends: HUnit, QuickCheck (>= 2.0), testpack (>= 2.0)+      Build-Depends: HUnit, QuickCheck >= 2.0        if flag(splitBase)-        Build-Depends: base>=3 && <5, old-time, time>=1.1.2.4 && <=1.5, bytestring, containers, old-locale-        if flag(time_gte_113)-          Build-Depends: time>=1.1.3-          CPP-OPTIONS: -DTIME_GT_113+        Build-Depends: base>=3 && <5, old-time, bytestring, containers+        if flag(minTime15)+          Build-Depends: time >= 1.5 && < 1.17+          CPP-Options: -DMIN_TIME_15         else-          Build-Depends: time<1.1.3+          Build-Depends: time >= 1.2 && < 1.5, old-locale       else         Build-Depends: base<3-      Build-Depends: mtl, convertible >= 1.0.9.1, utf8-string, text+      Build-Depends: mtl, convertible >= 1.1.0.0, utf8-string, text        -- Hack for cabal-install weirdness.  cabal-install forces base 3,       -- though it works fine for Setup.lhs manually.  Fix.@@ -82,10 +83,9 @@       Buildable: False    Main-Is: runtests.hs    Other-Modules: TestSqlValue-                  TestInfrastructure    Hs-Source-Dirs: ., testsrc    GHC-Options: -O2-   Extensions: ExistentialQuantification, CPP, MultiParamTypeClasses,+   Default-Extensions: ExistentialQuantification, CPP, MultiParamTypeClasses,      FlexibleContexts, TypeSynonymInstances, TypeOperators,      RankNTypes, FlexibleInstances-   +   Default-Language: Haskell2010
− testsrc/TestInfrastructure.hs
@@ -1,17 +0,0 @@-{--Copyright (C) 2009 John Goerzen <jgoerzen@complete.org>--All rights reserved.--For license and copyright information, see the file COPYRIGHT--}-module TestInfrastructure where-import qualified Test.QuickCheck as QC-import qualified Test.HUnit as HU-import Test.HUnit.Tools--q :: QC.Testable a => String -> a -> HU.Test-q = qc2hu 250--qverbose :: QC.Testable a => String -> a -> HU.Test-qverbose = qc2hu 250
testsrc/TestSqlValue.hs view
@@ -7,27 +7,25 @@ -}  module TestSqlValue where-import TestInfrastructure import Test.QuickCheck hiding (Result) import Test.QuickCheck.Property (Result)-import Test.QuickCheck.Tools import qualified Test.HUnit as HU import Database.HDBC-import Data.Time.Format+import Data.Time.Format (parseTime) import Data.Time.LocalTime-import Database.HDBC.Locale (defaultTimeLocale, iso8601DateFormat)+import Database.HDBC.Locale (defaultTimeLocale, iso8601DateFormat, oldIso8601DateFormat) import Data.Maybe  instance Eq ZonedTime where     a == b = zonedTimeToUTC a == zonedTimeToUTC b &&              zonedTimeZone a == zonedTimeZone b -toSql_Int :: Int -> Result-toSql_Int x = toSql x @?= SqlInt64 (fromIntegral x)+toSql_Int :: Int -> Property+toSql_Int x = toSql x === SqlInt64 (fromIntegral x) -fromSql_Int :: Int -> Result+fromSql_Int :: Int -> Property fromSql_Int x = -    Right x @=? safeFromSql (SqlInt64 (fromIntegral x))+    Right x === safeFromSql (SqlInt64 (fromIntegral x))  testZonedTimeStr = "1989-08-01 15:33:01 -0500" testZonedTime :: ZonedTime@@ -39,14 +37,25 @@ testZonedTimeFrac = fromJust $ parseTime defaultTimeLocale (iso8601DateFormat (Just "%T%Q %z"))                     testZonedTimeFracStr +testZonedTimeTwoDigitYearStr = "89-08-01 15:33:01 -0500"+testZonedTimeTwoDigitYear :: ZonedTime+testZonedTimeTwoDigitYear = fromJust $ parseTime defaultTimeLocale (oldIso8601DateFormat (Just "%T %z"))+                            testZonedTimeTwoDigitYearStr+ ztparsenf =     (HU.@=?) testZonedTime (fromSql (SqlString testZonedTimeStr)) ztparsef =     (HU.@=?) testZonedTimeFrac (fromSql (SqlString testZonedTimeFracStr))+ztparseTwoDigitYear =+    (HU.@=?) testZonedTimeTwoDigitYear (fromSql (SqlString testZonedTimeTwoDigitYearStr))  hut msg = HU.TestLabel msg . HU.TestCase -allt = [q "toSql Int" toSql_Int,-        q "safeFromSql Int" fromSql_Int,-        hut "non-frac parse" ztparsenf,-        hut "frac parse" ztparsef]+allHUnitTests = [hut "non-frac parse" ztparsenf,+                 hut "frac parse" ztparsef,+                 hut "old serialization of two digit year without leading zeros" ztparseTwoDigitYear+                ]++allQuickCheckTests = [toSql_Int,+                      fromSql_Int+                     ]
testsrc/runtests.hs view
@@ -1,14 +1,9 @@ module Main where import qualified Test.HUnit as HU-import Test.HUnit.Tools+import Test.QuickCheck (quickCheck)  import qualified TestSqlValue -test1 = HU.TestCase ((HU.@=?) "x" "x")--alltests = [HU.TestLabel "test1" test1,-            tl "TestSqlValue" TestSqlValue.allt-           ]--main = do runVerboseTests (HU.TestList alltests)+main = do HU.runTestTT (HU.TestList $ TestSqlValue.allHUnitTests)+          traverse quickCheck TestSqlValue.allQuickCheckTests           return ()