use of com.hazelcast.sql.impl.type.QueryDataType in project hazelcast by hazelcast.
the class SlidingWindowAggregatePhysicalRel method outputValueMapping.
@SuppressWarnings("checkstyle:MagicNumber")
public KeyedWindowResultFunction<? super Object, ? super JetSqlRow, ?> outputValueMapping() {
int[] windowBoundsIndexMask = new int[getRowType().getFieldCount()];
QueryDataType descriptorType = HazelcastTypeUtils.toHazelcastType(timestampExpression.getType());
for (Integer index : windowStartIndexes) {
windowBoundsIndexMask[index] = -1;
}
for (Integer index : windowEndIndexes) {
windowBoundsIndexMask[index] = -2;
}
for (int i = 0, j = 0; i < windowBoundsIndexMask.length; i++) {
if (windowBoundsIndexMask[i] >= 0) {
windowBoundsIndexMask[i] = j++;
}
}
return (start, end, ignoredKey, result, isEarly) -> insertWindowBound(result, start, end, descriptorType, windowBoundsIndexMask);
}
use of com.hazelcast.sql.impl.type.QueryDataType in project hazelcast by hazelcast.
the class MetadataCompactResolver method resolveAndValidateFields.
@Override
public Stream<MappingField> resolveAndValidateFields(boolean isKey, List<MappingField> userFields, Map<String, String> options, InternalSerializationService serializationService) {
if (userFields.isEmpty()) {
throw QueryException.error("Column list is required for Compact format");
}
String typeNameProperty = isKey ? OPTION_KEY_COMPACT_TYPE_NAME : OPTION_VALUE_COMPACT_TYPE_NAME;
String typeName = options.get(typeNameProperty);
if (typeName == null) {
throw QueryException.error("Unable to resolve table metadata. Missing ['typeName'] option");
}
Map<QueryPath, MappingField> fields = extractFields(userFields, isKey);
return fields.entrySet().stream().map(entry -> {
QueryPath path = entry.getKey();
if (path.getPath() == null) {
throw QueryException.error("Cannot use the '" + path + "' field with Compact serialization");
}
QueryDataType type = entry.getValue().type();
if (type == QueryDataType.OBJECT) {
throw QueryException.error("Cannot derive Compact type for '" + type.getTypeFamily() + "'");
}
return entry.getValue();
});
}
use of com.hazelcast.sql.impl.type.QueryDataType in project hazelcast by hazelcast.
the class MetadataPortableResolver method resolveMetadata.
private static KvMetadata resolveMetadata(boolean isKey, List<MappingField> resolvedFields, Map<QueryPath, MappingField> fieldsByPath, @Nonnull ClassDefinition clazz) {
List<TableField> fields = new ArrayList<>();
for (Entry<QueryPath, MappingField> entry : fieldsByPath.entrySet()) {
QueryPath path = entry.getKey();
QueryDataType type = entry.getValue().type();
String name = entry.getValue().name();
fields.add(new MapTableField(name, type, false, path));
}
maybeAddDefaultField(isKey, resolvedFields, fields, QueryDataType.OBJECT);
return new KvMetadata(fields, GenericQueryTargetDescriptor.DEFAULT, new PortableUpsertTargetDescriptor(clazz));
}
use of com.hazelcast.sql.impl.type.QueryDataType in project hazelcast by hazelcast.
the class KvRowProjector method createExtractors.
private static QueryExtractor[] createExtractors(QueryPath[] paths, QueryDataType[] types, QueryTarget keyTarget, QueryTarget valueTarget) {
QueryExtractor[] extractors = new QueryExtractor[paths.length];
for (int i = 0; i < paths.length; i++) {
QueryPath path = paths[i];
QueryDataType type = types[i];
extractors[i] = path.isKey() ? keyTarget.createExtractor(path.getPath(), type) : valueTarget.createExtractor(path.getPath(), type);
}
return extractors;
}
use of com.hazelcast.sql.impl.type.QueryDataType in project hazelcast by hazelcast.
the class MetadataJsonResolver method resolveMetadata.
@Override
public KvMetadata resolveMetadata(boolean isKey, List<MappingField> resolvedFields, Map<String, String> options, InternalSerializationService serializationService) {
Map<QueryPath, MappingField> externalFieldsByPath = extractFields(resolvedFields, isKey);
List<TableField> fields = new ArrayList<>();
for (Entry<QueryPath, MappingField> entry : externalFieldsByPath.entrySet()) {
QueryPath path = entry.getKey();
QueryDataType type = entry.getValue().type();
String name = entry.getValue().name();
fields.add(new MapTableField(name, type, false, path));
}
maybeAddDefaultField(isKey, resolvedFields, fields, QueryDataType.OBJECT);
return new KvMetadata(fields, HazelcastJsonQueryTargetDescriptor.INSTANCE, HazelcastJsonUpsertTargetDescriptor.INSTANCE);
}
Aggregations