Skip to content

Commit 6401d01

Browse files
committed
upd
1 parent 4feebcd commit 6401d01

File tree

3 files changed

+34
-27
lines changed

3 files changed

+34
-27
lines changed

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/AttributeMap.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ private AttributeMap() {
171171
delegate = new LinkedHashMap<>();
172172
}
173173

174-
public AttributeMap(int expectedSize) {
174+
private AttributeMap(int expectedSize) {
175175
delegate = Maps.newLinkedHashMapWithExpectedSize(expectedSize);
176176
}
177177

@@ -184,7 +184,6 @@ public AttributeMap<E> combine(AttributeMap<E> other) {
184184
AttributeMap<E> combine = new AttributeMap<>(this.size() + other.size());
185185
combine.addAll(this);
186186
combine.addAll(other);
187-
188187
return combine;
189188
}
190189

@@ -195,7 +194,6 @@ public AttributeMap<E> subtract(AttributeMap<E> other) {
195194
diff.delegate.put(entry.getKey(), entry.getValue());
196195
}
197196
}
198-
199197
return diff;
200198
}
201199

@@ -397,13 +395,20 @@ public static <E> AttributeMap<E> of(Attribute key, E value) {
397395
}
398396

399397
public static <E> Builder<E> builder() {
400-
return new Builder<>();
398+
return new Builder<>(new AttributeMap<>());
399+
}
400+
401+
public static <E> Builder<E> builder(int expectedSize) {
402+
return new Builder<>(new AttributeMap<>(expectedSize));
401403
}
402404

403405
public static class Builder<E> {
404-
private final AttributeMap<E> map = new AttributeMap<>();
405406

406-
private Builder() {}
407+
private final AttributeMap<E> map;
408+
409+
public Builder(AttributeMap<E> map) {
410+
this.map = map;
411+
}
407412

408413
public E put(Attribute attr, E value) {
409414
return map.add(attr, value);

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/AttributeSet.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,33 +165,39 @@ public String toString() {
165165
}
166166

167167
public Builder asBuilder() {
168-
return new Builder().addAll(this);
168+
return builder(size()).addAll(this);
169169
}
170170

171171
public static AttributeSet of(Attribute... attrs) {
172-
final AttributeMap.Builder<Object> mapBuilder = AttributeMap.builder();
172+
final AttributeMap.Builder<Object> mapBuilder = AttributeMap.builder(attrs.length);
173173
for (var a : attrs) {
174174
mapBuilder.put(a, PRESENT);
175175
}
176176
return new AttributeSet(mapBuilder.build());
177177
}
178178

179179
public static AttributeSet of(Collection<? extends Attribute> c) {
180-
final AttributeMap.Builder<Object> mapBuilder = AttributeMap.builder();
180+
final AttributeMap.Builder<Object> mapBuilder = AttributeMap.builder(c.size());
181181
for (var a : c) {
182182
mapBuilder.put(a, PRESENT);
183183
}
184184
return new AttributeSet(mapBuilder.build());
185185
}
186186

187187
public static Builder builder() {
188-
return new Builder();
188+
return new Builder(AttributeMap.builder());
189+
}
190+
191+
public static Builder builder(int expectedSize) {
192+
return new Builder(AttributeMap.builder(expectedSize));
189193
}
190194

191195
public static class Builder {
192-
private final AttributeMap.Builder<Object> mapBuilder = AttributeMap.builder();
196+
private final AttributeMap.Builder<Object> mapBuilder;
193197

194-
private Builder() {}
198+
private Builder(AttributeMap.Builder<Object> mapBuilder) {
199+
this.mapBuilder = mapBuilder;
200+
}
195201

196202
public Builder add(Attribute attr) {
197203
mapBuilder.put(attr, PRESENT);

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/expression/Expressions.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,6 @@ public static List<Attribute> asAttributes(List<? extends NamedExpression> named
3535
return list;
3636
}
3737

38-
public static AttributeMap<Expression> asAttributeMap(List<? extends NamedExpression> named) {
39-
if (named.isEmpty()) {
40-
return AttributeMap.emptyAttributeMap();
41-
}
42-
43-
AttributeMap.Builder<Expression> mapBuilder = AttributeMap.builder();
44-
for (NamedExpression exp : named) {
45-
mapBuilder.put(exp.toAttribute(), exp);
46-
}
47-
return mapBuilder.build();
48-
}
49-
5038
public static boolean anyMatch(List<? extends Expression> exps, Predicate<? super Expression> predicate) {
5139
for (Expression exp : exps) {
5240
if (exp.anyMatch(predicate)) {
@@ -121,11 +109,19 @@ public static AttributeSet references(List<? extends Expression> exps) {
121109
return AttributeSet.EMPTY;
122110
}
123111

124-
var setBuilder = AttributeSet.builder();
112+
var size = 0;
113+
var references = new ArrayList<AttributeSet>(exps.size());
125114
for (Expression exp : exps) {
126-
setBuilder.addAll(exp.references());
115+
var refs = exp.references();
116+
size += refs.size();
117+
references.add(refs);
118+
}
119+
120+
var builder = AttributeSet.builder(size);
121+
for (AttributeSet refs : references) {
122+
builder.addAll(refs);
127123
}
128-
return setBuilder.build();
124+
return builder.build();
129125
}
130126

131127
public static String name(Expression e) {

0 commit comments

Comments
 (0)