comparison 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
comparison
equal deleted inserted replaced
365:63cccacad468 366:83bfade6333e
3768 final StringBuilder query = new StringBuilder(800); 3768 final StringBuilder query = new StringBuilder(800);
3769 query.append("SELECT cast(null as char(1)) AS \"FUNCTION_CAT\", " + 3769 query.append("SELECT cast(null as char(1)) AS \"FUNCTION_CAT\", " +
3770 "s.\"name\" AS \"FUNCTION_SCHEM\", " + 3770 "s.\"name\" AS \"FUNCTION_SCHEM\", " +
3771 "f.\"name\" AS \"FUNCTION_NAME\", ") 3771 "f.\"name\" AS \"FUNCTION_NAME\", ")
3772 .append(useCommentsTable ? "COALESCE(cm.\"remark\", cast(f.\"func\" as varchar(9999)))" : "cast(f.\"func\" as varchar(9999))").append(" AS \"REMARKS\", " + 3772 .append(useCommentsTable ? "COALESCE(cm.\"remark\", cast(f.\"func\" as varchar(9999)))" : "cast(f.\"func\" as varchar(9999))").append(" AS \"REMARKS\", " +
3773 "CASE f.\"type\"" + 3773 "CASE WHEN f.\"type\" IN (1,2,3,4,6) THEN ").append(DatabaseMetaData.functionNoTable)
3774 " WHEN 1 THEN ").append(DatabaseMetaData.functionNoTable) 3774 .append(" WHEN f.\"type\" IN (5,7) THEN ").append(DatabaseMetaData.functionReturnsTable)
3775 .append(" WHEN 2 THEN ").append(DatabaseMetaData.functionNoTable)
3776 .append(" WHEN 3 THEN ").append(DatabaseMetaData.functionNoTable)
3777 .append(" WHEN 4 THEN ").append(DatabaseMetaData.functionNoTable)
3778 .append(" WHEN 5 THEN ").append(DatabaseMetaData.functionReturnsTable)
3779 .append(" WHEN 6 THEN ").append(DatabaseMetaData.functionNoTable)
3780 .append(" WHEN 7 THEN ").append(DatabaseMetaData.functionReturnsTable)
3781 .append(" ELSE ").append(DatabaseMetaData.functionResultUnknown).append(" END AS \"FUNCTION_TYPE\", " + 3775 .append(" ELSE ").append(DatabaseMetaData.functionResultUnknown).append(" END AS \"FUNCTION_TYPE\", " +
3782 // only the id value uniquely identifies a function. Include it to be able to differentiate between multiple overloaded functions with the same name 3776 // only the id value uniquely identifies a function. Include it to be able to differentiate between multiple overloaded functions with the same name
3783 "cast(f.\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " + 3777 "cast(f.\"id\" as varchar(10)) AS \"SPECIFIC_NAME\" " +
3784 "FROM \"sys\".\"functions\" f " + 3778 "FROM \"sys\".\"functions\" f " +
3785 "JOIN \"sys\".\"schemas\" s ON f.\"schema_id\" = s.\"id\" "); 3779 "JOIN \"sys\".\"schemas\" s ON f.\"schema_id\" = s.\"id\" ");