|
7 | 7 | import stroom.lmdb2.BBKV;
|
8 | 8 | import stroom.planb.shared.PlanBDoc;
|
9 | 9 | import stroom.planb.shared.SessionSettings;
|
| 10 | +import stroom.query.api.v2.ExpressionUtil; |
10 | 11 | import stroom.query.common.v2.ExpressionPredicateFactory;
|
11 | 12 | import stroom.query.common.v2.ExpressionPredicateFactory.ValueFunctionFactories;
|
12 | 13 | import stroom.query.language.functions.FieldIndex;
|
|
25 | 26 | import java.util.Arrays;
|
26 | 27 | import java.util.HashMap;
|
27 | 28 | import java.util.Iterator;
|
| 29 | +import java.util.List; |
28 | 30 | import java.util.Map;
|
29 | 31 | import java.util.Optional;
|
30 | 32 | import java.util.function.Function;
|
@@ -58,18 +60,25 @@ public static SessionDb create(final Path path,
|
58 | 60 | final ByteBufferFactory byteBufferFactory,
|
59 | 61 | final PlanBDoc doc,
|
60 | 62 | final boolean readOnly) {
|
61 |
| - if (doc.getSettings() instanceof final SessionSettings sessionSettings) { |
62 |
| - return new SessionDb(path, byteBufferFactory, sessionSettings, readOnly); |
63 |
| - } else { |
64 |
| - throw new RuntimeException("No session settings provided"); |
| 63 | + return new SessionDb(path, byteBufferFactory, getSettings(doc), readOnly); |
| 64 | + } |
| 65 | + |
| 66 | + private static SessionSettings getSettings(final PlanBDoc doc) { |
| 67 | + if (doc.getSettings() instanceof final SessionSettings settings) { |
| 68 | + return settings; |
65 | 69 | }
|
| 70 | + return SessionSettings.builder().build(); |
66 | 71 | }
|
67 | 72 |
|
68 | 73 | public void search(final ExpressionCriteria criteria,
|
69 | 74 | final FieldIndex fieldIndex,
|
70 | 75 | final DateTimeSettings dateTimeSettings,
|
71 | 76 | final ExpressionPredicateFactory expressionPredicateFactory,
|
72 | 77 | final ValuesConsumer consumer) {
|
| 78 | + // Ensure we have fields for all expression criteria. |
| 79 | + final List<String> fields = ExpressionUtil.fields(criteria.getExpression()); |
| 80 | + fields.forEach(fieldIndex::create); |
| 81 | + |
73 | 82 | final ValueFunctionFactories<Val[]> valueFunctionFactories = createValueFunctionFactories(fieldIndex);
|
74 | 83 | final Optional<Predicate<Val[]>> optionalPredicate = expressionPredicateFactory
|
75 | 84 | .create(criteria.getExpression(), valueFunctionFactories, dateTimeSettings);
|
|
0 commit comments