diff src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java @ 366:83bfade6333e

Optimise constructed SQL query for getFunctions().
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Wed, 16 Sep 2020 19:07:05 +0200 (2020-09-16)
parents 63cccacad468
children 2ab474af487c
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -3770,14 +3770,8 @@ public class MonetDatabaseMetaData
 			"s.\"name\" AS \"FUNCTION_SCHEM\", " +
 			"f.\"name\" AS \"FUNCTION_NAME\", ")
 			.append(useCommentsTable ? "COALESCE(cm.\"remark\", cast(f.\"func\" as varchar(9999)))" : "cast(f.\"func\" as varchar(9999))").append(" AS \"REMARKS\", " +
-			"CASE f.\"type\"" +
-				" WHEN 1 THEN ").append(DatabaseMetaData.functionNoTable)
-			.append(" WHEN 2 THEN ").append(DatabaseMetaData.functionNoTable)
-			.append(" WHEN 3 THEN ").append(DatabaseMetaData.functionNoTable)
-			.append(" WHEN 4 THEN ").append(DatabaseMetaData.functionNoTable)
-			.append(" WHEN 5 THEN ").append(DatabaseMetaData.functionReturnsTable)
-			.append(" WHEN 6 THEN ").append(DatabaseMetaData.functionNoTable)
-			.append(" WHEN 7 THEN ").append(DatabaseMetaData.functionReturnsTable)
+			"CASE WHEN f.\"type\" IN (1,2,3,4,6) THEN ").append(DatabaseMetaData.functionNoTable)
+			.append(" WHEN f.\"type\" IN (5,7) THEN ").append(DatabaseMetaData.functionReturnsTable)
 			.append(" ELSE ").append(DatabaseMetaData.functionResultUnknown).append(" END AS \"FUNCTION_TYPE\", " +
 			// only the id value uniquely identifies a function. Include it to be able to differentiate between multiple overloaded functions with the same name
 			"cast(f.\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " +