You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ma...@apache.org on 2015/01/13 07:37:08 UTC

svn commit: r1651284 - in /db/derby/code/trunk/java: build/org/apache/derbyBuild/lastgoodjarcontents/ engine/org/apache/derby/catalog/ engine/org/apache/derby/impl/sql/catalog/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/de...

Author: mamta
Date: Tue Jan 13 06:37:08 2015
New Revision: 1651284

URL: http://svn.apache.org/r1651284
Log:
DERBY-6725(Add a system function which returns the name of the database.)


Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/Derby6725GetDatabaseName.java   (with props)
Modified:
    db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents
    db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents
    db/derby/code/trunk/java/engine/org/apache/derby/catalog/SystemProcedures.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DD_Version.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ij7.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/TestDbMetaData.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GrantRevokeDDLTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RolesTest.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/Changes10_2.java

Modified: db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents (original)
+++ db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/insane.derbyTesting.jar.lastcontents Tue Jan 13 06:37:08 2015
@@ -313,6 +313,7 @@ org.apache.derbyTesting.functionTests.te
 org.apache.derbyTesting.functionTests.tests.lang.Derby5866TriggerOrderTest.class
 org.apache.derbyTesting.functionTests.tests.lang.Derby6131.class
 org.apache.derbyTesting.functionTests.tests.lang.Derby6587Test.class
+org.apache.derbyTesting.functionTests.tests.lang.Derby6725GetDatabaseName.class
 org.apache.derbyTesting.functionTests.tests.lang.DistinctTest.class
 org.apache.derbyTesting.functionTests.tests.lang.DropTableTest.class
 org.apache.derbyTesting.functionTests.tests.lang.DummyAwareVTI.class

Modified: db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents (original)
+++ db/derby/code/trunk/java/build/org/apache/derbyBuild/lastgoodjarcontents/sane.derbyTesting.jar.lastcontents Tue Jan 13 06:37:08 2015
@@ -313,6 +313,7 @@ org.apache.derbyTesting.functionTests.te
 org.apache.derbyTesting.functionTests.tests.lang.Derby5866TriggerOrderTest.class
 org.apache.derbyTesting.functionTests.tests.lang.Derby6131.class
 org.apache.derbyTesting.functionTests.tests.lang.Derby6587Test.class
+org.apache.derbyTesting.functionTests.tests.lang.Derby6725GetDatabaseName.class
 org.apache.derbyTesting.functionTests.tests.lang.DistinctTest.class
 org.apache.derbyTesting.functionTests.tests.lang.DropTableTest.class
 org.apache.derbyTesting.functionTests.tests.lang.DummyAwareVTI.class

Modified: db/derby/code/trunk/java/engine/org/apache/derby/catalog/SystemProcedures.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/catalog/SystemProcedures.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/catalog/SystemProcedures.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/catalog/SystemProcedures.java Tue Jan 13 06:37:08 2015
@@ -2489,7 +2489,20 @@ public class SystemProcedures  {
             return IdUtil.getUserAuthorizationId( userName );
         } catch (StandardException se) { throw PublicAPI.wrapStandardException(se); }
     }
