when you exe a sql by JdbcTemplate.exe("select * from xx.xx where
column='?'","filter_value") with acatica jdbc remote driver, the client
will get a empty result
But if you exe the sql at the Server-Context,it will be ok!
and debug the process,the jdbc.CalciteMetaImpl will process the
prepareStatement like
@Override public ExecuteResult execute(StatementHandle h,
List<TypedValue> parameterValues, int maxRowsInFirstFrame)
throws NoSuchStatementException {
final CalciteConnectionImpl calciteConnection = getConnection();
CalciteServerStatement stmt = calciteConnection.server.getStatement(h);
final Signature signature = requireNonNull(stmt.getSignature(),
() -> "stmt.getSignature() is null for " + stmt);
MetaResultSet metaResultSet;
if (signature.statementType.canUpdate()) {
final Iterable<Object> iterable =
_createIterable(h, signature, parameterValues, null);
final Iterator<Object> iterator = iterable.iterator();
stmt.setResultSet(iterator);
metaResultSet = MetaResultSet.count(h.connectionId, h.id,
((Number) iterator.next()).intValue());
} else {
// Don't populate the first frame.
// It's not worth saving a round-trip, since we're local.
final Meta.Frame frame =
new Meta.Frame(0, false, Collections.emptyList());
metaResultSet =
MetaResultSet.create(h.connectionId, h.id, false, signature,
frame);
}
return new ExecuteResult(ImmutableList.of(metaResultSet));
}
MetaResultSet.create(xxx,frame),the frame is empty,it looks just werid..