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