Author: kmarsden
Date: Wed Aug 15 11:52:56 2007
New Revision: 566300
URL: http://svn.apache.org/viewvc?view=rev&rev=566300
Log:
DERBY-2995 convert lang/renameIndex.sql to JUnit
Contributed by Ravinder Reddy
Added:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RenameIndexTest.java
(with props)
Removed:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/renameIndex.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex.sql
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/renameIndex_derby.properties
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall?view=diff&rev=566300&r1=566299&r2=566300
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/suites/derbylang.runall
Wed Aug 15 11:52:56 2007
@@ -46,7 +46,6 @@
lang/refActions.sql
lang/refActions2.sql
lang/refActions3.sql
-lang/renameIndex.sql
lang/reopenScan.sql
lang/setOpPlan.sql
lang/specjPlans.sql
Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RenameIndexTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RenameIndexTest.java?view=auto&rev=566300
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RenameIndexTest.java
(added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RenameIndexTest.java
Wed Aug 15 11:52:56 2007
@@ -0,0 +1,211 @@
+/*
+
+ Derby - Class org.apache.derbyTesting.functionTests.tests.lang.RenameIndexTest
+
+ 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.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import junit.framework.Test;
+
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.JDBC;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+public class RenameIndexTest extends BaseJDBCTestCase
+{
+ public RenameIndexTest(String name) {
+ super(name);
+ }
+ public static Test suite() {
+
+ return TestConfiguration.embeddedSuite(RenameIndexTest.class);
+ }
+ protected void setUp() throws Exception {
+ super.setUp();
+ getConnection().setAutoCommit(false);
+ }
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+/**
+ * Test that We cannot Rename a non-existing Index.
+ *
+ * @exception SQLException
+ */
+public void testRenameNonExistingIndex() throws SQLException {
+ Statement s = createStatement();
+ assertStatementError("42X65" , s , "rename index i1t1 to i1rt1");
+}
+/**
+ * Test that We cannot Rename an Index With an existing Index name.
+ *
+ * @exception SQLException
+ */
+public void testExistingIndexName() throws SQLException {
+ Statement s = createStatement();
+ s.executeUpdate("create table t1(c11 int, c12 int)");
+ s.executeUpdate("create index i1t1 on t1(c11)");
+ s.executeUpdate("create index i2t1 on t1(c12)");
+ assertStatementError("X0Y32" , s , "rename index i1t1 to i2t1");
+ s.executeUpdate("drop table t1");
+}
+/**
+ * Test that We cannot Rename a System Table's Index
+ *
+ * @exception SQLException
+ */
+//-- rename a system table's index
+public void testRenameSystemTableIndex() throws SQLException {
+ Statement s = createStatement();
+ s.executeUpdate("set schema sys");
+ // will fail because it is a system table
+ assertStatementError("X0Y56" , s , "rename index syscolumns_index1 to newName");
+ s.executeUpdate("set schema app");
+}
+/**
+ * Test to RENAME an INDEX when view is on a table.
+ *
+ * @exception SQLException
+ */
+public void testRenameIndexOfView() throws SQLException {
+ Statement s = createStatement();
+ s.executeUpdate("create table t1(c11 int, c12 int)");
+ s.executeUpdate("create index t1i1 on t1(c11)");
+ s.executeUpdate("create view v1 as select * from t1");
+ ResultSet rs = s.executeQuery("select count(*) from v1");
+ JDBC.assertSingleValueResultSet(rs , "0");
+ //-- this succeeds with no exceptions
+ assertUpdateCount(s , 0 , "rename index t1i1 to t1i1r");
+ rs = s.executeQuery("select count(*) from v1");
+ JDBC.assertSingleValueResultSet(rs , "0");
+ s.executeUpdate("drop view v1");
+ s.executeUpdate("drop table t1");
+}
+/**
+ * Test RENAME INDEX when there is a duplicate INDEX
+ *
+ * @exception SQLException
+ */
+public void testDuplicateIndexWithViews() throws SQLException
+{
+ //-- another test for views
+ Statement s = createStatement();
+ s.executeUpdate("create table t1(c11 int not null primary key, c12 int)");
+ s.executeUpdate("create index i1t1 on t1(c11)");
+ s.executeUpdate("create view v1 as select * from t1");
+
+ assertStatementError("42X65" , s , "rename index i1t1 to i1rt1");
+ assertUpdateCount(s , 0 , "drop view v1");
+ //-- even though there is no index i1t1 it still doesn't fail
+ assertUpdateCount(s , 0 , "create view v1 as select * from t1");
+ //-- this succeeds with no exceptions
+ ResultSet rs = s.executeQuery("select count(*) from v1");
+ JDBC.assertSingleValueResultSet(rs , "0");
+ assertStatementError("42X65" , s , "rename index i1rt1 to i1t1");
+ s.executeUpdate("drop view v1");
+ s.executeUpdate("drop table t1");
+}
+/*
+ * -- cannot rename an index when there is an open cursor on it
+ *
+ * @exception SQLException
+ */
+public void testRenameIndexWithOpenCursor() throws SQLException {
+ Statement s = createStatement(ResultSet.TYPE_FORWARD_ONLY , ResultSet.CONCUR_UPDATABLE);
+ s.executeUpdate("create table t1(c11 int , c12 int)");
+ s.executeUpdate("create index i1 on t1(c11)");
+ s.executeUpdate("insert into t1 values(2 , 3)");
+ s.executeUpdate("insert into t1 values(3 , 4)");
+ ResultSet rs = s.executeQuery("select * from t1");
+ rs.next();
+ assertStatementError("X0X95" , createStatement() , "rename index i1 to i1r");
+ rs.close();
+ //-- following rename should pass because cursor c1 has been closed
+ assertUpdateCount(s , 0 , "rename index i1 to i1r");
+ s.executeUpdate("drop table t1");
+}
+/**
+ * Test RENAME INDEX With Prepared Statement.
+ *
+ * @exception SQLException
+ */
+//-- creating a prepared statement on a table
+public void testWithPreparedStatement() throws SQLException {
+ Statement s = createStatement();
+ s.executeUpdate("create table t1(c11 int not null primary key, c12 int)");
+ //-- bug 5685
+ s.executeUpdate("create index i1 on t1(c11)");
+ PreparedStatement pstmt = prepareStatement("select * from t1 where c11 > ?");
+ pstmt.setInt(1 , 1);
+ ResultSet rs = pstmt.executeQuery();
+ rs.next();
+ rs.close();
+ assertStatementError("42X65" , s , "rename index i1 to i1r");
+ //-- statement passes
+ pstmt.setInt(1 , 1);
+ rs = pstmt.executeQuery();
+ rs.next();
+ rs.close();
+ pstmt.close();
+ s.executeUpdate("drop table t1");
+}
+/**
+ * column with an index on it can be renamed
+ *
+ * @exception SQLException
+ */
+public void testRenameColumnWithIndex() throws SQLException {
+ Statement s = createStatement();
+ s.executeUpdate("create table t3(c31 int not null primary key, c32 int)");
+ s.executeUpdate("create index i1_t3 on t3(c32)");
+ s.executeUpdate("rename index i1_t3 to i1_3r");
+ //-- make sure that i1_t3 did get renamed. Following rename should fail, to prove that.
+ assertStatementError("42X65" , s , "rename index i1_t3 to i1_3r");
+ s.executeUpdate("drop table t3");
+}
+/**
+ * Test the another feature with PreparedStatement.
+ *
+ * @exception SQLException
+ */
+//-- creating a prepared statement on a table
+public void testDuplicateIndexWithPreparedStatement() throws SQLException {
+ Statement s = createStatement();
+ s.executeUpdate("create table t3(c31 int not null primary key, c32 int)");
+ s.executeUpdate("create index i1_t3 on t3(c32)");
+ PreparedStatement pstmt = prepareStatement("select * from t3 where c31 > ?");
+ pstmt.setInt(1 , 1);
+ ResultSet rs = pstmt.executeQuery();
+ rs.close();
+ //-- can rename with no errors
+ assertUpdateCount(s , 0 , "rename index i1_t3 to i1_t3r");
+ //execute p3 using 'values (1)';
+ pstmt.setInt(1 , 1);
+ rs = pstmt.executeQuery();
+ rs.close();
+ assertUpdateCount(s , 0 , "rename index i1_t3r to i1_t3");
+ pstmt.close();
+ s.executeUpdate("drop table t3");
+ }
+}
Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RenameIndexTest.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?view=diff&rev=566300&r1=566299&r2=566300
==============================================================================
--- 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
Wed Aug 15 11:52:56 2007
@@ -115,6 +115,7 @@
suite.addTest(DeclareGlobalTempTableJavaTest.suite());
suite.addTest(PrimaryKeyTest.suite());
suite.addTest(RenameTableTest.suite());
+ suite.addTest(RenameIndexTest.suite());
// Add the XML tests, which exist as a separate suite
// so that users can "run all XML tests" easily.
|