org.elasticsearch.xpack.esql.optimizer.rules.ConvertStringToByteRef Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of x-pack-esql Show documentation
Show all versions of x-pack-esql Show documentation
The plugin that powers ESQL for Elasticsearch
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
package org.elasticsearch.xpack.esql.optimizer.rules;
import org.apache.lucene.util.BytesRef;
import org.elasticsearch.xpack.esql.core.expression.Expression;
import org.elasticsearch.xpack.esql.core.expression.Literal;
import org.elasticsearch.xpack.esql.core.optimizer.OptimizerRules;
import java.util.ArrayList;
import java.util.List;
public final class ConvertStringToByteRef extends OptimizerRules.OptimizerExpressionRule {
public ConvertStringToByteRef() {
super(OptimizerRules.TransformDirection.UP);
}
@Override
protected Expression rule(Literal lit) {
Object value = lit.value();
if (value == null) {
return lit;
}
if (value instanceof String s) {
return Literal.of(lit, new BytesRef(s));
}
if (value instanceof List> l) {
if (l.isEmpty() || false == l.get(0) instanceof String) {
return lit;
}
List byteRefs = new ArrayList<>(l.size());
for (Object v : l) {
byteRefs.add(new BytesRef(v.toString()));
}
return Literal.of(lit, byteRefs);
}
return lit;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy