From: Frederik E. <fre...@a5...> - 2006-08-25 15:05:27
|
On Fri, Aug 25, 2006 at 11:20:55AM +0200, Bj=F6rn Bringert wrote: > Sorry for the delay, I've been on vacation. The timezone patch has been= committed.=20 Thanks. > I haven't added the Makefile, since I think that some cabal tools > that will come with GHC 6.6 could make it obsolete. I haven't heard of these, but I doubt that anything is going to be incompatible with the use of a makefile. The Makefile just runs the commands that you ask people to run, except that it figures out when 'runhaskell Setup.lhs configure' isn't necessary - and of course, it's much more concise to use. But you know better than I do. Frederik > 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 =3D toEnum $ mon, > >to > > ctMonth =3D 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 loca= l > >>>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 bee= n > >>>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 loc= al > >>>>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 f= rom > >>>>>>>the patch? > >>>>>> > >>>>>>It appears to have been a simple whitespace mismatch problem (tab= s in the original HSQL=20 > >>>>>>source). I have committed your patch to CVS. > >>>>>> > >>>>>>Thanks! > >>>>>> > >>>>>>/Bj=F6rn > >> > >>--=20 > >>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.0000= 00000 +0000 > >>+++ HSQL-1.7-modified-2/HSQL/Database/HSQL.hsc 2006-08-17 01:43:19.00= 0000000 +0100 > >>@@ -304,28 +304,17 @@ > >> toSqlValue d =3D show d > >>-mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Cloc= kTime > >>mkClockTime year mon mday hour min sec tz =3D > >>- 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__ >=3D 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 =3D ctTZ (unsafePerformIO (getClockTime >>=3D toCalendarTime)= ) -- Hack > >>+ toClockTime $ CalendarTime { > >>+ ctYear =3D year, > >>+ ctMonth =3D toEnum $ mon, > >>+ ctDay =3D mday, > >>+ ctHour =3D hour, > >>+ ctMin =3D min, > >>+ ctSec =3D sec, > >>+ ctPicosec =3D 0, > >>+ ctTZ =3D tz > >>+ } > >>parseTZ :: ReadP Int > >>parseTZ =3D (char '+' >> readDecP) `mplus` (char '-' >> fmap negate = readDecP) > >>@@ -373,14 +362,14 @@ > >> getTime :: ReadP ClockTime > >> getTime =3D 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 =3D f_read getDate s > >> where > >> getDate :: ReadP ClockTime > >> getDate =3D 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 =3D f_read getDateTimeTZ s > >> where > >>@@ -400,7 +389,7 @@ > >> getDateTime :: ReadP ClockTime > >> getDateTime =3D 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 _ _ =3D Nothing > >># This Makefile is mostly a wrapper around Setup.hs for people who > >># just want to type make. > >> > >>CAS=3Drunhaskell Setup.lhs > >>CONFOPTS ?=3D --user --prefix=3D${HOME} > >>INSTOPTS ?=3D --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.00000= 0000 +0000 > >+++ HSQL-1.7-modified-2/HSQL/Database/HSQL.hsc 2006-08-17 22:04:23.000= 000000 +0100 > >@@ -304,28 +304,17 @@ > > toSqlValue d =3D show d > > -mkClockTime :: Int -> Int -> Int -> Int -> Int -> Int -> Int -> Cloc= kTime > > mkClockTime year mon mday hour min sec tz =3D > >- 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__ >=3D 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 =3D ctTZ (unsafePerformIO (getClockTime >>=3D toCalendarTime))= -- Hack > >+ toClockTime $ CalendarTime { > >+ ctYear =3D year, > >+ ctMonth =3D toEnum $ (mon-1), > >+ ctDay =3D mday, > >+ ctHour =3D hour, > >+ ctMin =3D min, > >+ ctSec =3D sec, > >+ ctPicosec =3D 0, > >+ ctTZ =3D tz > >+ } > > parseTZ :: ReadP Int > > parseTZ =3D (char '+' >> readDecP) `mplus` (char '-' >> fmap negate = readDecP) > >@@ -373,14 +362,14 @@ > > getTime :: ReadP ClockTime > > getTime =3D 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 =3D f_read getDate s > > where > > getDate :: ReadP ClockTime > > getDate =3D 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 =3D f_read getDateTimeTZ s > > where > >@@ -400,7 +389,7 @@ > > getDateTime :: ReadP ClockTime > > getDateTime =3D 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 _ _ =3D Nothing > > ---------------------------------------------------------------------= --- > >----------------------------------------------------------------------= --- > >Using Tomcat but need to do more? Need to support web services, securi= ty? > >Get stuff done quickly with pre-integrated technology to make your job= easier > >Download IBM WebSphere Application Server v.1.0.1 based on Apache Gero= nimo > >http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&da= t=3D121642 > >----------------------------------------------------------------------= -- > >_______________________________________________ > >htoolkit-users mailing list > >hto...@li... > >https://lists.sourceforge.net/lists/listinfo/htoolkit-users >=20 --=20 http://ofb.net/~frederik/ |