mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-23 21:38:15 +00:00
SQL: fix name of Arithmetic functions (elastic/x-pack-elasticsearch#3884)
* SQL: fix name of Arithmetic functions Remove id from name of Arithmetic function and improve name of Neg Original commit: elastic/x-pack-elasticsearch@4f3e8d6a2d
This commit is contained in:
parent
7504e33da7
commit
3c6f9d4d29
@ -82,11 +82,6 @@ public abstract class ArithmeticFunction extends BinaryScalarFunction {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String name() {
|
public String name() {
|
||||||
return toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("(");
|
sb.append("(");
|
||||||
sb.append(left());
|
sb.append(left());
|
||||||
@ -103,11 +98,15 @@ public abstract class ArithmeticFunction extends BinaryScalarFunction {
|
|||||||
sb.insert(pos, "(");
|
sb.insert(pos, "(");
|
||||||
sb.append(")");
|
sb.append(")");
|
||||||
}
|
}
|
||||||
sb.append(")#");
|
sb.append(")");
|
||||||
sb.append(functionId());
|
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return name() + "#" + functionId();
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean useParanthesis() {
|
protected boolean useParanthesis() {
|
||||||
return !(left() instanceof Literal) || !(right() instanceof Literal);
|
return !(left() instanceof Literal) || !(right() instanceof Literal);
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ package org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic;
|
|||||||
|
|
||||||
import org.elasticsearch.xpack.sql.expression.Expression;
|
import org.elasticsearch.xpack.sql.expression.Expression;
|
||||||
import org.elasticsearch.xpack.sql.expression.Expressions;
|
import org.elasticsearch.xpack.sql.expression.Expressions;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.NamedExpression;
|
||||||
import org.elasticsearch.xpack.sql.expression.function.scalar.UnaryScalarFunction;
|
import org.elasticsearch.xpack.sql.expression.function.scalar.UnaryScalarFunction;
|
||||||
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.UnaryArithmeticProcessor.UnaryArithmeticOperation;
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.UnaryArithmeticProcessor.UnaryArithmeticOperation;
|
||||||
import org.elasticsearch.xpack.sql.expression.function.scalar.processor.definition.ProcessorDefinition;
|
import org.elasticsearch.xpack.sql.expression.function.scalar.processor.definition.ProcessorDefinition;
|
||||||
@ -49,6 +50,11 @@ public class Neg extends UnaryScalarFunction {
|
|||||||
return field().dataType();
|
return field().dataType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String name() {
|
||||||
|
return "-" + (field() instanceof NamedExpression && field().resolved() ? Expressions.name(field()) : field().toString());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String formatScript(String template) {
|
protected String formatScript(String template) {
|
||||||
// Painless supports negating (and hopefully its corner cases)
|
// Painless supports negating (and hopefully its corner cases)
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License;
|
||||||
|
* you may not use this file except in compliance with the Elastic License.
|
||||||
|
*/
|
||||||
|
package org.elasticsearch.xpack.sql.expression.function;
|
||||||
|
|
||||||
|
import org.elasticsearch.test.ESTestCase;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.Literal;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.Add;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.Div;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.Mod;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.Mul;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.Neg;
|
||||||
|
import org.elasticsearch.xpack.sql.expression.function.scalar.arithmetic.Sub;
|
||||||
|
|
||||||
|
import static org.elasticsearch.xpack.sql.tree.Location.EMPTY;
|
||||||
|
|
||||||
|
public class NamedExpressionTests extends ESTestCase {
|
||||||
|
|
||||||
|
public void testArithmeticFunctionName() {
|
||||||
|
Add add = new Add(EMPTY, l(5), l(2));
|
||||||
|
assertEquals("(5 + 2)", add.name());
|
||||||
|
|
||||||
|
Div div = new Div(EMPTY, l(5), l(2));
|
||||||
|
assertEquals("(5 / 2)", div.name());
|
||||||
|
|
||||||
|
Mod mod = new Mod(EMPTY, l(5), l(2));
|
||||||
|
assertEquals("(5 % 2)", mod.name());
|
||||||
|
|
||||||
|
Mul mul = new Mul(EMPTY, l(5), l(2));
|
||||||
|
assertEquals("(5 * 2)", mul.name());
|
||||||
|
|
||||||
|
Sub sub = new Sub(EMPTY, l(5), l(2));
|
||||||
|
assertEquals("(5 - 2)", sub.name());
|
||||||
|
|
||||||
|
Neg neg = new Neg(EMPTY, l(5));
|
||||||
|
assertEquals("-5", neg.name());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Literal l(Object value) {
|
||||||
|
return Literal.of(EMPTY, value);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user