Hi Vincent.
Actually talking about DATE was a mistake on my part, because it
doesn't clarify things.
Internally, in the JCR, dates are always stored as full timestamps.
There is not datatype for DATE inside the storage.
The DATE syntax is just a shortcut to express an hour/minute/second
of 0:0:0 and is just a shortcut in the query parsing, but comparing
dates by equality in the JCR cannot work with this method. So you
should always use TIMESTAMP. It's always a TIMESTAMP that's passed to
JCR under the hood.
Florent
On 16 Mar 2007, at 11:31, Vincent Dutat wrote:
Hi,
NXQL syntax with works fine with '>= DATE ' but does NOT with '=
DATE '. What I want is select documents created on ONE specific day
and NOT documents created since that specific day.
I found a workaround by using '>= TIMESTAMP 2007-01-01 00:00:00 AND
dc:created <= TIMESTAMP 2007-01-01 23:59:59' but it's a bit ugly ;-)
Florent Guillaume wrote:
No, the fix was done later than the tagging of 5.1-M1, so you'll
have to use the trunk.
Or maybe just fetch org.nuxeo.ecm.core.query and
org.nuxeo.ecm.core.jcr-connector, which were the two packages
impacted.
Florent
On 4 Mar 2007, at 18:10, Vincent Dutat wrote:
Hi,
will the fix be available in tag 5.1-M1 or only in trunk ?
Florent Guillaume wrote:
It's now fixed.
Note that the syntax follows SQL92 here, you have to say:
SELECT * FROM document WHERE dc:created >= DATE '2007-01-01'
or
SELECT * FROM document WHERE dc:created >= TIMESTAMP '2007-01-01
12:30:00+03:00'
for instance.
Florent
On 2 Mar 2007, at 20:14, Vincent Dutat wrote:
Ok, thanks.
Florent Guillaume wrote:
Ok but there really is a bug on our side, I'm fixing it now.
I'll keep you posted.
Florent
On 2 Mar 2007, at 17:34, Florent Guillaume wrote:
Ah yes, the format that Jackrabbit accepts is very strict, see
http://jackrabbit.apache.org/api-1/org/apache/jackrabbit/
util/ISO8601.html
You'll have to use for example:
2007-01-31T12:00:00.000+01:00
Florent
On 2 Mar 2007, at 16:38, Vincent Dutat wrote:
Hi,
I tried already to give the date in the ISO form like
"2007-01-31" but it does not work, neither "2007-01-31
12:00:00". Here is the Lucene warning extracted from
server.log:
2007-03-02 16:33:30,766 DEBUG
[org.nuxeo.ecm.webapp.search.SearchBusinessDelegate]
<searchWithNXQL> NXQL: SELECT * FROM NoteDeService WHERE
ns:date_publication = "2007-07-02 12:00:00"
2007-03-02 16:33:30,766 DEBUG
[org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInt
erceptor] ++++ LongLivedSessionPropagationInterceptor
2007-03-02 16:33:31,501 WARN
[org.apache.jackrabbit.core.query.lucene.LuceneQueryBuilder]
Unable to coerce '2007-07-02 12:00:00' into a DATE.
2007-03-02 16:33:31,595 DEBUG
[org.nuxeo.ecm.webapp.search.SearchBusinessDelegate]
<searchWithNXQL> results contains 0 docs
Florent Guillaume wrote:
Ok I didn't find any bug in our code. The dates are passed
as strings directly to the backend that interprets it. It
must mean that when you generate the SQL expression you
generate dates like "04/07/2002" which are incorrect (or at
least confusing because locale-dependent), the only format
supported everywhere with certainty is the ISO one, like
"2007-02-20 12:00:00". So you should generate your NXQL
queries with this format.
Florent
On 1 Mar 2007, at 20:35, Vincent Dutat wrote:
Hi, I got the following warning :
2007-03-01 20:32:48,703 WARN
[org.apache.jackrabbit.core.query.lucene.LuceneQueryBuilder]
Unable to coerce '04/07/2002' into a DATE.
Florent Guillaume wrote:
Hi Vincent,
Could you check in the logs what query is executed? For
instance (here for a full-text query):
2007-02-28 18:50:03,312 INFO
[org.nuxeo.ecm.core.jcr.JCRQuery] execute XPath query: //
element(*, ecmnt:document)[jcr:contains(.,'*toto*')]
It's possible that there is a bug in the NXQL -> JCR
conversion...
Also, what unwanted results do you get?
Florent
On 28 Feb 2007, at 11:27, Vincent Dutat wrote:
Hi,
I am having problems with NXQL when query contains a
where-clause with a date. It looks like the '=' does
not work. For example, I created a document on Feb 20
2007 and the following query does not work :
SELECT * FROM document WHERE dc:created = "2007-02-20"
But the following one works but it also gives me
unwanted results :
SELECT * FROM document WHERE dc:created >= "2007-02-20"
--Florent Guillaume, Director of R&D, Nuxeo
Open Source Enterprise Content Management (ECM)
http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm
--
Florent Guillaume, Director of R&D, Nuxeo
Open Source Enterprise Content Management (ECM)
http://www.nuxeo.com http://www.nuxeo.org +33 1 40 33 79 87
_______________________________________________
ECM mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm