This commit is contained in:
Redkale
2020-01-11 21:22:34 +08:00
parent 92d0f7e796
commit da2befcb97

View File

@@ -431,12 +431,18 @@ public class DataJdbcSource extends DataSqlSource<Connection> {
final Statement stmt = conn.createStatement(); final Statement stmt = conn.createStatement();
ResultSet set = stmt.executeQuery(sql); ResultSet set = stmt.executeQuery(sql);
ResultSetMetaData rsd = set.getMetaData(); ResultSetMetaData rsd = set.getMetaData();
boolean smallint = rsd == null ? false : rsd.getColumnType(1) == Types.SMALLINT; boolean[] smallints = null;
while (set.next()) { while (set.next()) {
int index = 0; int index = 0;
Serializable[] keys = new Serializable[groupByColumns.length]; Serializable[] keys = new Serializable[groupByColumns.length];
if (smallints == null) {
smallints = new boolean[keys.length];
for (int i = 0; i < keys.length; i++) {
smallints[i] = rsd == null ? false : rsd.getColumnType(i + 1) == Types.SMALLINT;
}
}
for (int i = 0; i < keys.length; i++) { for (int i = 0; i < keys.length; i++) {
keys[i] = (Serializable) ((smallint && index == 0) ? set.getShort(++index) : set.getObject(++index)); keys[i] = (Serializable) ((smallints[i] && index == 0) ? set.getShort(++index) : set.getObject(++index));
} }
Number[] vals = new Number[funcNodes.length]; Number[] vals = new Number[funcNodes.length];
for (int i = 0; i < vals.length; i++) { for (int i = 0; i < vals.length; i++) {