-  
+
+    /**
+     * Return the database name
+     * @return database name
+     * @throws SQLException
+     */
+    public static String SYSCS_GET_DATABASE_NAME()
+            throws SQLException
+    {
+        //DERBY-6725(Add a system function which returns the name of the database.)
+        LanguageConnectionContext lcc = ConnectionUtil.getCurrentLCC();
+        return(lcc.getDbname());
+    }
+
     /**
      * Peek at the current value of a sequence generator without advancing it.
      *

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DD_Version.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DD_Version.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DD_Version.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DD_Version.java Tue Jan 13 06:37:08 2015
@@ -404,7 +404,7 @@ public	class DD_Version implements	Forma
 
         if (fromMajorVersionNumber <= DataDictionary.DD_VERSION_DERBY_10_5)
         {
-            // On ugrade from versions before 10.6, create system procedures
+            // On upgrade from versions before 10.6, create system procedures
             // added in 10.6.
             bootingDictionary.create_10_6_system_procedures(tc,
                     newlyCreatedRoutines);
@@ -419,7 +419,7 @@ public	class DD_Version implements	Forma
 
         if (fromMajorVersionNumber <= DataDictionary.DD_VERSION_DERBY_10_1)
         {
-            // On ugrade from versions before 10.2, create system procedures
+            // On upgrade from versions before 10.2, create system procedures
             // added in 10.2.
             bootingDictionary.create_10_2_system_procedures(
                 tc,
@@ -447,7 +447,7 @@ public	class DD_Version implements	Forma
 
         if (fromMajorVersionNumber <= DataDictionary.DD_VERSION_DERBY_10_2)
         {
-            // On ugrade from versions before 10.3, create system procedures
+            // On upgrade from versions before 10.3, create system procedures
             // added in 10.3.
             bootingDictionary.create_10_3_system_procedures(tc, newlyCreatedRoutines );
         }
@@ -490,7 +490,7 @@ public	class DD_Version implements	Forma
         
         if (fromMajorVersionNumber <= DataDictionary.DD_VERSION_DERBY_10_8)
         {
-            // On ugrade from versions before 10.9, create system procedures
+            // On upgrade from versions before 10.9, create system procedures
             // added in 10.9.
             bootingDictionary.create_10_9_system_procedures( tc, newlyCreatedRoutines );
             
@@ -508,7 +508,7 @@ public	class DD_Version implements	Forma
 
         if (fromMajorVersionNumber <= DataDictionary.DD_VERSION_DERBY_10_9)
         {
-            // On ugrade from versions before 10.10, create system procedures
+            // On upgrade from versions before 10.10, create system procedures
             // added in 10.10.
             bootingDictionary.create_10_10_system_procedures( tc, newlyCreatedRoutines );
         }
@@ -522,7 +522,7 @@ public	class DD_Version implements	Forma
                 DataDictionary.SYSTRIGGERS_CATALOG_NUM).getCatalogRowFactory(),
                 new int[] { 18 }, tc);
             
-            // On ugrade from versions before 10.11, create system procedures
+            // On upgrade from versions before 10.11, create system procedures
             // added in 10.11.
             bootingDictionary.create_10_11_system_procedures( tc, newlyCreatedRoutines );
 
@@ -530,6 +530,13 @@ public	class DD_Version implements	Forma
             bootingDictionary.createIdentitySequences( tc );
         }
 
+        if (fromMajorVersionNumber <= DataDictionary.DD_VERSION_DERBY_10_11)
+        {
+            // On upgrade from versions before 10.12, create system procedures
+            // added in 10.12.
+            bootingDictionary.create_10_12_system_procedures( tc, newlyCreatedRoutines );
+        }
+
         // Grant PUBLIC access to some system routines
         bootingDictionary.grantPublicAccessToSystemRoutines(newlyCreatedRoutines, tc, aid);
 	}

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Tue Jan 13 06:37:08 2015
@@ -463,6 +463,7 @@ public final class	DataDictionaryImpl
 												"SYSCS_GET_RUNTIMESTATISTICS", 
 												"SYSCS_PEEK_AT_SEQUENCE",
 												"SYSCS_PEEK_AT_IDENTITY",
+												"SYSCS_GET_DATABASE_NAME",
 												};
 	
 	/**
@@ -11444,6 +11445,8 @@ public final class	DataDictionaryImpl
         create_10_10_system_procedures( tc, newlyCreatedRoutines );
         // add 10.11 specific system procedures
         create_10_11_system_procedures( tc, newlyCreatedRoutines );
+        // add 10.12 specific system procedures
+        create_10_12_system_procedures( tc, newlyCreatedRoutines );
     }
 
     /**
@@ -13404,6 +13407,37 @@ public final class	DataDictionaryImpl
         }
     }
 
+    /**
+     * <p>
+     * Create system procedures that are part of the SYSCS_UTIL schema, added in version 10.12.
+     * </p>
+     *
+     * @param tc an instance of the Transaction Controller.
+     * @param newlyCreatedRoutines set of routines we are creating (used to add permissions later on)
+     **/
+    void create_10_12_system_procedures( TransactionController   tc, HashSet<String> newlyCreatedRoutines )
+        throws StandardException
+    {
+            UUID  sysUtilUUID = getSystemUtilSchemaDescriptor().getUUID();
+
+            // void SYSCS_UTIL.SYSCS_GET_DATABASE_NAME()
+            {               
+                createSystemProcedureOrFunction(
+                    "SYSCS_GET_DATABASE_NAME",
+                    sysUtilUUID,
+                    (String[]) null,
+                    (TypeDescriptor[]) null,
+                    0,
+                    0,
+                    RoutineAliasInfo.READS_SQL_DATA,
+                    false,
+                    false,
+                    DataTypeDescriptor.getCatalogType( Types.VARCHAR ),
+                    newlyCreatedRoutines,
+                    tc);
+            }
+    }
+
 
 	/*
 	** Priv block code to load net work server meta data queries.

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ij7.out
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ij7.out?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ij7.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/ij7.out Tue Jan 13 06:37:08 2015
@@ -162,6 +162,7 @@ FUNCTION_SCHEM|FUNCTION_NAME
 -------------------------------------------------------------------------------
 APP           |FUNCTTEST                   |a.b.c.d.e.f                        
 SYSCS_UTIL    |SYSCS_CHECK_TABLE           |org.apache.derby.catalog.SystemPro&
+SYSCS_UTIL    |SYSCS_GET_DATABASE_NAME     |org.apache.derby.catalog.SystemPro&
 SYSCS_UTIL    |SYSCS_GET_DATABASE_PROPERTY |org.apache.derby.catalog.SystemPro&
 SYSCS_UTIL    |SYSCS_GET_RUNTIMESTATISTICS |org.apache.derby.catalog.SystemPro&
 SYSCS_UTIL    |SYSCS_GET_USER_ACCESS       |org.apache.derby.catalog.SystemPro&

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/TestDbMetaData.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/TestDbMetaData.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/TestDbMetaData.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/TestDbMetaData.java Tue Jan 13 06:37:08 2015
@@ -150,6 +150,9 @@ public class TestDbMetaData extends Base
         { null, "SYSCS_UTIL", "SYSCS_CHECK_TABLE",
           "org.apache.derby.catalog.SystemProcedures.SYSCS_CHECK_TABLE",
           FUNCTION_NO_TABLE_VALUE, GENERIC_NAME },
+        { null, "SYSCS_UTIL", "SYSCS_GET_DATABASE_NAME",
+          "org.apache.derby.catalog.SystemProcedures." +
+          "SYSCS_GET_DATABASE_NAME", FUNCTION_NO_TABLE_VALUE, GENERIC_NAME },
         { null, "SYSCS_UTIL", "SYSCS_GET_DATABASE_PROPERTY",
           "org.apache.derby.catalog.SystemProcedures." +
           "SYSCS_GET_DATABASE_PROPERTY", FUNCTION_NO_TABLE_VALUE, GENERIC_NAME },

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/Derby6725GetDatabaseName.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/Derby6725GetDatabaseName.java?rev=1651284&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/Derby6725GetDatabaseName.java (added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/Derby6725GetDatabaseName.java Tue Jan 13 06:37:08 2015
@@ -0,0 +1,68 @@
+/*
+ * Class org.apache.derbyTesting.functionTests.tests.lang.Derby6725GetDatabaseName
+ *
+ * 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.Connection;
+import java.sql.SQLException;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import junit.framework.Test;
+
+import org.apache.derbyTesting.junit.BaseJDBCTestCase;
+import org.apache.derbyTesting.junit.TestConfiguration;
+
+public class Derby6725GetDatabaseName extends BaseJDBCTestCase {
+
+    public Derby6725GetDatabaseName(String name) {
+        super(name);
+    }
+
+    /**
+     * Construct top level suite in this JUnit test
+     *
+     * @return A suite containing embedded and client suites.
+     */
+    public static Test suite()
+    {
+        Test test;
+        test = TestConfiguration.defaultSuite(Derby6725GetDatabaseName.class);
+        test = TestConfiguration.additionalDatabaseDecorator(test, "FIRSTDB1");
+        test = TestConfiguration.additionalDatabaseDecorator(test, "SECONDDB2");
+        return test;
+    }
+
+    //Make sure we get correct db name for different databases
+    public void testDatabaseName() throws SQLException {
+    	checkDbName(getConnection(), "wombat");
+    	checkDbName(openConnection("FIRSTDB1"), "singleUse/oneuse0");
+    	checkDbName(openConnection("SECONDDB2"), "singleUse/oneuse1");
+    }
+    
+    private void checkDbName(Connection conn, String expectedDbName) throws SQLException {
+        PreparedStatement ps = conn.prepareStatement("values syscs_util.SYSCS_GET_DATABASE_NAME()");
+        ResultSet rs = ps.executeQuery();
+        rs.next();
+        assertEquals( rs.getString( 1 ),  expectedDbName);
+        rs.close();
+        ps.close();
+    }
+}

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/Derby6725GetDatabaseName.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GrantRevokeDDLTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GrantRevokeDDLTest.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GrantRevokeDDLTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GrantRevokeDDLTest.java Tue Jan 13 06:37:08 2015
@@ -7288,6 +7288,7 @@ public final class GrantRevokeDDLTest ex
             {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},
