db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Bouschen <mbo.t...@spree.de>
Subject Re: Feature proposal for JDO 2.1 maintenance: current DB time
Date Thu, 19 Oct 2006 22:12:52 GMT
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 <joerg.von.frantzius@artnology.com>:
>
>   
>> 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 <joerg.von.frantzius@artnology.com>:
>>>>>>
>>>>>>             
>>>>>>> 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:Craig.Russell@sun.com
>>>>> P.S. A good JDO? O, Gasp!
>>>>>
>>>>>           
>>> Craig Russell
>>> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
>>> 408 276-5638 mailto:Craig.Russell@sun.com
>>> P.S. A good JDO? O, Gasp!
>>>
>>>       
>>     
>
>
>   


-- 
Michael Bouschen		Tech@Spree Engineering GmbH
mailto:mbo.tech@spree.de	http://www.tech.spree.de/
Tel.:++49/30/235 520-33		Buelowstr. 66			
Fax.:++49/30/2175 2012		D-10783 Berlin			


Mime
View raw message