in dekaf-jdbc/src/impl/JdbcMatrixCursor.java [62:89]
public void prepare(final @NotNull Class<?> @NotNull [] cellClasses) {
if (getters != null) throw new DBFetchingException("Cursor has been already prepared", seance.statementText);
else if (isClosed()) throw new DBFetchingException("Cursor is closed", seance.statementText);
int n = cellClasses.length;
try {
final ResultSetMetaData md = rset.getMetaData();
final int cc = md.getColumnCount();
if (cc < n) {
String msg = "Too few columns in the result set: expected " + n + " but actual " + cc;
throw new DBFetchingException(msg, seance.statementText);
}
//noinspection unchecked
getters = createArray(JdbcValueGetter.class, n);
for (int i = 0; i < n; i++) {
int jdbcType = md.getColumnType(i + 1);
Class<? extends B> cellClass = (Class<? extends B>) cellClasses[i];
JdbcValueGetter<? extends B> getter = JdbcValueGetters.of(jdbcType, cellClass);
getters[i] = getter;
}
}
catch (SQLException e) {
throw new DBFetchingException("Failed to prepare cursor: "+e.getMessage(), e, seance.statementText);
}
columnCount = n;
}