Skip to content

Commit 38f8cdb

Browse files
committed
Merge remote-tracking branch 'es/6.x' into ccr-6.x
* es/6.x: Scripting: Remove dead code from painless module (#32064) (#32104) Painless: Move and Rename Several Methods in the lookup package (#32105) Bypass highlight query terms extraction on empty fields (#32090) Core: Backport java time date formatters (#31997) Switch non-x-pack to new style requests (#32106) SQL: allow LEFT and RIGHT as function names (#32066) Painless: Separate PainlessLookup into PainlessLookup and PainlessLookupBuilder (#32054) [test] turn on host io cache for opensuse (#32053) DOCS: put LIMIT 10 to the SQL query (#32065)
2 parents 3cccc98 + f555426 commit 38f8cdb

File tree

87 files changed

+3972
-2017
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+3972
-2017
lines changed

Vagrantfile

+5
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ Vagrant.configure(2) do |config|
115115
'opensuse-42'.tap do |box|
116116
config.vm.define box, define_opts do |config|
117117
config.vm.box = 'elastic/opensuse-42-x86_64'
118+
119+
# https://github.com/elastic/elasticsearch/issues/30295
120+
config.vm.provider 'virtualbox' do |vbox|
121+
vbox.customize ['storagectl', :id, '--name', 'SATA Controller', '--hostiocache', 'on']
122+
end
118123
suse_common config, box
119124
end
120125
end

docs/reference/getting-started.asciidoc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1121,7 +1121,7 @@ In SQL, the above aggregation is similar in concept to:
11211121

11221122
[source,sh]
11231123
--------------------------------------------------
1124-
SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC
1124+
SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC LIMIT 10;
11251125
--------------------------------------------------
11261126

11271127
And the response (partially shown):

modules/ingest-common/src/test/java/org/elasticsearch/ingest/common/DateProcessorTests.java

+19-16
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424
import org.elasticsearch.ingest.TestTemplateService;
2525
import org.elasticsearch.script.TemplateScript;
2626
import org.elasticsearch.test.ESTestCase;
27-
import org.joda.time.DateTime;
28-
import org.joda.time.DateTimeZone;
2927

28+
import java.time.ZoneId;
29+
import java.time.ZoneOffset;
30+
import java.time.ZonedDateTime;
3031
import java.util.ArrayList;
3132
import java.util.Collections;
3233
import java.util.HashMap;
@@ -36,19 +37,21 @@
3637

3738
import static org.hamcrest.CoreMatchers.containsString;
3839
import static org.hamcrest.CoreMatchers.equalTo;
39-
import static org.joda.time.DateTimeZone.UTC;
4040

4141
public class DateProcessorTests extends ESTestCase {
42+
4243
private TemplateScript.Factory templatize(Locale locale) {
4344
return new TestTemplateService.MockTemplateScript.Factory(locale.getLanguage());
4445
}
4546

46-
private TemplateScript.Factory templatize(DateTimeZone timezone) {
47-
return new TestTemplateService.MockTemplateScript.Factory(timezone.getID());
47+
private TemplateScript.Factory templatize(ZoneId timezone) {
48+
// prevent writing "UTC" as string, as joda time does not parse it
49+
String id = timezone.equals(ZoneOffset.UTC) ? "UTC" : timezone.getId();
50+
return new TestTemplateService.MockTemplateScript.Factory(id);
4851
}
4952
public void testJodaPattern() {
5053
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10),
51-
templatize(DateTimeZone.forID("Europe/Amsterdam")), templatize(Locale.ENGLISH),
54+
templatize(ZoneId.of("Europe/Amsterdam")), templatize(Locale.ENGLISH),
5255
"date_as_string", Collections.singletonList("yyyy dd MM hh:mm:ss"), "date_as_date");
5356
Map<String, Object> document = new HashMap<>();
5457
document.put("date_as_string", "2010 12 06 11:05:15");
@@ -63,7 +66,7 @@ public void testJodaPatternMultipleFormats() {
6366
matchFormats.add("dd/MM/yyyy");
6467
matchFormats.add("dd-MM-yyyy");
6568
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10),
66-
templatize(DateTimeZone.forID("Europe/Amsterdam")), templatize(Locale.ENGLISH),
69+
templatize(ZoneId.of("Europe/Amsterdam")), templatize(Locale.ENGLISH),
6770
"date_as_string", matchFormats, "date_as_date");
6871

6972
Map<String, Object> document = new HashMap<>();
@@ -98,7 +101,7 @@ public void testJodaPatternMultipleFormats() {
98101
public void testInvalidJodaPattern() {
99102
try {
100103
DateProcessor processor = new DateProcessor(randomAlphaOfLength(10),
101-
templatize(UTC), templatize(randomLocale(random())),
104+
templatize(ZoneOffset.UTC), templatize(randomLocale(random())),
102105
"date_as_string", Collections.singletonList("invalid pattern"), "date_as_date");
103106
Map<String, Object> document = new HashMap<>();
104107
document.put("date_as_string", "2010");
@@ -112,7 +115,7 @@ public void testInvalidJodaPattern() {
112115

113116
public void testJodaPatternLocale() {
114117
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10),
115-
templatize(DateTimeZone.forID("Europe/Amsterdam")), templatize(Locale.ITALIAN),
118+
templatize(ZoneId.of("Europe/Amsterdam")), templatize(Locale.ITALIAN),
116119
"date_as_string", Collections.singletonList("yyyy dd MMM"), "date_as_date");
117120
Map<String, Object> document = new HashMap<>();
118121
document.put("date_as_string", "2010 12 giugno");
@@ -123,18 +126,18 @@ public void testJodaPatternLocale() {
123126

124127
public void testJodaPatternDefaultYear() {
125128
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10),
126-
templatize(DateTimeZone.forID("Europe/Amsterdam")), templatize(Locale.ENGLISH),
129+
templatize(ZoneId.of("Europe/Amsterdam")), templatize(Locale.ENGLISH),
127130
"date_as_string", Collections.singletonList("dd/MM"), "date_as_date");
128131
Map<String, Object> document = new HashMap<>();
129132
document.put("date_as_string", "12/06");
130133
IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), document);
131134
dateProcessor.execute(ingestDocument);
132135
assertThat(ingestDocument.getFieldValue("date_as_date", String.class),
133-
equalTo(DateTime.now().getYear() + "-06-12T00:00:00.000+02:00"));
136+
equalTo(ZonedDateTime.now().getYear() + "-06-12T00:00:00.000+02:00"));
134137
}
135138

