Skip to content

Commit fa14ff5

Browse files
committed
Fixed tests to include new field type
1 parent d8f5e0b commit fa14ff5

File tree

4 files changed

+207
-48
lines changed

4 files changed

+207
-48
lines changed

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/AnalyzerTests.java

Lines changed: 175 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,23 @@ public void testProjectIncludeMultiStarPattern() {
257257
}
258258

259259
public void testProjectStar() {
260-
assertProjection("""
261-
from test
262-
| keep *
263-
""", "_meta_field", "emp_no", "first_name", "gender", "job", "job.raw", "languages", "last_name", "long_noidx", "salary");
260+
assertProjection(
261+
"""
262+
from test
263+
| keep *
264+
""",
265+
"_meta_field",
266+
"emp_no",
267+
"first_name",
268+
"gender",
269+
"hire_date",
270+
"job",
271+
"job.raw",
272+
"languages",
273+
"last_name",
274+
"long_noidx",
275+
"salary"
276+
);
264277
}
265278

266279
public void testEscapedStar() {
@@ -293,9 +306,22 @@ public void testRenameBacktickPlusPattern() {
293306
}
294307

295308
public void testNoProjection() {
296-
assertProjection("""
297-
from test
298-
""", "_meta_field", "emp_no", "first_name", "gender", "job", "job.raw", "languages", "last_name", "long_noidx", "salary");
309+
assertProjection(
310+
"""
311+
from test
312+
""",
313+
"_meta_field",
314+
"emp_no",
315+
"first_name",
316+
"gender",
317+
"hire_date",
318+
"job",
319+
"job.raw",
320+
"languages",
321+
"last_name",
322+
"long_noidx",
323+
"salary"
324+
);
299325
assertProjectionTypes(
300326
"""
301327
from test
@@ -304,6 +330,7 @@ public void testNoProjection() {
304330
DataType.INTEGER,
305331
DataType.KEYWORD,
306332
DataType.TEXT,
333+
DataType.DATETIME,
307334
DataType.TEXT,
308335
DataType.KEYWORD,
309336
DataType.INTEGER,
@@ -325,18 +352,57 @@ public void testDuplicateProjections() {
325352
}
326353

327354
public void testProjectWildcard() {
328-
assertProjection("""
329-
from test
330-
| keep first_name, *, last_name
331-
""", "first_name", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary", "last_name");
332-
assertProjection("""
333-
from test
334-
| keep first_name, last_name, *
335-
""", "first_name", "last_name", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary");
336-
assertProjection("""
337-
from test
338-
| keep *, first_name, last_name
339-
""", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary", "first_name", "last_name");
355+
assertProjection(
356+
"""
357+
from test
358+
| keep first_name, *, last_name
359+
""",
360+
"first_name",
361+
"_meta_field",
362+
"emp_no",
363+
"gender",
364+
"hire_date",
365+
"job",
366+
"job.raw",
367+
"languages",
368+
"long_noidx",
369+
"salary",
370+
"last_name"
371+
);
372+
assertProjection(
373+
"""
374+
from test
375+
| keep first_name, last_name, *
376+
""",
377+
"first_name",
378+
"last_name",
379+
"_meta_field",
380+
"emp_no",
381+
"gender",
382+
"hire_date",
383+
"job",
384+
"job.raw",
385+
"languages",
386+
"long_noidx",
387+
"salary"
388+
);
389+
assertProjection(
390+
"""
391+
from test
392+
| keep *, first_name, last_name
393+
""",
394+
"_meta_field",
395+
"emp_no",
396+
"gender",
397+
"hire_date",
398+
"job",
399+
"job.raw",
400+
"languages",
401+
"long_noidx",
402+
"salary",
403+
"first_name",
404+
"last_name"
405+
);
340406

341407
var e = expectThrows(ParsingException.class, () -> analyze("""
342408
from test
@@ -359,22 +425,74 @@ public void testProjectMixedWildcard() {
359425
from test
360426
| keep *ob*, first_name, *name, first*
361427
""", "job", "job.raw", "first_name", "last_name");
362-
assertProjection("""
363-
from test
364-
| keep first_name, *, *name
365-
""", "first_name", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary", "last_name");
366-
assertProjection("""
367-
from test
368-
| keep first*, *, last_name, first_name
369-
""", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary", "last_name", "first_name");
370-
assertProjection("""
371-
from test
372-
| keep first*, *, last_name, fir*
373-
""", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary", "last_name", "first_name");
374-
assertProjection("""
375-
from test
376-
| keep *, job*
377-
""", "_meta_field", "emp_no", "first_name", "gender", "languages", "last_name", "long_noidx", "salary", "job", "job.raw");
428+
assertProjection(
429+
"""
430+
from test
431+
| keep first_name, *, *name
432+
""",
433+
"first_name",
434+
"_meta_field",
435+
"emp_no",
436+
"gender",
437+
"hire_date",
438+
"job",
439+
"job.raw",
440+
"languages",
441+
"long_noidx",
442+
"salary",
443+
"last_name"
444+
);
445+
assertProjection(
446+
"""
447+
from test
448+
| keep first*, *, last_name, first_name
449+
""",
450+
"_meta_field",
451+
"emp_no",
452+
"gender",
453+
"hire_date",
454+
"job",
455+
"job.raw",
456+
"languages",
457+
"long_noidx",
458+
"salary",
459+
"last_name",
460+
"first_name"
461+
);
462+
assertProjection(
463+
"""
464+
from test
465+
| keep first*, *, last_name, fir*
466+
""",
467+
"_meta_field",
468+
"emp_no",
469+
"gender",
470+
"hire_date",
471+
"job",
472+
"job.raw",
473+
"languages",
474+
"long_noidx",
475+
"salary",
476+
"last_name",
477+
"first_name"
478+
);
479+
assertProjection(
480+
"""
481+
from test
482+
| keep *, job*
483+
""",
484+
"_meta_field",
485+
"emp_no",
486+
"first_name",
487+
"gender",
488+
"hire_date",
489+
"languages",
490+
"last_name",
491+
"long_noidx",
492+
"salary",
493+
"job",
494+
"job.raw"
495+
);
378496
}
379497

380498
public void testProjectThenDropName() {
@@ -406,21 +524,34 @@ public void testProjectDropPattern() {
406524
from test
407525
| keep *
408526
| drop *_name
409-
""", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary");
527+
""", "_meta_field", "emp_no", "gender", "hire_date", "job", "job.raw", "languages", "long_noidx", "salary");
410528
}
411529

412530
public void testProjectDropNoStarPattern() {
413531
assertProjection("""
414532
from test
415533
| drop *_name
416-
""", "_meta_field", "emp_no", "gender", "job", "job.raw", "languages", "long_noidx", "salary");
534+
""", "_meta_field", "emp_no", "gender", "hire_date", "job", "job.raw", "languages", "long_noidx", "salary");
417535
}
418536

419537
public void testProjectOrderPatternWithRest() {
420-
assertProjection("""
421-
from test
422-
| keep *name, *, emp_no
423-
""", "first_name", "last_name", "_meta_field", "gender", "job", "job.raw", "languages", "long_noidx", "salary", "emp_no");
538+
assertProjection(
539+
"""
540+
from test
541+
| keep *name, *, emp_no
542+
""",
543+
"first_name",
544+
"last_name",
545+
"_meta_field",
546+
"gender",
547+
"hire_date",
548+
"job",
549+
"job.raw",
550+
"languages",
551+
"long_noidx",
552+
"salary",
553+
"emp_no"
554+
);
424555
}
425556

426557
public void testProjectDropPatternAndKeepOthers() {
@@ -559,7 +690,7 @@ public void testDropPatternUnsupportedFields() {
559690
assertProjection("""
560691
from test
561692
| drop *ala*
562-
""", "_meta_field", "emp_no", "first_name", "gender", "job", "job.raw", "languages", "last_name", "long_noidx");
693+
""", "_meta_field", "emp_no", "first_name", "gender", "hire_date", "job", "job.raw", "languages", "last_name", "long_noidx");
563694
}
564695

565696
public void testDropUnsupportedPattern() {
@@ -629,7 +760,7 @@ public void testRenameReuseAlias() {
629760
assertProjection("""
630761
from test
631762
| rename emp_no as e, first_name as e
632-
""", "_meta_field", "e", "gender", "job", "job.raw", "languages", "last_name", "long_noidx", "salary");
763+
""", "_meta_field", "e", "gender", "hire_date", "job", "job.raw", "languages", "last_name", "long_noidx", "salary");
633764
}
634765

635766
public void testRenameUnsupportedSubFieldAndResolved() {
@@ -1942,6 +2073,7 @@ public void testLookup() {
19422073
.item(startsWith("emp_no{f}"))
19432074
.item(startsWith("first_name{f}"))
19442075
.item(startsWith("gender{f}"))
2076+
.item(startsWith("hire_date{f}"))
19452077
.item(startsWith("job{f}"))
19462078
.item(startsWith("job.raw{f}"))
19472079
/*

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalLogicalPlanOptimizerTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ public void testMissingFieldInFilterNoProjection() {
372372
"emp_no",
373373
"first_name",
374374
"gender",
375+
"hire_date",
375376
"job",
376377
"job.raw",
377378
"languages",

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/LocalPhysicalPlanOptimizerTests.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,23 +1323,35 @@ public void testMissingFieldsDoNotGetExtracted() {
13231323
var projections = project.projections();
13241324
assertThat(
13251325
Expressions.names(projections),
1326-
contains("_meta_field", "emp_no", "first_name", "gender", "job", "job.raw", "languages", "last_name", "long_noidx", "salary")
1326+
contains(
1327+
"_meta_field",
1328+
"emp_no",
1329+
"first_name",
1330+
"gender",
1331+
"hire_date",
1332+
"job",
1333+
"job.raw",
1334+
"languages",
1335+
"last_name",
1336+
"long_noidx",
1337+
"salary"
1338+
)
13271339
);
13281340
// emp_no
13291341
assertThat(projections.get(1), instanceOf(ReferenceAttribute.class));
13301342
// first_name
13311343
assertThat(projections.get(2), instanceOf(ReferenceAttribute.class));
13321344

13331345
// last_name --> first_name
1334-
var nullAlias = Alias.unwrap(projections.get(7));
1346+
var nullAlias = Alias.unwrap(projections.get(8));
13351347
assertThat(Expressions.name(nullAlias), is("first_name"));
13361348
// salary --> emp_no
1337-
nullAlias = Alias.unwrap(projections.get(9));
1349+
nullAlias = Alias.unwrap(projections.get(10));
13381350
assertThat(Expressions.name(nullAlias), is("emp_no"));
13391351
// check field extraction is skipped and that evaled fields are not extracted anymore
13401352
var field = as(project.child(), FieldExtractExec.class);
13411353
var fields = field.attributesToExtract();
1342-
assertThat(Expressions.names(fields), contains("_meta_field", "gender", "job", "job.raw", "languages", "long_noidx"));
1354+
assertThat(Expressions.names(fields), contains("_meta_field", "gender", "hire_date", "job", "job.raw", "languages", "long_noidx"));
13431355
}
13441356

13451357
/*

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/PhysicalPlanOptimizerTests.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,7 @@ public void testExtractorMultiEvalWithDifferentNames() {
611611
"emp_no",
612612
"first_name",
613613
"gender",
614+
"hire_date",
614615
"job",
615616
"job.raw",
616617
"languages",
@@ -652,6 +653,7 @@ public void testExtractorMultiEvalWithSameName() {
652653
"emp_no",
653654
"first_name",
654655
"gender",
656+
"hire_date",
655657
"job",
656658
"job.raw",
657659
"languages",
@@ -1172,7 +1174,19 @@ public void testPushLimitAndFilterToSource() {
11721174

11731175
assertThat(
11741176
names(extract.attributesToExtract()),
1175-
contains("_meta_field", "emp_no", "first_name", "gender", "job", "job.raw", "languages", "last_name", "long_noidx", "salary")
1177+
contains(
1178+
"_meta_field",
1179+
"emp_no",
1180+
"first_name",
1181+
"gender",
1182+
"hire_date",
1183+
"job",
1184+
"job.raw",
1185+
"languages",
1186+
"last_name",
1187+
"long_noidx",
1188+
"salary"
1189+
)
11761190
);
11771191

11781192
var source = source(extract.child());

0 commit comments

Comments
 (0)