|
12 | 12 | import org.elasticsearch.action.fieldcaps.FieldCapabilitiesResponse; |
13 | 13 | import org.elasticsearch.action.fieldcaps.IndexFieldCapabilities; |
14 | 14 | import org.elasticsearch.action.fieldcaps.IndexFieldCapabilitiesBuilder; |
| 15 | +import org.elasticsearch.common.hash.MessageDigests; |
15 | 16 | import org.elasticsearch.common.lucene.BytesRefs; |
16 | 17 | import org.elasticsearch.common.settings.Settings; |
17 | 18 | import org.elasticsearch.index.IndexMode; |
@@ -3101,6 +3102,27 @@ public void testResolveInsist_multiIndexFieldPartiallyExistsWithMultiTypesNoKeyw |
3101 | 3102 | assertThat(attr.unresolvedMessage(), is(expected)); |
3102 | 3103 | } |
3103 | 3104 |
|
| 3105 | + public void testResolveInsist_multiIndexSameMapping_fieldIsMapped() { |
| 3106 | + assumeTrue("Requires UNMAPPED FIELDS", EsqlCapabilities.Cap.UNMAPPED_FIELDS.isEnabled()); |
| 3107 | + |
| 3108 | + IndexResolution resolution = IndexResolver.mergedMappings( |
| 3109 | + "foo, bar", |
| 3110 | + new FieldCapabilitiesResponse( |
| 3111 | + List.of( |
| 3112 | + fieldCapabilitiesIndexResponse("foo", messageResponseMap("long")), |
| 3113 | + fieldCapabilitiesIndexResponse("bar", messageResponseMap("long")) |
| 3114 | + ), |
| 3115 | + List.of() |
| 3116 | + ) |
| 3117 | + ); |
| 3118 | + var plan = analyze("FROM foo, bar | INSIST_🐔 message", analyzer(resolution, TEST_VERIFIER)); |
| 3119 | + var limit = as(plan, Limit.class); |
| 3120 | + var insist = as(limit.child(), Insist.class); |
| 3121 | + var attribute = (FieldAttribute) EsqlTestUtils.singleValue(insist.output()); |
| 3122 | + assertThat(attribute.name(), is("message")); |
| 3123 | + assertThat(attribute.dataType(), is(DataType.LONG)); |
| 3124 | + } |
| 3125 | + |
3104 | 3126 | public void testResolveInsist_multiIndexFieldPartiallyExistsWithMultiTypesWithKeyword_createsAnInvalidMappedField() { |
3105 | 3127 | assumeTrue("Requires UNMAPPED FIELDS", EsqlCapabilities.Cap.UNMAPPED_FIELDS.isEnabled()); |
3106 | 3128 |
|
@@ -3531,7 +3553,8 @@ private static FieldCapabilitiesIndexResponse fieldCapabilitiesIndexResponse( |
3531 | 3553 | String indexName, |
3532 | 3554 | Map<String, IndexFieldCapabilities> fields |
3533 | 3555 | ) { |
3534 | | - return new FieldCapabilitiesIndexResponse(indexName, indexName, fields, false, IndexMode.STANDARD); |
| 3556 | + String indexMappingHash = new String(MessageDigests.sha256().digest(fields.toString().getBytes())); |
| 3557 | + return new FieldCapabilitiesIndexResponse(indexName, indexMappingHash, fields, false, IndexMode.STANDARD); |
3535 | 3558 | } |
3536 | 3559 |
|
3537 | 3560 | private static Map<String, IndexFieldCapabilities> messageResponseMap(String date) { |
|
0 commit comments