|
1 | 1 | package com.taosdata.jdbc; |
2 | 2 |
|
3 | 3 | import com.taosdata.jdbc.rs.RestfulResultSet; |
4 | | -import com.taosdata.jdbc.utils.DataTypeConverUtil; |
5 | 4 | import com.taosdata.jdbc.utils.DateTimeUtils; |
| 5 | +import com.taosdata.jdbc.utils.DecimalUtil; |
6 | 6 |
|
| 7 | +import java.math.BigDecimal; |
7 | 8 | import java.nio.ByteBuffer; |
8 | 9 | import java.sql.SQLException; |
9 | 10 | import java.time.Instant; |
@@ -68,6 +69,7 @@ public void handleData() { |
68 | 69 | for (int i = 0; i < columns; i++) { |
69 | 70 | List<Object> col = new ArrayList<>(numOfRows); |
70 | 71 | int type = fields.get(i).getTaosType(); |
| 72 | + int scale = fields.get(i).getScale(); |
71 | 73 | switch (type) { |
72 | 74 | case TSDB_DATA_TYPE_BOOL: |
73 | 75 | case TSDB_DATA_TYPE_TINYINT: |
@@ -218,6 +220,24 @@ public void handleData() { |
218 | 220 | } |
219 | 221 | break; |
220 | 222 | } |
| 223 | + case TSDB_DATA_TYPE_DECIMAL128: |
| 224 | + case TSDB_DATA_TYPE_DECIMAL64: |
| 225 | + int dataLen = type == TSDB_DATA_TYPE_DECIMAL128 ? 16 : 8; |
| 226 | + length = bitMapOffset; |
| 227 | + byte[] tmp = new byte[bitMapOffset]; |
| 228 | + buffer.get(tmp); |
| 229 | + for (int j = 0; j < numOfRows; j++) { |
| 230 | + byte[] tb = new byte[dataLen]; |
| 231 | + buffer.get(tb); |
| 232 | + |
| 233 | + if (isNull(tmp, j)) { |
| 234 | + col.add(null); |
| 235 | + } else { |
| 236 | + BigDecimal t = DecimalUtil.getBigDecimal(tb, scale); |
| 237 | + col.add(t); |
| 238 | + } |
| 239 | + } |
| 240 | + break; |
221 | 241 | default: |
222 | 242 | // unknown type, do nothing |
223 | 243 | col.add(null); |
|
0 commit comments