Changeset: 8b40a845240c for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=8b40a845240c
Added Files:
        tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.java
Modified Files:
        src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
        tests/build.xml
Branch: default
Log Message:

Added test program for Bug 6388
and a fix for calling metadata methods:
 getUserName()
 getMaxConnections()
 getDatabaseProductVersion()
 getDatabaseMajorVersion()
 getDatabaseMinorVersion()
ToDo: for calling
 getTables()
 getTableTypes()
we need to do changes in monetdb server code.


diffs (194 lines):

diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java 
b/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -48,7 +48,7 @@ public class MonetDatabaseMetaData exten
                try {
                        st = con.createStatement();
                        rs = st.executeQuery(
-                               "SELECT \"name\", \"value\" FROM 
\"sys\".\"environment\"" +
+                               "SELECT \"name\", \"value\" FROM 
\"sys\".\"env\"()" +
                                " WHERE \"name\" IN ('monet_version', 
'max_clients')" +
                                " UNION SELECT 'current_user' as \"name\", 
current_user as \"value\"");
                        if (rs != null) {
diff --git a/tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.java 
b/tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.java
new file mode 100644
--- /dev/null
+++ b/tests/Bug_Connect_as_voc_getMetaData_Failure_Bug_6388.java
@@ -0,0 +1,113 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2017 MonetDB B.V.
+ */
+
+import java.sql.*;
+
+public class Bug_Connect_as_voc_getMetaData_Failure_Bug_6388 {
+       public static void main(String[] args) throws SQLException
+       {
+               Connection con1 = null;
+               Statement stmt1 = null;
+
+               // Class.forName("nl.cwi.monetdb.jdbc.MonetDriver");    // not 
needed anymore for self registering JDBC drivers
+               con1 = DriverManager.getConnection(args[0]);
+               stmt1 = con1.createStatement();
+
+               // test the creation of a table with concurrent clients
+               try {
+                       System.out.println("1. CREATE USER voc");
+                       stmt1.executeUpdate("CREATE USER \"voc\" WITH PASSWORD 
'voc' NAME 'VOC Explorer' SCHEMA \"sys\"");
+                       System.out.println("2. CREATE SCHEMA voc");
+                       stmt1.executeUpdate("CREATE SCHEMA \"voc\" 
AUTHORIZATION \"voc\"");
+                       System.out.println("3. ALTER USER voc");
+                       stmt1.executeUpdate("ALTER USER \"voc\" SET SCHEMA 
\"voc\"");
+                       System.out.println("creation succeeded :)");
+
+                       
login_as_voc_and_get_MetaData(args[0].replace("=monetdb", "=voc"));
+
+                       System.out.println();
+                       System.out.println("Cleanup created objects");
+                       System.out.println("5. ALTER USER voc");
+                       stmt1.executeUpdate("ALTER USER \"voc\" SET SCHEMA 
\"sys\"");
+                       System.out.println("6. DROP SCHEMA voc");
+                       stmt1.executeUpdate("DROP SCHEMA \"voc\"");
+                       System.out.println("7. DROP USER voc");
+                       stmt1.executeUpdate("DROP USER \"voc\"");
+                       System.out.println("cleanup succeeded :)");
+               } catch (SQLException e) {
+                       System.out.println("FAILED creating user and schema 
voc. " + e.getMessage());
+               } finally {
+                       stmt1.close();
+                       con1.close();
+               }
+       }
+
+       private static void login_as_voc_and_get_MetaData(String connectString) 
{
+               Connection con2 = null;
+
+               try {
+                       System.out.println("4.1. connect as user: voc");
+                       con2 = DriverManager.getConnection(connectString);
+                       System.out.println("connected :)");
+               } catch (SQLException e) {
+                       System.out.println("FAILED to connect as user voc. " + 
e.getMessage());
+                       return;
+               }
+
+               try {
+                       DatabaseMetaData dbmd = con2.getMetaData();
+
+                       System.out.println("4.2. getUserName()");
+                       System.out.println("UserName = " + dbmd.getUserName());
+
+                       System.out.println("4.3. getMaxConnections()");
+                       System.out.println("MaxConnections = " + 
dbmd.getMaxConnections());
+
+                       System.out.println("4.4. getDatabaseProductVersion()");
+                       System.out.println("DatabaseProductVersion = " + 
dbmd.getDatabaseProductVersion());
+
+                       System.out.println("4.5. getDatabaseMajorVersion()");
+                       System.out.println("DatabaseMajorVersion = " + 
dbmd.getDatabaseMajorVersion());
+
+                       System.out.println("4.6. getDatabaseMinorVersion()");
+                       System.out.println("DatabaseMinorVersion = " + 
dbmd.getDatabaseMinorVersion());
+
+                       System.out.println("4.7. getTables(null, 'tmp', null, 
null)");
+                       ResultSet rs2 = dbmd.getTables(null, "tmp", null, null);
+                       if (rs2 != null) {
+                               System.out.println("List Tables in schema 
tmp:");
+                               while (rs2.next()) {
+                                       System.out.println(rs2.getString(3));
+                               }
+                               rs2.close();
+                       }
+                       System.out.println("completed listing Tables in schema 
tmp");
+
+                       System.out.println("4.8. getTableTypes()");
+                       ResultSet rs1 = dbmd.getTableTypes();
+                       if (rs1 != null) {
+                               System.out.println("List TableTypes:");
+                               while (rs1.next()) {
+                                       System.out.println(rs1.getString(1));
+                               }
+                               rs1.close();
+                       }
+                       System.out.println("completed listing TableTypes");
+
+                       System.out.println("voc meta data Test completed 
successfully");
+               } catch (SQLException e) {
+                       System.out.println("FAILED fetching 
MonetDatabaseMetaData. " + e.getMessage());
+               } finally {
+                       try {
+                               con2.close();
+                       } catch (SQLException e) {
+                               System.out.println("FAILED to close voc 
connection. " + e.getMessage());
+                       }
+               }
+       }
+}
diff --git a/tests/build.xml b/tests/build.xml
--- a/tests/build.xml
+++ b/tests/build.xml
@@ -19,7 +19,7 @@ Copyright 1997 - July 2008 CWI, August 2
 
   <property file="build.local.properties" />
   <property file="build.properties" />
-  <property file="../build.properties"/> <!-- included for version -->
+  <property file="../build.properties" /> <!-- included for version -->
 
   <!-- set global properties for this build -->
   <property name="srcdir"    value="." />
@@ -31,7 +31,8 @@ Copyright 1997 - July 2008 CWI, August 2
     
value="jdbc:monetdb://localhost/?user=monetdb&amp;password=monetdb${debug}" />
   <property name="jdbctests-jar"
     value="${jardir}/jdbctests.jar" />
-  <property name="jvm.version" value="1.7"/>
+  <property name="jvm.version" value="1.7" />
+  <property name="javac.flags" value="-Xlint:-options" />
 
   <!-- Prepares the build directory -->
   <target name="prepare">
@@ -95,13 +96,13 @@ Copyright 1997 - July 2008 CWI, August 2
   <!-- Run tests -->
   <target name="test">
     <antcall target="Test_Cautocommit" />
-    <antcall target="Test_Cforkbomb" />
+    <!-- <antcall target="Test_Cforkbomb" /> -->
     <antcall target="Test_CisValid" />
     <antcall target="Test_Clargequery" />
     <antcall target="Test_Cmanycon" />
     <antcall target="Test_Creplysize" />
     <antcall target="Test_Csavepoints" />
-    <antcall target="Test_Csendthread" />
+    <!-- <antcall target="Test_Csendthread" /> -->
     <antcall target="Test_Ctransaction" />
     <antcall target="Test_Dobjects" />
     <antcall target="Test_FetchSize" />
@@ -133,6 +134,8 @@ Copyright 1997 - July 2008 CWI, August 2
     <antcall target="BugExecuteUpdate_Bug_3350" />
     <antcall target="BugSetQueryTimeout_Bug_3357" />
     <antcall target="BugResultSetMetaData_Bug_6183" />
+    <antcall target="Bug_PrepStmtSetObject_CLOB_6349" />
+    <antcall target="Bug_Connect_as_voc_getMetaData_Failure_Bug_6388" />
   </target>
 
   <target name="test_class" depends="compile,jdbc">
@@ -382,4 +385,16 @@ Copyright 1997 - July 2008 CWI, August 2
     </antcall>
   </target>
 
+  <target name="Bug_PrepStmtSetObject_CLOB_6349">
+    <antcall target="test_class">
+      <param name="test.class" value="Bug_PrepStmtSetObject_CLOB_6349" />
+    </antcall>
+  </target>
+
+  <target name="Bug_Connect_as_voc_getMetaData_Failure_Bug_6388">
+    <antcall target="test_class">
+      <param name="test.class" 
value="Bug_Connect_as_voc_getMetaData_Failure_Bug_6388" />
+    </antcall>
+  </target>
+
 </project>
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to