From: Frederik E. <fre...@a5...> - 2008-01-20 04:47:04
|
Hello all, Is there going to be a new maintainer for HSQL? I have submitted a number of patches to fix some painful bugs. It's been almost a year since my previous enquiry and the last release was December 15, 2005, over two years ago: https://sourceforge.net/project/showfiles.php?group_id=65248 The software no longer compiles with the latest version of GHC, due to some (seemingly gratuitous) changes in the Cabal libraries (I see there is a September 2007 thread on libraries@). Unfortunately, I am too busy to maintain it myself; I was probably even too busy to write the patches in the first place, but it is sad to see them go to waste... Frederik P.S. Quan Ta: regarding your July 20, 2006 query, "HSQL-MySQL: non-standard port", my first patch adds the ability to specify a non-standard port with the server host name, if you are still interested I can send it. On Sun, Mar 25, 2007 at 06:55:21PM +0200, Björn Bringert wrote: > I found this very old mail in my inbox, sorry for not responding sooner. > Yeah, a new HSQL release would be a good idea, IMO. Krasimir is the > maintainer, so it's really up to him. > > /Björn > > Frederik Eaton wrote: > > Hi Bjorn, > > > > The sourceforge page for HSQL shows a most recent release date of > > December 15, 2005 - over a year ago, presumably not including the > > timezone patch which I think fixes a rather serious bug, which caused > > a lot of problems for me when I tried to use HSQL for my master's > > project. Perhaps it might be helpful to other users if the fix were > > made available to them as well? > > > > Thanks, > > > > Frederik > > > > On Fri, Aug 25, 2006 at 11:20:55AM +0200, Björn Bringert wrote: > >> Sorry for the delay, I've been on vacation. The timezone patch has been > >> committed. I haven't added the Makefile, since I think that some cabal > >> tools that will come with GHC 6.6 could make it obsolete. > >> > >> /Björn > >> > >> Frederik Eaton wrote: > >>> Hi, > >>> > >>> Oops, sorry, there was a bug. Here's a more-tested patch. Stay tuned! > >>> > >>> (if you've already applied the last one, change HSQL.hsc's > >>> > >>> ctMonth = toEnum $ mon, > >>> > >>> to > >>> > >>> ctMonth = toEnum $ (mon-1), > >>> > >>> ) > >>> > >>> Frederik > >>> > >>> On Thu, Aug 17, 2006 at 01:49:40AM +0100, Frederik Eaton wrote: > >>> > >>>> I'm attaching a patch which I've tested. > >>>> > >>>> I'm also attaching a Makefile derived from Bulat's IIRC, it might be > >>>> good to include it in those directories which contain a .cabal file. > >>>> > >>>> Thanks, > >>>> > >>>> Frederik > >>>> > >>>> On Thu, Aug 17, 2006 at 01:17:11AM +0100, Frederik Eaton wrote: > >>>> > >>>>> Hi, in > >>>>> > >>>>> HSQL/Database/HSQL.hsc > >>>>> > >>>>> instance SqlBind ClockTime where > >>>>> ... > >>>>> > >>>>> all of the 'fromSqlValue' functions convert with respect to the local > >>>>> timezone, while 'toSqlValue' converts with respect to UTC. Thus the > >>>>> values being written are not the same, it would seem, as those being > >>>>> read. Certainly that is the case for me. > >>>>> > >>>>> If the three appearances of currTZ within the body of that instance > >>>>> (and not elsewhere) are changed to 0, it should fix the problem (but I > >>>>> haven't tested). > >>>>> > >>>>> Also, I don't understand why a custom function 'mkClockTime' has been > >>>>> written in that module (it calls 'mktime' via FFI), rather than > >>>>> calling the standard library function toClockTime which seems to do > >>>>> the same thing. > >>>>> > >>>>> Frederik > >>>>> > >>>>> On Thu, Aug 10, 2006 at 04:19:36PM +0100, Frederik Eaton wrote: > >>>>> > >>>>>> In HSQL, why are 'datetime' columns interpreted as being in the local > >>>>>> timezone? > >>>>>> > >>>>>> I would think that UTC would be more useful. If the local timezone is > >>>>>> used, then it makes it more difficult to move a server between > >>>>>> timezones, or to have multiple servers in multiple timezones. > >>>>>> > >>>>>> Frederik > >>>>>> > >>>>>> On Sat, Aug 05, 2006 at 06:59:21PM +0100, Frederik Eaton wrote: > >>>>>> > >>>>>>> Thanks! > >>>>>>> > >>>>>>> On Sat, Aug 05, 2006 at 05:27:04PM +0200, Bjorn Bringert wrote: > >>>>>>> > >>>>>>>> On Aug 5, 2006, at 3:34 PM, Frederik Eaton wrote: > >>>>>>>> > >>>>>>>> > >>>>>>>>> On Sat, Aug 05, 2006 at 11:15:19AM +0200, Bjorn Bringert wrote: > >>>>>>>>> > >>>>>>>>>> On Jul 31, 2006, at 12:55 PM, Frederik Eaton wrote: > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>> Hi, > >>>>>>>>>>> > >>>>>>>>>>> I'm attaching another HSQL patch. > >>>>>>>>>>> > >>>>>>>>>>> It allows users to specify a port number with the server name in the > >>>>>>>>>>> MySQL client. > >>>>>>>>>>> > >>>>>>>>>>> Frederik > >>>>>>>>>> Hi Frederik, > >>>>>>>>>> > >>>>>>>>>> the patch doesn't apply cleanly against the current CVS version. Is > >>>>>>>>>> there any chance you could make a patch against the CVS version > >>>>>>>>>> instead? > >>>>>>>>> It's a very simple modification, can't you just copy and paste from > >>>>>>>>> the patch? > >>>>>>>> It appears to have been a simple whitespace mismatch problem (tabs in the original HSQL source). I > >>>>>>>> have committed your patch to CVS. > >>>>>>>> > >>>>>>>> Thanks! > >>>>>>>> > >>>>>>>> /Björn > >>>> -- > >>>> http://ofb.net/~frederik/ > >>> > >>>> diff -ur HSQL-1.7-modified/HSQL/Database/HSQL.hsc HSQL-1.7-modified-2/HSQL/Database/HSQL.hsc > >>>> --- HSQL-1.7-modified/HSQL/Database/HSQL.hsc 2005-12-15 20:57:18.000000000 +0000 > >>>> +++ HSQL-1.7-modified-2/HSQL/Database/HSQL.hsc 2006-08-17 01:43:19.000000000 +0100 > >>>> @@ -304,28 +304,17 @@ > >>>> > >>>> toSqlValue d = show d > >>>> > >>>> -mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> ClockTime > >>>> mkClockTime year mon mday hour min sec tz = > >>>> - unsafePerformIO $ do > >>>> - allocaBytes (#const sizeof(struct tm)) $ \ p_tm -> do > >>>> - (#poke struct tm,tm_sec ) p_tm (fromIntegral sec :: CInt) > >>>> - (#poke struct tm,tm_min ) p_tm (fromIntegral min :: CInt) > >>>> - (#poke struct tm,tm_hour ) p_tm (fromIntegral hour :: CInt) > >>>> - (#poke struct tm,tm_mday ) p_tm (fromIntegral mday :: CInt) > >>>> - (#poke struct tm,tm_mon ) p_tm (fromIntegral (mon-1) :: CInt) > >>>> - (#poke struct tm,tm_year ) p_tm (fromIntegral (year-1900) :: CInt) > >>>> - (#poke struct tm,tm_isdst) p_tm (-1 :: CInt) > >>>> - t <- mktime p_tm > >>>> -#if __GLASGOW_HASKELL__ >= 603 > >>>> - return (TOD (fromIntegral (fromEnum t) + fromIntegral (tz-currTZ)) 0) > >>>> -#else > >>>> - return (TOD (fromIntegral t + fromIntegral (tz-currTZ)) 0) > >>>> -#endif > >>>> -foreign import ccall unsafe mktime :: Ptr () -> IO CTime > >>>> - > >>>> -{-# NOINLINE currTZ #-} > >>>> -currTZ :: Int > >>>> -currTZ = ctTZ (unsafePerformIO (getClockTime >>= toCalendarTime)) -- Hack > >>>> + toClockTime $ CalendarTime { > >>>> + ctYear = year, > >>>> + ctMonth = toEnum $ mon, > >>>> + ctDay = mday, > >>>> + ctHour = hour, > >>>> + ctMin = min, > >>>> + ctSec = sec, > >>>> + ctPicosec = 0, > >>>> + ctTZ = tz > >>>> + } > >>>> > >>>> parseTZ :: ReadP Int > >>>> parseTZ = (char '+' >> readDecP) `mplus` (char '-' >> fmap negate readDecP) > >>>> @@ -373,14 +362,14 @@ > >>>> getTime :: ReadP ClockTime > >>>> getTime = do > >>>> (hour, minutes, seconds) <- readHMS > >>>> - return (mkClockTime 1970 1 1 hour minutes seconds currTZ) > >>>> + return (mkClockTime 1970 1 1 hour minutes seconds 0) > >>>> > >>>> fromSqlValue SqlDate s = f_read getDate s > >>>> where > >>>> getDate :: ReadP ClockTime > >>>> getDate = do > >>>> (year, month, day) <- readYMD > >>>> - return (mkClockTime year month day 0 0 0 currTZ) > >>>> + return (mkClockTime year month day 0 0 0 0) > >>>> > >>>> fromSqlValue SqlDateTimeTZ s = f_read getDateTimeTZ s > >>>> where > >>>> @@ -400,7 +389,7 @@ > >>>> getDateTime :: ReadP ClockTime > >>>> getDateTime = do > >>>> (year, month, day, hour, minutes, seconds) <- readDateTime > >>>> - return (mkClockTime year month day hour minutes seconds currTZ) > >>>> + return (mkClockTime year month day hour minutes seconds 0) > >>>> > >>>> fromSqlValue _ _ = Nothing > >>>> > >>> > >>>> # This Makefile is mostly a wrapper around Setup.hs for people who > >>>> # just want to type make. > >>>> > >>>> CAS=runhaskell Setup.lhs > >>>> CONFOPTS ?= --user --prefix=${HOME} > >>>> INSTOPTS ?= --user > >>>> > >>>> all: build > >>>> > >>>> configure: .setup-config > >>>> .setup-config: HSQL.cabal > >>>> ${CAS} configure ${CONFOPTS} > >>>> > >>>> build: configure > >>>> ${CAS} build > >>>> > >>>> install: build > >>>> ${CAS} install ${INSTOPTS} > >>>> > >>>> uninstall: unregister > >>>> unregister: configure > >>>> ${CAS} unregister > >>>> > >>>> clean: > >>>> -runhaskell Setup.hs clean > >>>> -rm -rf dist > >>>> -rm -f .setup-config > >>>> > >>>> .PHONY: all configure build install uninstall unregister clean > >>> > >>> > >>> > >>> ------------------------------------------------------------------------ > >>> > >>> diff -ur HSQL-1.7-modified/HSQL/Database/HSQL.hsc HSQL-1.7-modified-2/HSQL/Database/HSQL.hsc > >>> --- HSQL-1.7-modified/HSQL/Database/HSQL.hsc 2005-12-15 20:57:18.000000000 +0000 > >>> +++ HSQL-1.7-modified-2/HSQL/Database/HSQL.hsc 2006-08-17 22:04:23.000000000 +0100 > >>> @@ -304,28 +304,17 @@ > >>> > >>> toSqlValue d = show d > >>> > >>> -mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> ClockTime > >>> mkClockTime year mon mday hour min sec tz = > >>> - unsafePerformIO $ do > >>> - allocaBytes (#const sizeof(struct tm)) $ \ p_tm -> do > >>> - (#poke struct tm,tm_sec ) p_tm (fromIntegral sec :: CInt) > >>> - (#poke struct tm,tm_min ) p_tm (fromIntegral min :: CInt) > >>> - (#poke struct tm,tm_hour ) p_tm (fromIntegral hour :: CInt) > >>> - (#poke struct tm,tm_mday ) p_tm (fromIntegral mday :: CInt) > >>> - (#poke struct tm,tm_mon ) p_tm (fromIntegral (mon-1) :: CInt) > >>> - (#poke struct tm,tm_year ) p_tm (fromIntegral (year-1900) :: CInt) > >>> - (#poke struct tm,tm_isdst) p_tm (-1 :: CInt) > >>> - t <- mktime p_tm > >>> -#if __GLASGOW_HASKELL__ >= 603 > >>> - return (TOD (fromIntegral (fromEnum t) + fromIntegral (tz-currTZ)) 0) > >>> -#else > >>> - return (TOD (fromIntegral t + fromIntegral (tz-currTZ)) 0) > >>> -#endif > >>> -foreign import ccall unsafe mktime :: Ptr () -> IO CTime > >>> - > >>> -{-# NOINLINE currTZ #-} > >>> -currTZ :: Int > >>> -currTZ = ctTZ (unsafePerformIO (getClockTime >>= toCalendarTime)) -- Hack > >>> + toClockTime $ CalendarTime { > >>> + ctYear = year, > >>> + ctMonth = toEnum $ (mon-1), > >>> + ctDay = mday, > >>> + ctHour = hour, > >>> + ctMin = min, > >>> + ctSec = sec, > >>> + ctPicosec = 0, > >>> + ctTZ = tz > >>> + } > >>> > >>> parseTZ :: ReadP Int > >>> parseTZ = (char '+' >> readDecP) `mplus` (char '-' >> fmap negate readDecP) > >>> @@ -373,14 +362,14 @@ > >>> getTime :: ReadP ClockTime > >>> getTime = do > >>> (hour, minutes, seconds) <- readHMS > >>> - return (mkClockTime 1970 1 1 hour minutes seconds currTZ) > >>> + return (mkClockTime 1970 1 1 hour minutes seconds 0) > >>> > >>> fromSqlValue SqlDate s = f_read getDate s > >>> where > >>> getDate :: ReadP ClockTime > >>> getDate = do > >>> (year, month, day) <- readYMD > >>> - return (mkClockTime year month day 0 0 0 currTZ) > >>> + return (mkClockTime year month day 0 0 0 0) > >>> > >>> fromSqlValue SqlDateTimeTZ s = f_read getDateTimeTZ s > >>> where > >>> @@ -400,7 +389,7 @@ > >>> getDateTime :: ReadP ClockTime > >>> getDateTime = do > >>> (year, month, day, hour, minutes, seconds) <- readDateTime > >>> - return (mkClockTime year month day hour minutes seconds currTZ) > >>> + return (mkClockTime year month day hour minutes seconds 0) > >>> > >>> fromSqlValue _ _ = Nothing > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > htoolkit-users mailing list > hto...@li... > https://lists.sourceforge.net/lists/listinfo/htoolkit-users > -- http://ofb.net/~frederik/ |