Return-Path: Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: (qmail 77251 invoked from network); 1 Aug 2007 20:49:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Aug 2007 20:49:59 -0000 Received: (qmail 32449 invoked by uid 500); 1 Aug 2007 20:49:59 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 32437 invoked by uid 500); 1 Aug 2007 20:49:59 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 32427 invoked by uid 99); 1 Aug 2007 20:49:59 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Aug 2007 13:49:59 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Aug 2007 20:49:49 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 3B5341A981D; Wed, 1 Aug 2007 13:49:34 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r561944 - in /cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src: main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateItemTranslator.java test/java/org/apache/cayenne/access/DataContextEJBQLUpdateTest.java Date: Wed, 01 Aug 2007 20:49:27 -0000 To: commits@cayenne.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070801204934.3B5341A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: aadamchik Date: Wed Aug 1 13:49:21 2007 New Revision: 561944 URL: http://svn.apache.org/viewvc?view=rev&rev=561944 Log: CAY-837 EJBQL Update Statement Support (update with NULL support) Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateItemTranslator.java cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateTest.java Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateItemTranslator.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateItemTranslator.java?view=diff&rev=561944&r1=561943&r2=561944 ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateItemTranslator.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLUpdateItemTranslator.java Wed Aug 1 13:49:21 2007 @@ -75,7 +75,7 @@ multiColumnOperands = null; } } - + return true; } @@ -102,5 +102,16 @@ // unlike super, Equals here has no children and is itself a child of UpdateItem context.append(" ="); return false; + } + + public boolean visitUpdateValue(EJBQLExpression expression) { + + // a criteria for NULL is UpdateValue with no children + if (expression.getChildrenCount() == 0) { + context.append(" NULL"); + return false; + } + + return true; } } Modified: cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateTest.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateTest.java?view=diff&rev=561944&r1=561943&r2=561944 ============================================================================== --- cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateTest.java (original) +++ cayenne/main/trunk/framework/cayenne-jdk1.4-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateTest.java Wed Aug 1 13:49:21 2007 @@ -85,6 +85,31 @@ notUpdated = DataObjectUtils.objectForQuery(context, check); assertEquals(new Long(0l), notUpdated); } + + public void testUpdateNoQualifierNull() throws Exception { + createTestData("prepare"); + + ObjectContext context = createDataContext(); + + EJBQLQuery check = new EJBQLQuery("select count(p) from Painting p " + + "WHERE p.paintingTitle is NULL or p.estimatedPrice is not null"); + + Object notUpdated = DataObjectUtils.objectForQuery(context, check); + assertEquals(new Long(2l), notUpdated); + + String ejbql = "UPDATE Painting AS p SET p.estimatedPrice = NULL"; + EJBQLQuery query = new EJBQLQuery(ejbql); + + QueryResponse result = context.performGenericQuery(query); + + int[] count = result.firstUpdateCount(); + assertNotNull(count); + assertEquals(1, count.length); + assertEquals(2, count[0]); + + notUpdated = DataObjectUtils.objectForQuery(context, check); + assertEquals(new Long(0l), notUpdated); + } public void testUpdateNoQualifierMultipleItems() throws Exception { createTestData("prepare"); @@ -235,4 +260,6 @@ notUpdated = DataObjectUtils.objectForQuery(context, check); assertEquals(new Long(0l), notUpdated); } + + }