Skip to content

Commit 6239d5b

Browse files
committed
Some more fixes for tests
1 parent 67affcf commit 6239d5b

File tree

10 files changed

+63
-25
lines changed

10 files changed

+63
-25
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9192000
1+
9194000
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
available_processors_in_os_stats,9193000
1+
esql_date_range_created_version,9194000

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/BlockFactory.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -486,9 +486,21 @@ public DateRangeBlockBuilder newDateRangeBlockBuilder(int estimatedSize) {
486486
}
487487

488488
public DateRangeBlock newConstantDateRangeBlock(DateRangeBlockBuilder.DateRangeLiteral value, int positions) {
489-
var fromBuilder = newConstantLongBlockWith(value.from(), positions);
490-
var toBuilder = newConstantLongBlockWith(value.to(), positions);
491-
return new DateRangeArrayBlock(fromBuilder, toBuilder);
489+
try (var builder = newDateRangeBlockBuilder(positions)) {
490+
for (int i = 0; i < positions; i++) {
491+
if (value.from() == null) {
492+
builder.from().appendNull();
493+
} else {
494+
builder.from().appendLong(value.from());
495+
}
496+
if (value.to() == null) {
497+
builder.to().appendNull();
498+
} else {
499+
builder.to().appendLong(value.to());
500+
}
501+
}
502+
return builder.build();
503+
}
492504
}
493505

