Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 10164 invoked from network); 3 Sep 2008 16:48:21 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Sep 2008 16:48:21 -0000 Received: (qmail 55356 invoked by uid 500); 3 Sep 2008 16:48:19 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 55199 invoked by uid 500); 3 Sep 2008 16:48:19 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 55159 invoked by uid 99); 3 Sep 2008 16:48:19 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 03 Sep 2008 09:48:19 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [216.252.110.54] (HELO web55808.mail.re3.yahoo.com) (216.252.110.54) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 03 Sep 2008 16:47:20 +0000 Received: (qmail 6830 invoked by uid 60001); 3 Sep 2008 16:47:50 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type:Message-ID; b=4U/6huzCT6BcI6KxO6x/rXPUMEgZMJvqTGnxfPgDu+jTwa4ohb3kn4Cup3laieUhfak3ewgIf9H0lQ/gyhow3bIBCzmebTTAzjf6VulfvsGWYkScDuKSXNK1MLH39OjvdxWBsnBVPj/yrWUHqhH8GISpL0z3tcbOrwQB1LnfaOI=; X-YMail-OSG: t3Bp9xUVM1nnebuRXRXhKFhGCiXpFiOXtBAWPFSm6XJ32VwDDHG4myv.zs8AQiK8cYfB8I.ytWxAVI3AJkrJSjs9Vc5Ia_N11LeE3zCHe5o_vkUR4NJV_KXUwvWIYtKs43exf_yTVftlttLktrSH8rLb Received: from [129.42.184.35] by web55808.mail.re3.yahoo.com via HTTP; Wed, 03 Sep 2008 09:47:50 PDT X-Mailer: YahooMailWebService/0.7.218.2 Date: Wed, 3 Sep 2008 09:47:50 -0700 (PDT) From: Fay Wang Reply-To: fyw300@yahoo.com Subject: Re: Bug in HAVING clause (JPQL) To: dev@openjpa.apache.org In-Reply-To: <48BE4EE3.6040006@etf.bg.ac.yu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Message-ID: <289328.6647.qm@web55808.mail.re3.yahoo.com> X-Virus-Checked: Checked by ClamAV on apache.org The manual says "The HAVING clause must specify search conditions over the grouping items or aggregate functions that apply to grouping items." Therefore, the two JPQL should be valid: select m.idPublisher, max(m.datePublished) from Magazine m group by m.idPublisher having max(m.datePublished) is null select m.idPublisher, max(m.datePublished) from Magazine m group by m.idPublisher having max(m.datePublished) = current_date You might want to open a JIRA to address this problem. --- On Wed, 9/3/08, Ognjen Blagojevic wrote: > From: Ognjen Blagojevic > Subject: Bug in HAVING clause (JPQL) > To: "OpenJPA developer list" > Date: Wednesday, September 3, 2008, 1:46 AM > Hi devs, > > It seems that these two (valid?) queries are throwing an > exception: > > select m.idPublisher, max(m.datePublished) > from Magazine m > group by m.idPublisher > having max(m.datePublished) is null > > select m.idPublisher, max(m.datePublished) > from Magazine m > group by m.idPublisher > having max(m.datePublished) = current_date > > The exception thrown is: > > > > org.apache.openjpa.persistence.ArgumentException: > Encountered "max ( m . > datePublished ) is" at character 90, but expected: > ["(", ")", "*", "+", > > "-", ".", "/", ":", > "<", "<=", "<>", > "=", ">", ">=", > "?", "ABS", "ALL", > "AND", "ANY", "AS", > "ASC", "AVG", "BETWEEN", > "BOTH", "BY", "CONCAT", > "COUNT", "CURRENT_DATE", > "CURRENT_TIME", "CURRENT_TIMESTAMP", > "DELETE", > "DESC", "DISTINCT", "EMPTY", > "ESCAPE", "EXISTS", "FETCH", > "FROM", > "GROUP", "HAVING", "IN", > "INNER", "IS", "JOIN", > "LEADING", "LEFT", > "LENGTH", "LIKE", "LOCATE", > "LOWER", "MAX", "MEMBER", > "MIN", "MOD", > "NEW", "NOT", "NULL", > "OBJECT", "OF", "OR", > "ORDER", "OUTER", "SELECT", > "SET", "SIZE", "SOME", > "SQRT", "SUBSTRING", "SUM", > "TRAILING", "TRIM", > "UPDATE", "UPPER", "WHERE", > , , > , , > ]. > at > org.apache.openjpa.kernel.jpql.JPQL.generateParseException(JPQL.java:9501) > at > org.apache.openjpa.kernel.jpql.JPQL.jj_consume_token(JPQL.java:9378) > ... > > For test case, one could use these classes: > > /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Magazine.java > /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/Publisher.java > > > Configuration: > - OpenJPA 1.2.0 / OpenJPA 1.3.0 SNAPSHOT > - Enhancing at Build Time > - MySQL 5.0.22 > > Regards, > Ognjen