in java/clickhouse-connector/src/integration-test/java/com/epam/deltix/timebase/connector/clickhouse/DeepObjectFieldTests.java [62:96]
void readCallsObject() throws SQLException {
CallsSnapshot message = new CallsSnapshot();
ObjectArrayList<InstrumentMessage> calls = new ObjectArrayList<>();
CallInfo callInfo = new CallInfo();
initSystemRequiredFields(callInfo);
callInfo.CallId = "CallId";
ObjectArrayList<InstrumentMessage> locations = new ObjectArrayList<>();
locations.add(new LocationQuantity(new ObjectArrayList<>(new CharSequence[]{"l1", "l11"}), 999, "location1", TestEnum.FIRST));
locations.add(new LocationQuantity(new ObjectArrayList<>(new CharSequence[]{"l2", "l22"}), 111, "location2", TestEnum.SECOND));
callInfo.Locations = locations;
calls.add(callInfo);
calls.add(callInfo);
message.Calls = calls;
initSystemRequiredFields(message);
DXTickStream stream = loadData(message, CallsSnapshot.class, CallInfo.class, LocationQuantity.class);
SchemaOptions schemaOptions = Util.getSchemaOptions(stream, ColumnNamingScheme.TYPE_AND_NAME);
ClickhouseProperties clickhouseProperties = new ClickhouseProperties();
clickhouseProperties.setDatabase("tbMessages");
SchemaProcessor schemaProcessor = new SchemaProcessor(schemaOptions, clickhouseClient , clickhouseProperties);
Map<String, TableDeclaration> stringTableDeclarationMap = schemaProcessor.prepareClickhouseTable();
MemoryDataInput in = new MemoryDataInput();
RecordClassDescriptor[] descriptors = schemaOptions.getTbSchema().getContentClasses();
List<UnboundDecoder> decoders = Arrays.stream(descriptors).map(CodecFactory.COMPILED::createFixedUnboundDecoder).collect(Collectors.toList());
UnboundTableWriter unboundTableWriter = new UnboundTableWriter(stream.getKey(), ColumnNamingScheme.TYPE_AND_NAME, clickhouseClient,
stringTableDeclarationMap, schemaProcessor.getColumnDeclarations(), decoders, in/*, 10_000, 5_000*/);
TickCursor cursor = stream.select(0, new SelectionOptions(true, false));
cursor.next();
assertThrows(UnsupportedOperationException.class, () -> unboundTableWriter.send((RawMessage) cursor.getMessage(), cursor));
}