494506
public DateRangeBlock newDateRangeBlock(long[] fromValues, long[] toValues, int positions) {

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/DateRangeArrayBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ public long ramBytesUsed() {
205205

206206
@Override
207207
public boolean equals(Object obj) {
208-
if (obj instanceof DateRangeArrayBlock that) {
208+
if (obj instanceof DateRangeBlock that) {
209209
return DateRangeBlock.equals(this, that);
210210
}
211211
return false;

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/data/DateRangeBlockBuilder.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,16 @@ public DateRangeBlockBuilder appendNull() {
103103
}
104104

105105
public DateRangeBlockBuilder appendDateRange(DateRangeLiteral lit) {
106-
fromBuilder.appendLong(lit.from);
107-
toBuilder.appendLong(lit.to);
106+
if (lit.from == null) {
107+
fromBuilder.appendNull();
108+
} else {
109+
fromBuilder.appendLong(lit.from);
110+
}
111+
if (lit.to == null) {
112+
toBuilder.appendNull();
113+
} else {
114+
toBuilder.appendLong(lit.to);
115+
}
108116
return this;
109117
}
110118

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/topn/ResultBuilderForDateRange.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
import org.elasticsearch.compute.data.DateRangeBlockBuilder;
1212
import org.elasticsearch.compute.data.Block;
1313
import org.elasticsearch.compute.data.BlockFactory;
14-
import org.elasticsearch.index.mapper.BlockLoader;
15-
16-
import java.util.List;
1714

1815
public class ResultBuilderForDateRange implements ResultBuilder {
1916

@@ -34,8 +31,16 @@ public void decodeValue(BytesRef values) {
3431
if (count == 0) {
3532
builder.appendNull();
3633
} else {
37-
builder.from().appendLong(TopNEncoder.DEFAULT_UNSORTABLE.decodeLong(values));
38-
builder.to().appendLong(TopNEncoder.DEFAULT_UNSORTABLE.decodeLong(values));
34+
if (TopNEncoder.DEFAULT_UNSORTABLE.decodeBoolean(values)) {
35+
builder.from().appendLong(TopNEncoder.DEFAULT_UNSORTABLE.decodeLong(values));
36+
} else {
37+
builder.from().appendNull();
38+
}
39+
if (TopNEncoder.DEFAULT_UNSORTABLE.decodeBoolean(values)) {
40+
builder.to().appendLong(TopNEncoder.DEFAULT_UNSORTABLE.decodeLong(values));
41+
} else {
42+
builder.to().appendNull();
43+
}
3944
}
4045
}
4146

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/operator/topn/ValueExtractorForDateRange.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,17 @@ public class ValueExtractorForDateRange implements ValueExtractor {
2121
@Override
2222
public void writeValue(BreakingBytesRefBuilder values, int position) {
2323
TopNEncoder.DEFAULT_UNSORTABLE.encodeVInt(1, values);
24-
if (block.isNull(position)) {
24+
if (block.getFromBlock().isNull(position)) {
2525
TopNEncoder.DEFAULT_UNSORTABLE.encodeBoolean(false, values);
2626
} else {
2727
TopNEncoder.DEFAULT_UNSORTABLE.encodeBoolean(true, values);
28-
TopNEncoder.DEFAULT_UNSORTABLE.encodeDouble(block.getFromBlock().getLong(position), values);
29-
TopNEncoder.DEFAULT_UNSORTABLE.encodeDouble(block.getToBlock().getLong(position), values);
28+
TopNEncoder.DEFAULT_UNSORTABLE.encodeLong(block.getFromBlock().getLong(position), values);
29+
}
30+
if (block.getToBlock().isNull(position)) {
31+
TopNEncoder.DEFAULT_UNSORTABLE.encodeBoolean(false, values);
32+
} else {
33+
TopNEncoder.DEFAULT_UNSORTABLE.encodeBoolean(true, values);
34+
TopNEncoder.DEFAULT_UNSORTABLE.encodeLong(block.getToBlock().getLong(position), values);
3035
}
3136
}
3237

x-pack/plugin/esql/compute/src/test/java/org/elasticsearch/compute/operator/topn/ExtractorTests.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public static Iterable<Object[]> parameters() {
115115
);
116116
}
117117
case DOC -> cases.add(
118-
new Object[] {
118+
new Object[]{
119119
new TestCase(
120120
"doc",
121121
e,
@@ -128,7 +128,7 @@ public static Iterable<Object[]> parameters() {
128128
blockFactory.newConstantIntBlockWith(randomInt(), 1).asVector(),
129129
randomBoolean() ? null : randomBoolean()
130130
).asBlock()
131-
) }
131+
)}
132132
);
133133
case NULL -> {
134134
}
@@ -152,13 +152,13 @@ public static Iterable<Object[]> parameters() {
152152
}
153153

154154
static Object[] valueTestCase(String name, ElementType type, TopNEncoder encoder, Supplier<Object> value) {
155-
return new Object[] {
155+
return new Object[]{
156156
new TestCase(
157157
name,
158158
type,
159159
encoder,
160160
() -> BlockUtils.fromListRow(TestBlockFactory.getNonBreakingInstance(), Arrays.asList(value.get()))[0]
161-
) };
161+
)};
162162
}
163163

164164
static class TestCase {
@@ -192,6 +192,7 @@ static BreakingBytesRefBuilder nonBreakingBytesRefBuilder() {
192192

193193
public void testNotInKey() {
194194
Block value = testCase.value.get();
195+
System.out.println(testCase.type);
195196

196197
BreakingBytesRefBuilder valuesBuilder = nonBreakingBytesRefBuilder();
197198
ValueExtractor.extractorFor(testCase.type, testCase.encoder.toUnsortable(), false, value).writeValue(valuesBuilder, 0);
@@ -211,7 +212,12 @@ public void testNotInKey() {
211212
result.decodeValue(values);
212213
assertThat(values.length, equalTo(0));
213214

214-
assertThat(result.build(), equalTo(value));
215+
var res = result.build();
216+
if (equalTo(value).matches(res)) {
217+
System.out.println("value matches");
218+
}
219+
220+
assertThat(res, equalTo(value));
215221
}
216222

217223
public void testInKey() {
@@ -263,9 +269,11 @@ public static AggregateMetricDoubleLiteral randomAggregateMetricDouble(boolean a
263269
);
264270
}
265271

266-
private static DateRangeBlockBuilder.DateRangeLiteral randomDateRange(boolean isNull) {
272+
private static DateRangeBlockBuilder.DateRangeLiteral randomDateRange(boolean haveNulls) {
267273
var from = randomMillisUpToYear9999();
268274
var to = randomLongBetween(from + 1, MAX_MILLIS_BEFORE_9999);
269-
return isNull ? null : new DateRangeBlockBuilder.DateRangeLiteral(from, to);
275+
return haveNulls
276+
? new DateRangeBlockBuilder.DateRangeLiteral(randomBoolean() ? from : null, randomBoolean() ? to : null)
277+
: new DateRangeBlockBuilder.DateRangeLiteral(from, to);
270278
}
271279
}

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/expression/function/aggregate/Present.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ protected TypeResolution resolveType() {
138138
dt -> dt.isCounter() == false && dt != DataType.DENSE_VECTOR && dt != DataType.DATE_RANGE,
139139
sourceText(),
140140
DEFAULT,
141-
"any type except counter types or dense_vector / date_range"
141+
"any type except counter types, dense_vector or date_range"
142142
);
143143
}
144144
}

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/aggregate/PresentErrorTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ protected Matcher<String> expectedTypeErrorMatcher(List<Set<DataType>> validPerP
4343

4444
@Override
4545
protected void assertNumberOfCheckedSignatures(int checked) {
46-
assertThat(checked, equalTo(1));
46+
assertThat(checked, equalTo(2));
4747
}
4848
}

0 commit comments

Comments
 (0)