Return-Path: X-Original-To: apmail-jackrabbit-commits-archive@www.apache.org Delivered-To: apmail-jackrabbit-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 11A936AB0 for ; Mon, 20 Jun 2011 14:09:50 +0000 (UTC) Received: (qmail 14014 invoked by uid 500); 20 Jun 2011 14:09:50 -0000 Delivered-To: apmail-jackrabbit-commits-archive@jackrabbit.apache.org Received: (qmail 13980 invoked by uid 500); 20 Jun 2011 14:09:49 -0000 Mailing-List: contact commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@jackrabbit.apache.org Delivered-To: mailing list commits@jackrabbit.apache.org Received: (qmail 13973 invoked by uid 99); 20 Jun 2011 14:09:49 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Jun 2011 14:09:49 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Jun 2011 14:09:48 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id B49CF238890D; Mon, 20 Jun 2011 14:09:28 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1137635 - /jackrabbit/branches/2.2/jackrabbit-spi-commons/src/test/java/org/apache/jackrabbit/spi/commons/query/sql2/ParserTest.java Date: Mon, 20 Jun 2011 14:09:28 -0000 To: commits@jackrabbit.apache.org From: thomasm@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110620140928.B49CF238890D@eris.apache.org> Author: thomasm Date: Mon Jun 20 14:09:28 2011 New Revision: 1137635 URL: http://svn.apache.org/viewvc?rev=1137635&view=rev Log: JCR-2996: QOM to SQL2 doesn't cast numeric literals Modified: jackrabbit/branches/2.2/jackrabbit-spi-commons/src/test/java/org/apache/jackrabbit/spi/commons/query/sql2/ParserTest.java Modified: jackrabbit/branches/2.2/jackrabbit-spi-commons/src/test/java/org/apache/jackrabbit/spi/commons/query/sql2/ParserTest.java URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.2/jackrabbit-spi-commons/src/test/java/org/apache/jackrabbit/spi/commons/query/sql2/ParserTest.java?rev=1137635&r1=1137634&r2=1137635&view=diff ============================================================================== --- jackrabbit/branches/2.2/jackrabbit-spi-commons/src/test/java/org/apache/jackrabbit/spi/commons/query/sql2/ParserTest.java (original) +++ jackrabbit/branches/2.2/jackrabbit-spi-commons/src/test/java/org/apache/jackrabbit/spi/commons/query/sql2/ParserTest.java Mon Jun 20 14:09:28 2011 @@ -149,6 +149,58 @@ public class ParserTest extends TestCase } } + public void testFormatLiterals() throws Exception { + formatLiteral("true", "true"); + formatLiteral("false", "false"); + + formatLiteral("CAST('2000-01-01T12:00:00.000Z' AS DATE)", + "CAST('2000-01-01T12:00:00.000Z' AS DATE)"); + formatLiteral("CAST(0 AS DATE)", + "CAST('1970-01-01T00:00:00.000Z' AS DATE)"); + + formatLiteral("1", "CAST('1' AS LONG)"); + formatLiteral("-1", "CAST('-1' AS LONG)"); + formatLiteral("CAST(" + Long.MAX_VALUE + " AS LONG)", + "CAST('" + Long.MAX_VALUE + "' AS LONG)"); + formatLiteral("CAST(" + Long.MIN_VALUE + " AS LONG)", + "CAST('" + Long.MIN_VALUE + "' AS LONG)"); + + formatLiteral("1.0", "CAST('1.0' AS DECIMAL)"); + formatLiteral("-1.0", "CAST('-1.0' AS DECIMAL)"); + formatLiteral("100000000000000000000", + "CAST('100000000000000000000' AS DECIMAL)"); + formatLiteral("-100000000000000000000", + "CAST('-100000000000000000000' AS DECIMAL)"); + + formatLiteral("CAST(1.0 AS DOUBLE)", "CAST('1.0' AS DOUBLE)"); + formatLiteral("CAST(-1.0 AS DOUBLE)", "CAST('-1.0' AS DOUBLE)"); + + formatLiteral("CAST('X' AS NAME)", "CAST('X' AS NAME)"); + formatLiteral("CAST('X' AS PATH)", "CAST('X' AS PATH)"); + formatLiteral("CAST('X' AS REFERENCE)", "CAST('X' AS REFERENCE)"); + formatLiteral("CAST('X' AS WEAKREFERENCE)", "CAST('X' AS WEAKREFERENCE)"); + formatLiteral("CAST('X' AS URI)", "CAST('X' AS URI)"); + + formatLiteral("''", "''"); + formatLiteral("' '", "' '"); + formatLiteral("CAST(0 AS STRING)", "'0'"); + formatLiteral("CAST(-1000000000000 AS STRING)", "'-1000000000000'"); + formatLiteral("CAST(false AS STRING)", "'false'"); + formatLiteral("CAST(true AS STRING)", "'true'"); + } + + private void formatLiteral(String literal, String cast) throws Exception { + String s = "SELECT TEST.* FROM TEST WHERE ID=" + literal; + QueryObjectModel qom = parser.createQueryObjectModel(s); + String s2 = QOMFormatter.format(qom); + String cast2 = s2.substring(s2.indexOf('=') + 1).trim(); + assertEquals(cast, cast2); + qom = parser.createQueryObjectModel(s); + s2 = QOMFormatter.format(qom); + cast2 = s2.substring(s2.indexOf('=') + 1).trim(); + assertEquals(cast, cast2); + } + public void testParseScript() throws Exception { LineNumberReader reader = openScript("test.sql2.txt"); while (true) {