136139
public void testTAI64N() {
137-
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10), templatize(DateTimeZone.forOffsetHours(2)),
140+
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10), templatize(ZoneOffset.ofHours(2)),
138141
templatize(randomLocale(random())),
139142
"date_as_string", Collections.singletonList("TAI64N"), "date_as_date");
140143
Map<String, Object> document = new HashMap<>();
@@ -146,8 +149,8 @@ public void testTAI64N() {
146149
}
147150

148151
public void testUnixMs() {
149-
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10), templatize(UTC), templatize(randomLocale(random())),
150-
"date_as_string", Collections.singletonList("UNIX_MS"), "date_as_date");
152+
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10), templatize(ZoneOffset.UTC),
153+
templatize(randomLocale(random())), "date_as_string", Collections.singletonList("UNIX_MS"), "date_as_date");
151154
Map<String, Object> document = new HashMap<>();
152155
document.put("date_as_string", "1000500");
153156
IngestDocument ingestDocument = RandomDocumentPicks.randomIngestDocument(random(), document);
@@ -162,7 +165,7 @@ public void testUnixMs() {
162165
}
163166

164167
public void testUnix() {
165-
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10), templatize(UTC),
168+
DateProcessor dateProcessor = new DateProcessor(randomAlphaOfLength(10), templatize(ZoneOffset.UTC),
166169
templatize(randomLocale(random())),
167170
"date_as_string", Collections.singletonList("UNIX"), "date_as_date");
168171
Map<String, Object> document = new HashMap<>();
@@ -186,7 +189,7 @@ public void testInvalidTimezone() {
186189

187190
public void testInvalidLocale() {
188191
DateProcessor processor = new DateProcessor(randomAlphaOfLength(10),
189-
templatize(UTC), new TestTemplateService.MockTemplateScript.Factory("invalid_locale"),
192+
templatize(ZoneOffset.UTC), new TestTemplateService.MockTemplateScript.Factory("invalid_locale"),
190193
"date_as_string", Collections.singletonList("yyyy"), "date_as_date");
191194
Map<String, Object> document = new HashMap<>();
192195
document.put("date_as_string", "2010");

modules/lang-painless/src/main/java/org/elasticsearch/painless/AnalyzerCaster.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919

2020
package org.elasticsearch.painless;
2121

22-
import org.elasticsearch.painless.lookup.PainlessLookup;
2322
import org.elasticsearch.painless.lookup.PainlessCast;
24-
import org.elasticsearch.painless.lookup.PainlessLookup.def;
23+
import org.elasticsearch.painless.lookup.PainlessLookupUtility;
24+
import org.elasticsearch.painless.lookup.def;
2525

2626
import java.util.Objects;
2727

@@ -465,8 +465,9 @@ public static PainlessCast getLegalCast(Location location, Class<?> actual, Clas
465465
(actual.isAssignableFrom(expected) && explicit)) {
466466
return PainlessCast.standard(actual, expected, explicit);
467467
} else {
468-
throw location.createError(new ClassCastException(
469-
"Cannot cast from [" + PainlessLookup.ClassToName(actual) + "] to [" + PainlessLookup.ClassToName(expected) + "]."));
468+
throw location.createError(new ClassCastException("Cannot cast from " +
469+
"[" + PainlessLookupUtility.anyTypeToPainlessTypeName(actual) + "] to " +
470+
"[" + PainlessLookupUtility.anyTypeToPainlessTypeName(expected) + "]."));
470471
}
471472
}
472473

modules/lang-painless/src/main/java/org/elasticsearch/painless/Def.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@
1919

2020
package org.elasticsearch.painless;
2121

22+
import org.elasticsearch.painless.lookup.PainlessClass;
2223
import org.elasticsearch.painless.lookup.PainlessLookup;
24+
import org.elasticsearch.painless.lookup.PainlessLookupUtility;
2325
import org.elasticsearch.painless.lookup.PainlessMethod;
24-
import org.elasticsearch.painless.lookup.PainlessClass;
2526
import org.elasticsearch.painless.lookup.PainlessMethodKey;
2627

2728
import java.lang.invoke.CallSite;
@@ -302,7 +303,7 @@ static MethodHandle lookupMethod(PainlessLookup painlessLookup, MethodHandles.Lo
302303
nestedType,
303304
0,
304305
DefBootstrap.REFERENCE,
305-
PainlessLookup.ClassToName(interfaceType));
306+
PainlessLookupUtility.anyTypeToPainlessTypeName(interfaceType));
306307
filter = nested.dynamicInvoker();
307308
} else {
308309
throw new AssertionError();
@@ -347,7 +348,7 @@ private static MethodHandle lookupReferenceInternal(PainlessLookup painlessLooku
347348
PainlessMethod interfaceMethod = painlessLookup.getPainlessStructFromJavaClass(clazz).functionalMethod;
348349
if (interfaceMethod == null) {
349350
throw new IllegalArgumentException("Cannot convert function reference [" + type + "::" + call + "] " +
350-
"to [" + PainlessLookup.ClassToName(clazz) + "], not a functional interface");
351+
"to [" + PainlessLookupUtility.anyTypeToPainlessTypeName(clazz) + "], not a functional interface");
351352
}
352353
int arity = interfaceMethod.arguments.size() + captures.length;
353354
final MethodHandle handle;

modules/lang-painless/src/main/java/org/elasticsearch/painless/FunctionRef.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.elasticsearch.painless.lookup.PainlessClass;
2323
import org.elasticsearch.painless.lookup.PainlessLookup;
24+
import org.elasticsearch.painless.lookup.PainlessLookupUtility;
2425
import org.elasticsearch.painless.lookup.PainlessMethod;
2526
import org.elasticsearch.painless.lookup.PainlessMethodKey;
2627
import org.objectweb.asm.Type;
@@ -168,7 +169,7 @@ private static PainlessMethod lookup(PainlessLookup painlessLookup, Class<?> exp
168169
PainlessMethod method = painlessLookup.getPainlessStructFromJavaClass(expected).functionalMethod;
169170
if (method == null) {
170171
throw new IllegalArgumentException("Cannot convert function reference [" + type + "::" + call + "] " +
171-
"to [" + PainlessLookup.ClassToName(expected) + "], not a functional interface");
172+
"to [" + PainlessLookupUtility.anyTypeToPainlessTypeName(expected) + "], not a functional interface");
172173
}
173174

174175
// lookup requested method

modules/lang-painless/src/main/java/org/elasticsearch/painless/Locals.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919

2020
package org.elasticsearch.painless;
2121

22+
import org.elasticsearch.painless.ScriptClassInfo.MethodArgument;
2223
import org.elasticsearch.painless.lookup.PainlessLookup;
24+
import org.elasticsearch.painless.lookup.PainlessLookupUtility;
2325
import org.elasticsearch.painless.lookup.PainlessMethod;
2426
import org.elasticsearch.painless.lookup.PainlessMethodKey;
25-
import org.elasticsearch.painless.ScriptClassInfo.MethodArgument;
2627

2728
import java.util.Arrays;
2829
import java.util.Collection;
@@ -292,7 +293,7 @@ public int getSlot() {
292293
@Override
293294
public String toString() {
294295
StringBuilder b = new StringBuilder();
295-
b.append("Variable[type=").append(PainlessLookup.ClassToName(clazz));
296+
b.append("Variable[type=").append(PainlessLookupUtility.anyTypeToPainlessTypeName(clazz));
296297
b.append(",name=").append(name);
297298
b.append(",slot=").append(slot);
298299
if (readonly) {

modules/lang-painless/src/main/java/org/elasticsearch/painless/MethodWriter.java

+1-9
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
package org.elasticsearch.painless;
2121

2222
import org.elasticsearch.painless.lookup.PainlessCast;
23-
import org.elasticsearch.painless.lookup.PainlessLookup.def;
23+
import org.elasticsearch.painless.lookup.def;
2424
import org.objectweb.asm.ClassVisitor;
2525
import org.objectweb.asm.Label;
2626
import org.objectweb.asm.Opcodes;
@@ -227,14 +227,6 @@ public static Type getType(Class<?> clazz) {
227227
return Type.getType(clazz);
228228
}
229229

230-
public void writeBranch(final Label tru, final Label fals) {
231-
if (tru != null) {
232-
visitJumpInsn(Opcodes.IFNE, tru);
233-
} else if (fals != null) {
234-
visitJumpInsn(Opcodes.IFEQ, fals);
235-
}
236-
}
237-
238230
/** Starts a new string concat.
239231
* @return the size of arguments pushed to stack (the object that does string concats, e.g. a StringBuilder)
240232
*/

modules/lang-painless/src/main/java/org/elasticsearch/painless/PainlessScriptEngine.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.elasticsearch.common.component.AbstractComponent;
2525
import org.elasticsearch.common.settings.Settings;
2626
import org.elasticsearch.painless.Compiler.Loader;
27-
import org.elasticsearch.painless.lookup.PainlessLookup;
27+
import org.elasticsearch.painless.lookup.PainlessLookupBuilder;
2828
import org.elasticsearch.painless.spi.Whitelist;
2929
import org.elasticsearch.script.ExecutableScript;
3030
import org.elasticsearch.script.ScriptContext;
@@ -102,9 +102,11 @@ public PainlessScriptEngine(Settings settings, Map<ScriptContext<?>, List<Whitel
102102
for (Map.Entry<ScriptContext<?>, List<Whitelist>> entry : contexts.entrySet()) {
103103
ScriptContext<?> context = entry.getKey();
104104
if (context.instanceClazz.equals(SearchScript.class) || context.instanceClazz.equals(ExecutableScript.class)) {
105-
contextsToCompilers.put(context, new Compiler(GenericElasticsearchScript.class, new PainlessLookup(entry.getValue())));
105+
contextsToCompilers.put(context, new Compiler(GenericElasticsearchScript.class,
106+
new PainlessLookupBuilder(entry.getValue()).build()));
106107
} else {
107-
contextsToCompilers.put(context, new Compiler(context.instanceClazz, new PainlessLookup(entry.getValue())));
108+
contextsToCompilers.put(context, new Compiler(context.instanceClazz,
109+
new PainlessLookupBuilder(entry.getValue()).build()));
108110
}
109111
}
110112

modules/lang-painless/src/main/java/org/elasticsearch/painless/ScriptClassInfo.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.elasticsearch.painless;
2121

2222
import org.elasticsearch.painless.lookup.PainlessLookup;
23+
import org.elasticsearch.painless.lookup.PainlessLookupUtility;
2324

2425
import java.lang.invoke.MethodType;
2526
import java.lang.reflect.Field;
@@ -182,7 +183,7 @@ private MethodArgument methodArgument(PainlessLookup painlessLookup, Class<?> cl
182183

183184
private static Class<?> definitionTypeForClass(PainlessLookup painlessLookup, Class<?> type,
184185
Function<Class<?>, String> unknownErrorMessageSource) {
185-
type = PainlessLookup.ObjectClassTodefClass(type);
186+
type = PainlessLookupUtility.javaObjectTypeToPainlessDefType(type);
186187
Class<?> componentType = type;
187188

188189
while (componentType.isArray()) {

modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/EnhancedPainlessLexer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import org.antlr.v4.runtime.LexerNoViableAltException;
2424
import org.antlr.v4.runtime.Token;
2525
import org.antlr.v4.runtime.misc.Interval;
26-
import org.elasticsearch.painless.lookup.PainlessLookup;
2726
import org.elasticsearch.painless.Location;
27+
import org.elasticsearch.painless.lookup.PainlessLookup;
2828

2929
/**
3030
* A lexer that is customized for painless. It:

modules/lang-painless/src/main/java/org/elasticsearch/painless/antlr/StashingTokenFactory.java

-62
This file was deleted.

0 commit comments

Comments
 (0)