comparison src/main/java/org/monetdb/jdbc/MonetResultSet.java @ 415:50e43af49d47

Improved DatabaseMetaData.getTypeInfo() output for temporal data types: sec_interval, day_interval, month_interval, date, time, timetz, timestamp and timestamptz.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Fri, 15 Jan 2021 00:50:29 +0100 (2021-01-14)
parents 1e278695fe54
children b3c876a0d61f
comparison
equal deleted inserted replaced
414:1e278695fe54 415:50e43af49d47
1634 @Override 1634 @Override
1635 public int getScale(final int column) throws SQLException { 1635 public int getScale(final int column) throws SQLException {
1636 switch (getColumnType(column)) { 1636 switch (getColumnType(column)) {
1637 case Types.DECIMAL: 1637 case Types.DECIMAL:
1638 case Types.NUMERIC: 1638 case Types.NUMERIC:
1639 // these data types may have a scale, max scale is 38 1639 {
1640 // special handling for: day_interval and sec_interval as these are mapped to these result types (see MonetDriver typemap)
1641 // they appear to have a fixed scale (tested against Oct2020)
1642 final String monettype = getColumnTypeName(column);
1643 if ("day_interval".equals(monettype))
1644 return 0;
1645 if ("sec_interval".equals(monettype))
1646 return 3;
1647
1648 // these data types may have a variable scale, max scale is 38
1640 try { 1649 try {
1641 if (_is_fetched[column] != true) { 1650 if (_is_fetched[column] != true) {
1642 fetchColumnInfo(column); 1651 fetchColumnInfo(column);
1643 } 1652 }
1644 return _scale[column]; 1653 return _scale[column];
1645 } catch (IndexOutOfBoundsException e) { 1654 } catch (IndexOutOfBoundsException e) {
1646 throw MonetResultSet.newSQLInvalidColumnIndexException(column); 1655 throw MonetResultSet.newSQLInvalidColumnIndexException(column);
1647 } 1656 }
1657 }
1648 case Types.TIME: 1658 case Types.TIME:
1649 case Types.TIME_WITH_TIMEZONE: 1659 case Types.TIME_WITH_TIMEZONE:
1650 case Types.TIMESTAMP: 1660 case Types.TIMESTAMP:
1651 case Types.TIMESTAMP_WITH_TIMEZONE: 1661 case Types.TIMESTAMP_WITH_TIMEZONE:
1652 // support microseconds, so scale 6 1662 // support microseconds, so scale 6