Changeset: 4f50019b2cf8 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/4f50019b2cf8
Modified Files:
src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
Branch: default
Log Message:
Improve MonetResultSetMetaData contructor by checking on valid arrays once,
such that this does not need to be checked in methods for each result column.
diffs (142 lines):
diff --git a/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
b/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
--- a/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
+++ b/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
@@ -95,10 +95,26 @@ final class MonetResultSetMetaData
schemas = header.getSchemaNames();
tables = header.getTableNames();
columns = header.getNames();
+ types = header.getTypes();
lengths = header.getColumnLengths();
- types = header.getTypes();
precisions = header.getColumnPrecisions();
scales = header.getColumnScales();
+ if (schemas == null) {
+ throw new IllegalArgumentException("Schemas may not be
null!");
+ }
+ if (tables == null) {
+ throw new IllegalArgumentException("Tables may not be
null!");
+ }
+ if (columns == null) {
+ throw new IllegalArgumentException("Columns may not be
null!");
+ }
+ if (types == null) {
+ throw new IllegalArgumentException("MonetDB Types may
not be null!");
+ }
+ if (lengths == null) {
+ throw new IllegalArgumentException("Lengths may not be
null!");
+ }
+ // Note: the precisions and scales arrays are null when the
statement is a PLAN, EXPLAIN or TRACE statement !!
colCount = columns.length;
if (columns.length != tables.length || columns.length !=
types.length ) {
@@ -394,22 +410,19 @@ final class MonetResultSetMetaData
@Override
public int getColumnDisplaySize(final int column) throws SQLException {
checkColumnIndexValidity(column);
- if (lengths != null) {
- try {
- int len = lengths[column - 1];
- if (len == 0) {
- final String monettype = types[column -
1];
- // in case of inet it always has 0 as
length. we need to correct it.
- if ("inet".equals(monettype)) {
- len = 18; //
128.127.126.125/24
- }
+ try {
+ int len = lengths[column - 1];
+ if (len == 0) {
+ final String monettype = types[column - 1];
+ // in case of inet it always has 0 as length.
we need to correct it.
+ if ("inet".equals(monettype)) {
+ len = 18; // 128.127.126.125/24
}
- return len;
- } catch (IndexOutOfBoundsException e) {
- throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
+ return len;
+ } catch (IndexOutOfBoundsException e) {
+ throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
- return 1;
}
/**
@@ -471,14 +484,11 @@ final class MonetResultSetMetaData
@Override
public String getSchemaName(final int column) throws SQLException {
checkColumnIndexValidity(column);
- if (schemas != null) {
- try {
- return schemas[column - 1];
- } catch (IndexOutOfBoundsException e) {
- throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
- }
+ try {
+ return schemas[column - 1];
+ } catch (IndexOutOfBoundsException e) {
+ throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
- return "";
}
/**
@@ -491,14 +501,11 @@ final class MonetResultSetMetaData
@Override
public String getTableName(final int column) throws SQLException {
checkColumnIndexValidity(column);
- if (tables != null) {
- try {
- return tables[column - 1];
- } catch (IndexOutOfBoundsException e) {
- throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
- }
+ try {
+ return tables[column - 1];
+ } catch (IndexOutOfBoundsException e) {
+ throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
- return "";
}
/**
@@ -669,7 +676,6 @@ final class MonetResultSetMetaData
switch (getColumnType(column)) {
case Types.DECIMAL:
case Types.NUMERIC:
- {
// these data types may have a variable scale,
max scale is 38
try {
// Special handling for: day_interval
and sec_interval as they are
@@ -684,24 +690,23 @@ final class MonetResultSetMetaData
if (scales != null) {
return scales[column - 1];
}
+ return 0;
} catch (IndexOutOfBoundsException e) {
throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
- return 0;
- }
case Types.TIME:
case Types.TIME_WITH_TIMEZONE:
case Types.TIMESTAMP:
case Types.TIMESTAMP_WITH_TIMEZONE:
- if (scales != null) {
- try {
+ try {
+ if (scales != null) {
return scales[column - 1];
- } catch (IndexOutOfBoundsException e) {
- throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
+ // support microseconds, so scale 6
+ return 6; // 21:51:34.399753
+ } catch (IndexOutOfBoundsException e) {
+ throw
MonetResultSet.newSQLInvalidColumnIndexException(column);
}
- // support microseconds, so scale 6
- return 6; // 21:51:34.399753
// All other types should return 0
// case Types.BIGINT:
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]