Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 73344 invoked from network); 20 Feb 2009 14:15:05 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 20 Feb 2009 14:15:05 -0000 Received: (qmail 80205 invoked by uid 500); 20 Feb 2009 14:15:04 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 80192 invoked by uid 500); 20 Feb 2009 14:15:04 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 80183 invoked by uid 99); 20 Feb 2009 14:15:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 20 Feb 2009 06:15:04 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.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; Fri, 20 Feb 2009 14:15:02 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id C6A2223888A3; Fri, 20 Feb 2009 14:14:40 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r746245 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang: UserLobTest.java _Suite.java Date: Fri, 20 Feb 2009 14:14:40 -0000 To: derby-commits@db.apache.org From: rhillegas@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090220141440.C6A2223888A3@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rhillegas Date: Fri Feb 20 14:14:40 2009 New Revision: 746245 URL: http://svn.apache.org/viewvc?rev=746245&view=rev Log: DERBY-2201: More tests for functions which return lobs. Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UserLobTest.java (with props) Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UserLobTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UserLobTest.java?rev=746245&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UserLobTest.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UserLobTest.java Fri Feb 20 14:14:40 2009 @@ -0,0 +1,264 @@ +/* + + Derby - Class org.apache.derbyTesting.functionTests.tests.lang.UserLobTest + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + */ + +package org.apache.derbyTesting.functionTests.tests.lang; + +import java.sql.SQLException; +import java.sql.SQLWarning; +import java.sql.Connection; +import java.sql.Statement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.DriverManager; +import java.util.ArrayList; +import junit.framework.Test; +import junit.framework.TestSuite; +import org.apache.derby.iapi.util.StringUtil; +import org.apache.derby.catalog.DefaultInfo; +import org.apache.derbyTesting.junit.BaseJDBCTestCase; +import org.apache.derbyTesting.junit.JDBC; +import org.apache.derbyTesting.junit.DatabasePropertyTestSetup; +import org.apache.derbyTesting.junit.JDBC; +import org.apache.derbyTesting.junit.TestConfiguration; +import org.apache.derbyTesting.junit.CleanDatabaseTestSetup; +import org.apache.derbyTesting.junit.JDBC; +import org.apache.derbyTesting.junit.SupportFilesSetup; + +import org.apache.derby.catalog.types.RoutineAliasInfo; + +/** + *

+ * Additional tests for Blob/Clobs created from user-supplied large objects. + *

+ */ +public class UserLobTest extends GeneratedColumnsHelper +{ + /////////////////////////////////////////////////////////////////////////////////// + // + // CONSTANTS + // + /////////////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////////////// + // + // STATE + // + /////////////////////////////////////////////////////////////////////////////////// + + /////////////////////////////////////////////////////////////////////////////////// + // + // CONSTRUCTOR + // + /////////////////////////////////////////////////////////////////////////////////// + + + /** + * Create a new instance. + */ + + public UserLobTest(String name) + { + super(name); + } + + /////////////////////////////////////////////////////////////////////////////////// + // + // JUnit BEHAVIOR + // + /////////////////////////////////////////////////////////////////////////////////// + + + /** + * Construct top level suite in this JUnit test + */ + public static Test suite() + { + TestSuite suite = (TestSuite) TestConfiguration.embeddedSuite(UserLobTest.class); + Test result = new CleanDatabaseTestSetup( suite ); + + return result; + } + + /////////////////////////////////////////////////////////////////////////////////// + // + // TESTS + // + /////////////////////////////////////////////////////////////////////////////////// + + /** + *

+ * Test that user-defined LOBs can be stored in varbinary and varchar columns. + *

+ */ + public void test_001_casts() + throws Exception + { + Connection conn = getConnection(); + + // + // Create some user defined functions which return lobs. + // + goodStatement + ( + conn, + "create function f_2201_blob_1\n" + + "(\n" + + " a_0 varchar( 10 )\n" + + ")\n" + + "returns blob\n" + + "language java\n" + + "parameter style java\n" + + "no sql\n" + + "external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.blob_Blob_String'\n" + ); + goodStatement + ( + conn, + "create function f_2201_clob_1\n" + + "(\n" + + " a_0 varchar( 10 )\n" + + ")\n" + + "returns clob\n" + + "language java\n" + + "parameter style java\n" + + "no sql\n" + + "external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.clob_Clob_String'\n" + ); + + // + // Create some tables for storing the results of these functions + // + goodStatement + ( + conn, + "create table t_2201_clob_blob_1( a clob, b blob )\n" + ); + goodStatement + ( + conn, + "create table t_2201_chartypes_1( a char( 10 ), b varchar( 10 ), c long varchar )\n" + ); + + // + // Successfully insert into these tables, casting as necessary. + // + goodStatement + ( + conn, + "insert into t_2201_clob_blob_1( a, b ) values( f_2201_clob_1( 'abc' ), f_2201_blob_1( 'abc' ) )\n" + ); + goodStatement + ( + conn, + "insert into t_2201_chartypes_1( a, b, c )\n" + + "values\n" + + "(\n" + + " cast( f_2201_clob_1( 'abc' ) as char( 10)),\n" + + " cast( f_2201_clob_1( 'def' ) as varchar( 10)),\n" + + " cast( f_2201_clob_1( 'ghi' ) as long varchar )\n" + + ")\n" + ); + assertResults + ( + conn, + "select * from t_2201_clob_blob_1", + new String[][] + { + { "abc" , "616263" }, + }, + false + ); + assertResults + ( + conn, + "select * from t_2201_chartypes_1", + new String[][] + { + { "abc ", "def", "ghi" }, + }, + false + ); + assertResults + ( + conn, + "select length( a ), length( b ), length( c ) from t_2201_chartypes_1", + new String[][] + { + { "10", "3", "3" }, + }, + false + ); + assertResults + ( + conn, + "values\n" + + "(\n" + + " length( cast( f_2201_clob_1( 'abc' ) as char( 10)) ),\n" + + " length( cast( f_2201_clob_1( 'defg' ) as varchar( 10)) ),\n" + + " length( cast( f_2201_clob_1( 'hijkl' ) as long varchar ) ),\n" + + " length( f_2201_clob_1( 'mnopqr' ) )\n" + + ")\n", + new String[][] + { + { "10", "4", "5", "6" }, + }, + false + ); + assertResults + ( + conn, + "select length( a ), length( b ) from t_2201_clob_blob_1", + new String[][] + { + { "3", "3" }, + }, + false + ); + assertResults + ( + conn, + "values ( varchar( f_2201_clob_1( 'abc' ) ) )", + new String[][] + { + { "abc" }, + }, + false + ); + assertResults + ( + conn, + "values ( substr( f_2201_clob_1( 'abc' ), 2, 2 ), upper( f_2201_clob_1( 'defg' ) ) )", + new String[][] + { + { "bc", "DEFG" }, + }, + false + ); + } + + /////////////////////////////////////////////////////////////////////////////////// + // + // MINIONS + // + /////////////////////////////////////////////////////////////////////////////////// + + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/UserLobTest.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java?rev=746245&r1=746244&r2=746245&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java Fri Feb 20 14:14:40 2009 @@ -180,6 +180,7 @@ suite.addTest(GeneratedColumnsTest.suite()); suite.addTest(GeneratedColumnsPermsTest.suite()); suite.addTest(AlterColumnTest.suite()); + suite.addTest(UserLobTest.suite()); return suite; }