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

Reduce number of unneeded StringBuilder.append() calls.


diffs (161 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
@@ -2049,8 +2049,7 @@ public class MonetDatabaseMetaData exten
         *
         * @param catalog a catalog name; "" retrieves those without a catalog;
         *                currently ignored
-        * @param schemaPattern a schema name pattern; "" retrieves those
-        *                      without a schema
+        * @param schemaPattern a schema name pattern; "" retrieves those 
without a schema
         * @param tableNamePattern a table name pattern
         * @param columnNamePattern a column name pattern
         * @return ResultSet each row is a column description
@@ -2231,8 +2230,7 @@ public class MonetDatabaseMetaData exten
         *      </OL>
         *
         * @param catalog a catalog name; "" retrieves those without a catalog
-        * @param schemaPattern a schema name pattern; "" retrieves those
-        *                      without a schema
+        * @param schemaPattern a schema name pattern; "" retrieves those 
without a schema
         * @param tableNamePattern a table name pattern
         * @return ResultSet each row is a table privilege description
         * @see #getSearchStringEscape
@@ -3142,23 +3140,23 @@ public class MonetDatabaseMetaData exten
        ) throws SQLException
        {
                StringBuilder query = new StringBuilder(990);
-               query.append("SELECT cast(null as char(1)) AS \"TYPE_CAT\", ")
-                       .append("\"schemas\".\"name\" AS \"TYPE_SCHEM\", ")
-                       .append("\"types\".\"sqlname\" AS \"TYPE_NAME\", ")
-                       .append("CASE \"types\".\"sqlname\"")
+               query.append("SELECT cast(null as char(1)) AS \"TYPE_CAT\", " +
+                       "\"schemas\".\"name\" AS \"TYPE_SCHEM\", " +
+                       "\"types\".\"sqlname\" AS \"TYPE_NAME\", " +
+                       "CASE \"types\".\"sqlname\"" +
                                // next 4 UDTs are known
-                               .append(" WHEN 'inet' THEN 
'nl.cwi.monetdb.jdbc.types.INET'")
-                               .append(" WHEN 'json' THEN 'java.lang.String'")
-                               .append(" WHEN 'url'  THEN 
'nl.cwi.monetdb.jdbc.types.URL'")
-                               .append(" WHEN 'uuid' THEN 'java.lang.String'")
-                               .append(" ELSE 'java.lang.Object' END AS 
\"CLASS_NAME\", ")
-                       .append("CAST(CASE WHEN \"types\".\"sqlname\" IN 
('inet', 'json', 'url', 'uuid') THEN ").append(Types.JAVA_OBJECT)
-                               .append(" ELSE ").append(Types.STRUCT).append(" 
END AS int) AS \"DATA_TYPE\", ")
-                       .append("\"types\".\"systemname\" AS \"REMARKS\", ")
-                       .append("cast(null as smallint) AS \"BASE_TYPE\" ")
-                       .append("FROM sys.types JOIN sys.schemas ON 
types.schema_id = schemas.id ")
+                               " WHEN 'inet' THEN 
'nl.cwi.monetdb.jdbc.types.INET'" +
+                               " WHEN 'json' THEN 'java.lang.String'" +
+                               " WHEN 'url'  THEN 
'nl.cwi.monetdb.jdbc.types.URL'" +
+                               " WHEN 'uuid' THEN 'java.lang.String'" +
+                               " ELSE 'java.lang.Object' END AS 
\"CLASS_NAME\", " +
+                       "CAST(CASE WHEN \"types\".\"sqlname\" IN ('inet', 
'json', 'url', 'uuid') THEN ").append(Types.JAVA_OBJECT)
+                               .append(" ELSE ").append(Types.STRUCT).append(" 
END AS int) AS \"DATA_TYPE\", " +
+                       "\"types\".\"systemname\" AS \"REMARKS\", " +
+                       "cast(null as smallint) AS \"BASE_TYPE\" " +
+                       "FROM sys.types JOIN sys.schemas ON types.schema_id = 
schemas.id " +
                        // exclude the built-in types (I assume they always 
have id <= 99 and eclass < 15)
-                       .append("WHERE \"types\".\"id\" > 99 AND 
\"types\".\"eclass\" >= 15");
+                       "WHERE \"types\".\"id\" > 99 AND \"types\".\"eclass\" 
>= 15");
 
                if (catalog != null && catalog.length() > 0) {
                        // none empty catalog selection.
@@ -3730,22 +3728,22 @@ public class MonetDatabaseMetaData exten
                throws SQLException
        {
                StringBuilder query = new StringBuilder(800);
-               query.append("SELECT DISTINCT cast(null as char(1)) AS 
\"FUNCTION_CAT\", ")
-                       .append("\"schemas\".\"name\" AS \"FUNCTION_SCHEM\", ")
-                       .append("\"functions\".\"name\" AS \"FUNCTION_NAME\", ")
-                       .append("cast(null as char(1)) AS \"REMARKS\", ")
-                       .append("CASE \"functions\".\"type\"")
-                               .append(" 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(" ELSE 
").append(DatabaseMetaData.functionResultUnknown).append(" END AS 
\"FUNCTION_TYPE\", ")
-                       .append("CAST(CASE \"functions\".\"language\" WHEN 0 
THEN \"functions\".\"mod\" || '.' || \"functions\".\"func\" ELSE 
\"schemas\".\"name\" || '.' || \"functions\".\"name\" END AS VARCHAR(1500)) AS 
\"SPECIFIC_NAME\" ")
-               .append("FROM \"sys\".\"functions\", \"sys\".\"schemas\" ")
-               .append("WHERE \"functions\".\"schema_id\" = \"schemas\".\"id\" 
")
+               query.append("SELECT DISTINCT cast(null as char(1)) AS 
\"FUNCTION_CAT\", " +
+                       "\"schemas\".\"name\" AS \"FUNCTION_SCHEM\", " +
+                       "\"functions\".\"name\" AS \"FUNCTION_NAME\", " +
+                       "cast(null as char(1)) AS \"REMARKS\", " +
+                       "CASE \"functions\".\"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(" ELSE 
").append(DatabaseMetaData.functionResultUnknown).append(" END AS 
\"FUNCTION_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\" " +
                // exclude procedures (type = 2). Those need to be returned via 
getProcedures()
-               .append("AND \"functions\".\"type\" <> 2");
+               "AND \"functions\".\"type\" <> 2");
 
                if (catalog != null && catalog.length() > 0) {
                        // none empty catalog selection.
@@ -3831,31 +3829,36 @@ public class MonetDatabaseMetaData exten
                throws SQLException
        {
                StringBuilder query = new StringBuilder(2600);
-               query.append("SELECT DISTINCT CAST(null as char(1)) AS 
\"FUNCTION_CAT\", ")
-                       .append("\"schemas\".\"name\" AS \"FUNCTION_SCHEM\", ")
-                       .append("\"functions\".\"name\" AS \"FUNCTION_NAME\", ")
-                       .append("\"args\".\"name\" AS \"COLUMN_NAME\", ")
-                       .append("CAST(CASE \"args\".\"inout\"")
-                               .append(" WHEN 0 THEN (CASE \"args\".\"number\" 
WHEN 0 THEN ").append(DatabaseMetaData.functionReturn).append(" ELSE 
").append(DatabaseMetaData.functionColumnOut).append(" END)")
-                               .append(" WHEN 1 THEN 
").append(DatabaseMetaData.functionColumnIn)
-                               .append(" ELSE 
").append(DatabaseMetaData.functionColumnUnknown).append(" END AS smallint) AS 
\"COLUMN_TYPE\", ")
-                       
.append("CAST(").append(MonetDriver.getSQLTypeMap("\"args\".\"type\"")).append("
 AS int) AS \"DATA_TYPE\", ")
-                       .append("\"args\".\"type\" AS \"TYPE_NAME\", ")
-                       .append("CASE \"args\".\"type\" WHEN 'tinyint' THEN 3 
WHEN 'smallint' THEN 5 WHEN 'int' THEN 10 WHEN 'bigint' THEN 19 WHEN 'hugeint' 
THEN 38 WHEN 'oid' THEN 19 WHEN 'wrd' THEN 19 ELSE \"args\".\"type_digits\" END 
AS \"PRECISION\", ")
-                       .append("CASE \"args\".\"type\" WHEN 'tinyint' THEN 1 
WHEN 'smallint' THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8 WHEN 'hugeint' 
THEN 16 WHEN 'oid' THEN 8 WHEN 'wrd' THEN 8 ELSE \"args\".\"type_digits\" END 
AS \"LENGTH\", ")
-                       .append("CAST(CASE WHEN \"args\".\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric','time','timetz','timestamp','timestamptz','sec_interval')
 THEN \"args\".\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", ")
-                       .append("CAST(CASE WHEN \"args\".\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') 
THEN 10 WHEN \"args\".\"type\" IN ('real','float','double') THEN 2 ELSE NULL 
END AS smallint) AS \"RADIX\", ")
-                       
.append("CAST(").append(DatabaseMetaData.functionNullableUnknown).append(" AS 
smallint) AS \"NULLABLE\", ")
-                       .append("CAST(null as char(1)) AS \"REMARKS\", ")
-                       .append("CASE WHEN \"args\".\"type\" IN 
('char','varchar','binary','varbinary') THEN \"args\".\"type_digits\" ELSE NULL 
END AS \"CHAR_OCTET_LENGTH\", ")
-                       .append("\"args\".\"number\" AS \"ORDINAL_POSITION\", ")
-                       .append("CAST('' as varchar(3)) AS \"IS_NULLABLE\", ")
-                       .append("CAST(null as char(1)) AS \"SPECIFIC_NAME\" ")
-               .append("FROM \"sys\".\"args\", \"sys\".\"functions\", 
\"sys\".\"schemas\" ")
-               .append("WHERE \"args\".\"func_id\" = \"functions\".\"id\" ")
-               .append("AND \"functions\".\"schema_id\" = \"schemas\".\"id\" ")
+               query.append("SELECT DISTINCT CAST(null as char(1)) AS 
\"FUNCTION_CAT\", " +
+                       "\"schemas\".\"name\" AS \"FUNCTION_SCHEM\", " +
+                       "\"functions\".\"name\" AS \"FUNCTION_NAME\", " +
+                       "\"args\".\"name\" AS \"COLUMN_NAME\", " +
+                       "CAST(CASE \"args\".\"inout\"" +
+                               " WHEN 0 THEN (CASE \"args\".\"number\" WHEN 0 
THEN ")
+                               
.append(DatabaseMetaData.functionReturn).append(" ELSE 
").append(DatabaseMetaData.functionColumnOut).append(" END)" +
+                               " WHEN 1 THEN 
").append(DatabaseMetaData.functionColumnIn)
+                               .append(" ELSE 
").append(DatabaseMetaData.functionColumnUnknown).append(" END AS smallint) AS 
\"COLUMN_TYPE\", " +
+                       
"CAST(").append(MonetDriver.getSQLTypeMap("\"args\".\"type\"")).append(" AS 
int) AS \"DATA_TYPE\", " +
+                       "\"args\".\"type\" AS \"TYPE_NAME\", " +
+                       "CASE \"args\".\"type\" WHEN 'tinyint' THEN 3 WHEN 
'smallint' THEN 5 WHEN 'int' THEN 10 WHEN 'bigint' THEN 19" +
+                               " WHEN 'hugeint' THEN 38 WHEN 'oid' THEN 19 
WHEN 'wrd' THEN 19 ELSE \"args\".\"type_digits\" END AS \"PRECISION\", " +
+                       "CASE \"args\".\"type\" WHEN 'tinyint' THEN 1 WHEN 
'smallint' THEN 2 WHEN 'int' THEN 4 WHEN 'bigint' THEN 8" +
+                               " WHEN 'hugeint' THEN 16 WHEN 'oid' THEN 8 WHEN 
'wrd' THEN 8 ELSE \"args\".\"type_digits\" END AS \"LENGTH\", " +
+                       "CAST(CASE WHEN \"args\".\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric',"
 +
+                               
"'time','timetz','timestamp','timestamptz','sec_interval') THEN 
\"args\".\"type_scale\" ELSE NULL END AS smallint) AS \"SCALE\", " +
+                       "CAST(CASE WHEN \"args\".\"type\" IN 
('tinyint','smallint','int','bigint','hugeint','oid','wrd','decimal','numeric') 
THEN 10" +
+                               " WHEN \"args\".\"type\" IN 
('real','float','double') THEN 2 ELSE NULL END AS smallint) AS \"RADIX\", " +
+                       
"CAST(").append(DatabaseMetaData.functionNullableUnknown).append(" AS smallint) 
AS \"NULLABLE\", " +
+                       "CAST(null as char(1)) AS \"REMARKS\", " +
+                       "CASE WHEN \"args\".\"type\" IN 
('char','varchar','binary','varbinary') THEN \"args\".\"type_digits\" ELSE NULL 
END AS \"CHAR_OCTET_LENGTH\", " +
+                       "\"args\".\"number\" AS \"ORDINAL_POSITION\", " +
+                       "CAST('' as varchar(3)) AS \"IS_NULLABLE\", " +
+                       "CAST(null as char(1)) AS \"SPECIFIC_NAME\" " +
+               "FROM \"sys\".\"args\", \"sys\".\"functions\", 
\"sys\".\"schemas\" " +
+               "WHERE \"args\".\"func_id\" = \"functions\".\"id\" " +
+               "AND \"functions\".\"schema_id\" = \"schemas\".\"id\" " +
                // exclude procedures (type = 2). Those need to be returned via 
getProcedureColumns()
-               .append("AND \"functions\".\"type\" <> 2");
+               "AND \"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