Changeset: 438b3c3d4476 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=438b3c3d4476
Modified Files:
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
Branch: Jun2016
Log Message:

Improved SQL query for MonetDatabaseMetaData.getProcedures().
Previous implementation used scalar subquery in select list which isn't working
in pre-Jun2016 releases. See issue 3920.
Re-written the SQL query by removing the SELECT COUNT(*) FROM \"sys\".\"args\"
and used a LEFT OUTER JOIN \"sys\".\"args\" ON (\"args\".\"func_id\" = 
\"functions\".\"id\" and \"args\".\"number\" = 0)


diffs (25 lines):

diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java 
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -1597,16 +1597,14 @@ public class MonetDatabaseMetaData exten
                        "cast(null as char(1)) AS \"Field5\", " +
                        "cast(null as char(1)) AS \"Field6\", " +
                        "cast(null as char(1)) AS \"REMARKS\", " +
-                       "CAST(CASE (SELECT COUNT(*) FROM \"sys\".\"args\" where 
\"args\".\"func_id\" = \"functions\".\"id\" and \"args\".\"number\" = 0)" +
-                               " WHEN 0 THEN 
").append(DatabaseMetaData.procedureNoResult)
-                       .append(" WHEN 1 THEN 
").append(DatabaseMetaData.procedureReturnsResult)
-                       .append(" ELSE 
").append(DatabaseMetaData.procedureResultUnknown).append(" END AS smallint) AS 
\"PROCEDURE_TYPE\", " +
+                       "CAST(CASE \"args\".\"type\" WHEN NULL THEN 
").append(DatabaseMetaData.procedureNoResult)
+                       .append(" ELSE 
").append(DatabaseMetaData.procedureReturnsResult).append(" END AS smallint) AS 
\"PROCEDURE_TYPE\", " +
                        "CAST(CASE \"functions\".\"language\" WHEN 0 THEN 
\"functions\".\"mod\" || '.' || \"functions\".\"func\"" +
                        " ELSE \"schemas\".\"name\" || '.' || 
\"functions\".\"name\" END AS VARCHAR(1500)) AS \"SPECIFIC_NAME\" " +
-               "FROM \"sys\".\"functions\", \"sys\".\"schemas\" " +
-               "WHERE \"functions\".\"schema_id\" = \"schemas\".\"id\" " +
+               "FROM \"sys\".\"functions\" JOIN \"sys\".\"schemas\" ON 
(\"functions\".\"schema_id\" = \"schemas\".\"id\")" +
+               " LEFT OUTER JOIN \"sys\".\"args\" ON (\"args\".\"func_id\" = 
\"functions\".\"id\" and \"args\".\"number\" = 0) " +
                // include procedures only (type = 2). Others will be returned 
via getFunctions()
-               "AND \"functions\".\"type\" = 2");
+               "WHERE \"functions\".\"type\" = 2");
 
                if (catalog != null && catalog.length() > 0) {
                        // none empty catalog selection.
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to