+            {"PUBLIC", "TEST_DBO", "N"},
         };
         
         JDBC.assertFullResultSet(rs, expRS, true);
@@ -7330,6 +7331,7 @@ public final class GrantRevokeDDLTest ex
             {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},
+            {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},
             {"PUBLIC", "TEST_DBO", "N"},

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RolesTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RolesTest.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RolesTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RolesTest.java Tue Jan 13 06:37:08 2015
@@ -598,9 +598,9 @@ public class RolesTest extends BaseJDBCT
 
         assertSysColPermsRowCount(0, 2, 2);
 
-        assertSysRoutinePermsRowCount(10, // 10 pre-existing grants to PUBLIC
-                                      11,
-                                      11);
+        assertSysRoutinePermsRowCount(11, // 11 pre-existing grants to PUBLIC
+                                      12,
+                                      12);
 
         /*
          * DROP ROLE
@@ -628,12 +628,12 @@ public class RolesTest extends BaseJDBCT
                                   // to admin is de facto to a user
                                   // named admin:
                                   2);
-        assertSysRoutinePermsRowCount(10, 10,
+        assertSysRoutinePermsRowCount(11, 11,
                                       //  nonDbo run: role admin
                                       // has been dropped, so this
                                       // run's grant to admin is de
                                       // facto to a user named admin:
-                                      11);
+                                      12);
 
         doStmt("drop role \"NONE\"",
                sqlAuthorizationRequired, null , roleDboOnly);
@@ -655,7 +655,7 @@ public class RolesTest extends BaseJDBCT
                                     1,
                                     0);
         assertSysColPermsRowCount(0,0,0);
-        assertSysRoutinePermsRowCount(10,10,10);
+        assertSysRoutinePermsRowCount(11,11,11);
 
         // roles foo and bar survive to nonDbo run and beyond:
         assertSysRolesRowCount(0, 5, 5);

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/Changes10_2.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/Changes10_2.java?rev=1651284&r1=1651283&r2=1651284&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/Changes10_2.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/Changes10_2.java Tue Jan 13 06:37:08 2015
@@ -325,10 +325,10 @@ public class Changes10_2 extends Upgrade
                     "R.GRANTOR = '"
                         + getTestConfiguration().getUserName() + "'" +
                     " ORDER BY 1");
-            
             JDBC.assertFullResultSet(rs, new String[][]
                     {{"SYSCS_COMPRESS_TABLE"},
                     {"SYSCS_DROP_STATISTICS"},
+                    {"SYSCS_GET_DATABASE_NAME"},
                     {"SYSCS_GET_RUNTIMESTATISTICS"},
                     {"SYSCS_INPLACE_COMPRESS_TABLE"},
                     {"SYSCS_MODIFY_PASSWORD"},