Skip to content

Commit 0b01450

Browse files
authored
addressing remaining comments for clamps (#136511)
* addressing remaining comments for clamps * fixup
1 parent 7727715 commit 0b01450

File tree

9 files changed

+49
-30
lines changed

9 files changed

+49
-30
lines changed

docs/reference/query-languages/esql/_snippets/functions/examples/clamp.md

Lines changed: 9 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/query-languages/esql/_snippets/functions/examples/clamp_max.md

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/query-languages/esql/kibana/definition/functions/clamp.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/query-languages/esql/kibana/definition/functions/clamp_max.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/query-languages/esql/kibana/docs/functions/clamp.md

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/reference/query-languages/esql/kibana/docs/functions/clamp_max.md

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

x-pack/plugin/esql/qa/testFixtures/src/main/resources/k8s-timeseries-clamp.csv-spec

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,45 @@ required_capability: clamp_functions
8282
TS k8s
8383
| EVAL full_clamped_cost = clamp(network.cost, 1, 20)
8484
| KEEP full_clamped_cost, @timestamp
85-
// end::clamp-max[]
85+
// end::clamp[]
8686
| SORT full_clamped_cost DESC, @timestamp | LIMIT 10;
8787

88-
// tag::clamp-max-result[]
88+
// tag::clamp-result[]
8989
full_clamped_cost:double | @timestamp:datetime
9090
12.5 | 2024-05-10T00:09:52.000Z
9191
12.375 | 2024-05-10T00:01:29.000Z
9292
12.375 | 2024-05-10T00:06:42.000Z
9393
12.375 | 2024-05-10T00:17:12.000Z
94+
// end::clamp-result[]
9495
12.25 | 2024-05-10T00:19:48.000Z
9596
12.125 | 2024-05-10T00:00:57.000Z
9697
12.125 | 2024-05-10T00:03:26.000Z
9798
12.125 | 2024-05-10T00:07:19.000Z
9899
12.125 | 2024-05-10T00:17:39.000Z
99100
12.0 | 2024-05-10T00:08:08.000Z
100101
;
102+
103+
clamp_without_stats_using_column
104+
required_capability: clamp_functions
105+
// tag::clamp[]
106+
TS k8s
107+
| EVAL full_clamped_cost = clamp(network.cost, clamp_max(network.bytes_in, 5), network.bytes_in / 100)
108+
| KEEP full_clamped_cost, @timestamp
109+
// end::clamp[]
110+
| SORT full_clamped_cost DESC, @timestamp | LIMIT 10;
111+
112+
// tag::clamp-result[]
113+
full_clamped_cost:double | @timestamp:datetime
114+
10.0 | 2024-05-10T00:18:33.000Z
115+
9.0 | 2024-05-10T00:04:49.000Z
116+
9.0 | 2024-05-10T00:15:51.000Z
117+
9.0 | 2024-05-10T00:17:12.000Z
118+
9.0 | 2024-05-10T00:20:46.000Z
119+
// end::clamp-result[]
120+
9.0 | 2024-05-10T00:22:54.000Z
121+
8.625 | 2024-05-10T00:11:53.000Z
122+
8.625 | 2024-05-10T00:17:20.000Z
123+
8.625 | 2024-05-10T00:19:36.000Z
124+
8.375 | 2024-05-10T00:03:26.000Z
125+
;
126+

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/ClampMax.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ protected TypeResolution resolveType() {
8888
}
8989

9090
var field = children().get(0);
91-
var min = children().get(1);
91+
var max = children().get(1);
9292
var fieldDataType = field.dataType();
9393
TypeResolution resolution = TypeResolutions.isType(
9494
field,
@@ -104,8 +104,8 @@ protected TypeResolution resolveType() {
104104
return new TypeResolution("'field' must not be null in clamp()");
105105
}
106106
resolution = TypeResolutions.isType(
107-
min,
108-
t -> t.isNumeric() ? fieldDataType.isNumeric() : t.noText() == fieldDataType,
107+
max,
108+
t -> t.isNumeric() ? fieldDataType.isNumeric() : t.noText() == fieldDataType.noText(),
109109
sourceText(),
110110
TypeResolutions.ParamOrdinal.SECOND,
111111
fieldDataType.typeName()
@@ -133,11 +133,10 @@ public boolean foldable() {
133133

134134
@Override
135135
public ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) {
136-
// force datatype initialization
137136
var outputType = dataType();
138137

139138
var max = children().get(1);
140-
var maxF = outputType != max.dataType()
139+
var maxF = PlannerUtils.toElementType(outputType) != PlannerUtils.toElementType(max.dataType())
141140
? Cast.cast(source(), max.dataType(), outputType, toEvaluator.apply(max))
142141
: toEvaluator.apply(max);
143142

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/scalar/conditional/ClampMin.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ protected TypeResolution resolveType() {
105105
}
106106
resolution = TypeResolutions.isType(
107107
min,
108-
t -> t.isNumeric() ? fieldDataType.isNumeric() : t.noText() == fieldDataType,
108+
t -> t.isNumeric() ? fieldDataType.isNumeric() : t.noText() == fieldDataType.noText(),
109109
sourceText(),
110110
TypeResolutions.ParamOrdinal.SECOND,
111111
fieldDataType.typeName()
@@ -133,11 +133,10 @@ public boolean foldable() {
133133

134134
@Override
135135
public ExpressionEvaluator.Factory toEvaluator(ToEvaluator toEvaluator) {
136-
// force datatype initialization
137136
var outputType = dataType();
138137

139138
var min = children().get(1);
140-
var minF = outputType != min.dataType()
139+
var minF = PlannerUtils.toElementType(outputType) != PlannerUtils.toElementType(min.dataType())
141140
? Cast.cast(source(), min.dataType(), outputType, toEvaluator.apply(min))
142141
: toEvaluator.apply(min);
143142

0 commit comments

Comments
 (0)