Mercurial > hg > monetdb-java
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 |