Good to know.  The point that I made on the conf call was that 
"JDOHelper.getDate()" in JDOQL would be inconsistent with the actual API.  
Java's Date.getDate() returns an int in the range 1-31. 

It's for that reason that I'm advocating a JDOQL function instead.  I propose 
date() & DATE() for this.

--matthew

>-----Original Message-----
>From: Erik Bengtson [mailto:[EMAIL PROTECTED] 
>Sent: Friday, October 20, 2006 12:07 PM
>To: jdo-dev@db.apache.org; [EMAIL PROTECTED]
>Subject: RE: Feature proposal for JDO 2.1 maintenance: current DB time
>
>> I don't think that aligning with JPOX's JDOQL extensions is 
>a goal of the
>> spec. :)
>
>We can always try :)
>
>I'm happy with any expression, date(), currentDate(), Date.getDate(),
>JDOHelper.getDate(), etc.
>
>
>Quoting Matthew Adams <[EMAIL PROTECTED]>:
>
>> Hi Erik,
>>
>> I don't think that aligning with JPOX's JDOQL extensions is 
>a goal of the
>> spec. :)
>>
>> While Date has methods like getDay(), getMonth(), etc., and 
>Date's getDate()
>> method returns the day of the month between 1 & 31 (and is 
>deprecated in
>> favor of Calendar.get(Calendar.DAY_OF_MONTH)).
>>
>> The only native syntax in Java to do this is "new Date()", 
>but we know that
>> might have problems with JDOQL's constructor syntax.  This is why I
>> recommended the standalone function currentDate(), similar 
>to avg, count,
>> etc.
>>
>> To align with upper and lower casing conventions, I guess I 
>would recommend
>> "date()" and "DATE()" to avoid the camel casing.
>>
>> --matthew
>>
>> >-----Original Message-----
>> >From: Erik Bengtson [mailto:[EMAIL PROTECTED]
>> >Sent: Friday, October 20, 2006 11:42 AM
>> >To: jdo-dev@db.apache.org
>> >Cc: [EMAIL PROTECTED]
>> >Subject: Re: Feature proposal for JDO 2.1 maintenance: 
>current DB time
>> >
>> >Hi,
>> >
>> >I like the currentDate() and dislike adding methods to the PM.
>> >Methods unrelated
>> >to management of PCs lying in PM does not sound good to me,
>> >but currentDate in
>> >particular fits very well in JDOQL.
>> >
>> >JPOX has several additional JDOQL functions. Similar to
>> >currentDate(), we have
>> >Date.getDay(), Date.getMonth(), etc...
>> >http://www.jpox.org/docs/1_1/query_jdoql_methods.html
>> >
>> >I would propose Date.getDate() which aligns to JPOX JDOQL 
>methods. :)
>> >
>> >Regards,
>> >
>> >Quoting Michael Bouschen <[EMAIL PROTECTED]>:
>> >
>> >> Hi,
>> >>
>> >> another alternative is making it a keyword, so something like
>> >> CURRENTDATE or CURRENT_DATE w/o parenthesis.
>> >>
>> >> I agree with leaving the resolution of the return value 
>unresolved.
>> >>
>> >> Regards Michael
>> >> > As we discussed on the Fri conf call today, I think that a
>> >cleaner solution
>> >> is to introduce a new function "currentDate()" to JDOQL for
>> >this, similar to
>> >> JDOQL's count/sum/min/max/avg.  Further, I would prefer to
>> >leave unspecified
>> >> the resolution of the return value for this (second, 
>tenth of second,
>> >> millisecond, etc).
>> >> >
>> >> > As for the Bin Sun's proposal to add a method to the API
>> >for this purpose,
>> >> I think that it's interesting.  I would prefer that it be 
>placed on
>> >> PersistenceManager with the signature "Date
>> >getCurrentDate()".  It could be
>> >> specified that if the underlying datastore cannot support
>> >this functionality,
>> >> the implementation will return null.  I considered
>> >specifying that the
>> >> implementation should return "new Date()" in the event the
>> >datastore didn't
>> >> support it, but I think returning null is more informative
>> >to the caller.  It
>> >> clearly indicates that the caller just can't know the 
>answer to that
>> >> question, and the JVM's current datetime may be different
>> >enough from the
>> >> underlying database's datetime that using that value may be
>> >unreliable.  The
>> >> question of the datetime's resolution remains for this method.
>> >> >
>> >> > --matthew
>> >> >
>> >> >
>> >> >> -----Original Message-----
>> >> >> From: Bin Sun [mailto:[EMAIL PROTECTED]
>> >> >> Sent: Friday, October 20, 2006 1:59 AM
>> >> >> To: Michael Bouschen; jdo-dev@db.apache.org
>> >> >> Cc: Jörg" von Frantzius; JDO Expert Group
>> >> >> Subject: Re: Feature proposal for JDO 2.1 maintenance:
>> >current DB time
>> >> >>
>> >> >> Hi, all!
>> >> >>
>> >> >>    I think to least impact the current API, we'd
>> >> >> better simply add a method to PMF or PM:
>> >> >>    public Date getNow();
>> >> >>
>> >> >>    Then we can use this Date as a parameter in any
>> >> >> Query.
>> >> >>
>> >> >> --- Michael Bouschen <[EMAIL PROTECTED]> wrote:
>> >> >>
>> >> >>
>> >> >>> Hi,
>> >> >>>
>> >> >>> I see one issue with using the syntax "new Date()":
>> >> >>> it might conflict
>> >> >>> with the constructor expression used in the result
>> >> >>> expression, because
>> >> >>> both use the keyword "new". A constructor expression
>> >> >>> is only supported
>> >> >>> in the query result expression; it is used to wrap
>> >> >>> values into a result
>> >> >>> class element and it is evaluated on the client. The
>> >> >>> expression "new
>> >> >>> Date()" should be supported in the result and the
>> >> >>> filter, it does not
>> >> >>> wrap any other values and it is evaluated on the
>> >> >>> database back end.
>> >> >>> How about using a different syntax for the current
>> >> >>> database date, e.g.
>> >> >>> JDOHelper.CURRENT_DATE() ?
>> >> >>>
>> >> >>> The other interesting issue with the example from
>> >> >>> Jörg is that it does
>> >> >>> not define a candidate class. I think this was on
>> >> >>> purpose, because the
>> >> >>> query should not access any tables in the database,
>> >> >>> but just return the
>> >> >>> current date. Maybe we could use the JDOHelper as
>> >> >>> the candidate class in
>> >> >>> this case? This would be something similar to the
>> >> >>> DUAL table in oracle.
>> >> >>>
>> >> >>> Regards Michael
>> >> >>>
>> >> >>>> Your 1st requirement is to retrieve the date on
>> >> >>>>
>> >> >>> the client. A 2nd requirement
>> >> >>>
>> >> >>>> would be comparisons over database server date.
>> >> >>>>
>> >> >>>> I have one sample for the 2nd requirement
>> >> >>>>
>> >> >>>> Query query = newQuery("select from Person where
>> >> >>>>
>> >> >>> startDate > new Date()");
>> >> >>>
>> >> >>>> Quoting Jörg von Frantzius
>> >> >>>>
>> >> >>> <[EMAIL PROTECTED]>:
>> >> >>>
>> >> >>>>
>> >> >>>>
>> >> >>>>> Hi Craig,
>> >> >>>>>
>> >> >>>>> I'm not so sure whether this is really what you
>> >> >>>>>
>> >> >>> want to see, but here's
>> >> >>>
>> >> >>>>> something:
>> >> >>>>>
>> >> >>>>>     Query query = newQuery("new Date()");
>> >> >>>>>
>> >> >>>>>
>> >> >>> query.setResultClass(java.sql.Timestamp.class);
>> >> >>>
>> >> >>>>>     query.setUnique(true);
>> >> >>>>>     Date result = (Date)timeQuery.execute();
>> >> >>>>>
>> >> >>>>>
>> >> >>>>> That result Date can then be used to e.g. set an
>> >> >>>>>
>> >> >>> updated object's
>> >> >>>
>> >> >>>>> lastModification timestamp before committing it.
>> >> >>>>>
>> >> >>>>> Regards,
>> >> >>>>> Jörg
>> >> >>>>>
>> >> >>>>> Craig L Russell schrieb:
>> >> >>>>>
>> >> >>>>>
>> >> >>>>>> Hi Jörg,
>> >> >>>>>>
>> >> >>>>>> Sorry to exercise you more on this, but I'm
>> >> >>>>>>
>> >> >>> still having a bit of
>> >> >>>
>> >> >>>>>> difficulty seeing how to use this feature.
>> >> >>>>>>
>> >> >>>>>> Could you please give us an example of the use
>> >> >>>>>>
>> >> >>> case you describe
>> >> >>>
>> >> >>>>>> below? I'd like to see the JDOQL query that uses
>> >> >>>>>>
>> >> >>> new Date() in action.
>> >> >>>
>> >> >>>>>> Thanks!
>> >> >>>>>>
>> >> >>>>>> Craig
>> >> >>>>>>
>> >> >>>>>> On Oct 19, 2006, at 1:33 AM, Jörg von Frantzius
>> >> >>>>>>
>> >> >>> wrote:
>> >> >>>
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>> Hello Craig,
>> >> >>>>>>>
>> >> >>>>>>> as far as I can see that does satisfy our
>> >> >>>>>>>
>> >> >>> requirements. Once we are
>> >> >>>
>> >> >>>>>>> able to query for that date in JDOQL, we can
>> >> >>>>>>>
>> >> >>> use it e.g. for
>> >> >>>
>> >> >>>>>>> lastmodification timestamps and the like.
>> >> >>>>>>>
>> >> >>>>>>> Regards,
>> >> >>>>>>> Jörg
>> >> >>>>>>>
>> >> >>>>>>> Craig L Russell schrieb:
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>>> It's easy enough to define "new Date()" as
>> >> >>>>>>>>
>> >> >>> being evaluated on the
>> >> >>>
>> >> >>>>>>>> back end for queries that are executed on the
>> >> >>>>>>>>
>> >> >>> back end. And being
>> >> >>>
>> >> >>>>>>>> evaluated in the vm for queries that have a
>> >> >>>>>>>>
>> >> >>> bound candidateCollection.
>> >> >>>
>> >> >>>>>>>> But does this satisfy the requirements? Once
>> >> >>>>>>>>
>> >> >>> you have a Date in
>> >> >>>
>> >> >>>>>>>> JDOQL, what can you do with it?
>> >> >>>>>>>>
>> >> >>>>>>>> Craig
>> >> >>>>>>>>
>> >> >>>>>>>> On Oct 16, 2006, at 11:58 AM, Erik Bengtson
>> >> >>>>>>>>
>> >> >>> wrote:
>> >> >>>
>> >> >>>>>>>>
>> >> >>>>>>>>
>> >> >>>>>>>>> +1. maybe "new Date()" could be the
>> >> >>>>>>>>>
>> >> >>> expression where evaluation
>> >> >>>
>> >> >>>>>>>>> occurs on the
>> >> >>>>>>>>> database.
>> >> >>>>>>>>>
>> >> >>>>>>>>> Quoting Jörg von Frantzius
>> >> >>>>>>>>>
>> >> >>> <[EMAIL PROTECTED]>:
>> >> >>>
>> >> >>>>>>>>>
>> >> >>>>>>>>>
>> >> >>>>>>>>>> Dear experts,
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> there had been several occasions where in
>> >> >>>>>>>>>>
>> >> >>> our applications we had to
>> >> >>>
>> >> >>>>>>>>>> determine the database server's current
>> >> >>>>>>>>>>
>> >> >>> time(-stamp). In one
>> >> >>>
>> >> >>>>>>>>>> application
>> >> >>>>>>>>>> we needed it to synchronize sent JMS
>> >> >>>>>>>>>>
>> >> >>> messages with visibility of
>> >> >>>
>> >> >>>>>>>>>> commits
>> >> >>>>>>>>>> in the database, and in another we need it
>> >> >>>>>>>>>>
>> >> >>> for our simple replication
>> >> >>>
>> >> >>>>>>>>>> algorithm.
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> In distributed systems in general it is
>> >> >>>>>>>>>>
>> >> >>> often crucial for
>> >> >>>
>> >> >>>>>>>>>> synchronization purposes to have a common
>> >> >>>>>>>>>>
>> >> >>> source of time information
>> >> >>>
>> >> >>>>>>>>>> that is accessible from all processes.
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> It would be great if JDO2 could offer a way
>> >> >>>>>>>>>>
>> >> >>> of doing that
>> >> >>>
>> >> >>>>>>>>>> independently
>> >> >>>>>>>>>> of the database, e.g. as a JDOQL function.
>> >> >>>>>>>>>>
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> Regards,
>> >> >>>>>>>>>> Jörg
>> >> >>>>>>>>>>
>> >> >>>>>>>>>>
>> >> >>>>>>>>>>
>> >> >>>>>>>>>
>> >> >>>>>>>>>
>> >> >>>>>>>> Craig Russell
>> >> >>>>>>>> Architect, Sun Java Enterprise System
>> >> >>>>>>>>
>> >> >>> http://java.sun.com/products/jdo
>> >> >>>
>> >> >>>>>>>> 408 276-5638 mailto:[EMAIL PROTECTED]
>> >> >>>>>>>> P.S. A good JDO? O, Gasp!
>> >> >>>>>>>>
>> >> >>>>>>>>
>> >> >>>>>>>>
>> >> >>>>>> Craig Russell
>> >> >>>>>> Architect, Sun Java Enterprise System
>> >> >>>>>>
>> >> >>> http://java.sun.com/products/jdo
>> >> >>>
>> >> >>>>>> 408 276-5638 mailto:[EMAIL PROTECTED]
>> >> >>>>>> P.S. A good JDO? O, Gasp!
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>
>> >> >>>>>
>> >> >>>>
>> >> >>>>
>> >> >>> --
>> >> >>> Michael Bouschen              [EMAIL PROTECTED] Engineering GmbH
>> >> >>> mailto:[EMAIL PROTECTED]      http://www.tech.spree.de/
>> >> >>> Tel.:++49/30/235 520-33               Buelowstr. 66
>> >> >>> Fax.:++49/30/2175 2012                D-10783 Berlin
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >> __________________________________________________
>> >> >> Do You Yahoo!?
>> >> >> Tired of spam?  Yahoo! Mail has the best spam protection around
>> >> >> http://mail.yahoo.com
>> >> >>
>> >> >>
>> >>
>> >>
>> >> --
>> >> Michael Bouschen          [EMAIL PROTECTED] Engineering GmbH
>> >> mailto:[EMAIL PROTECTED]  http://www.tech.spree.de/
>> >> Tel.:++49/30/235 520-33           Buelowstr. 66
>> >> Fax.:++49/30/2175 2012            D-10783 Berlin
>> >>
>> >>
>> >
>> >
>> >
>> >
>>
>
>
>
>

Reply via email to