From 9a1dd84a2e51889fbf0601df4a4bb01fe7c64212 Mon Sep 17 00:00:00 2001 From: ishag4 Date: Tue, 16 Sep 2025 01:09:24 +0530 Subject: [PATCH 1/3] Fix for Bug in DerivedFieldScript should support emitting Float type object: #19271 Signed-off-by: ishag4 --- .../painless/DerivedFieldScriptTests.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java b/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java index 2340e5b238ebb..70516d4c94666 100644 --- a/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java +++ b/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java @@ -82,6 +82,27 @@ private DerivedFieldScript.LeafFactory compile(String expression, SearchLookup l return factory.newFactory(Collections.emptyMap(), lookup); } + public void testEmittingFloatField() throws IOException { + SearchLookup lookup = mock(SearchLookup.class); + + // Mock LeafReaderContext + MemoryIndex index = new MemoryIndex(); + LeafReaderContext leafReaderContext = index.createSearcher().getIndexReader().leaves().get(0); + + LeafSearchLookup leafSearchLookup = mock(LeafSearchLookup.class); + when(lookup.getLeafSearchLookup(leafReaderContext)).thenReturn(leafSearchLookup); + + // Script that emits a float value + DerivedFieldScript script = compile("emit(3.14f)", lookup).newInstance(leafReaderContext); + script.setDocument(1); + script.execute(); + + List result = script.getEmittedValues(); + assertEquals(1, result.size()); + assertEquals(3.14f, result.get(0)); + } + + public void testEmittingDoubleField() throws IOException { // Mocking field value to be returned NumberFieldType fieldType = new NumberFieldType("test_double_field", NumberType.DOUBLE); From 3a5220b5cefac9b3ec3df33c6382e5a15be3c37c Mon Sep 17 00:00:00 2001 From: ishag4 Date: Tue, 16 Sep 2025 01:09:37 +0530 Subject: [PATCH 2/3] Fix for Bug in DerivedFieldScript should support emitting Float type object: #19271 Signed-off-by: ishag4 --- .../src/main/java/org/opensearch/script/DerivedFieldScript.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/src/main/java/org/opensearch/script/DerivedFieldScript.java b/server/src/main/java/org/opensearch/script/DerivedFieldScript.java index 5329e8e6a1f30..563c60b58da72 100644 --- a/server/src/main/java/org/opensearch/script/DerivedFieldScript.java +++ b/server/src/main/java/org/opensearch/script/DerivedFieldScript.java @@ -119,6 +119,8 @@ private int getObjectByteSize(Object obj) { return Long.BYTES; } else if (obj instanceof Double) { return Double.BYTES; + }else if (obj instanceof Float) { + return Float.BYTES; } else if (obj instanceof Boolean) { return Byte.BYTES; // Assuming 1 byte for boolean } else if (obj instanceof Tuple) { From 5198dd49b0698bfe1ce4bcb4c85d8cb175fbd331 Mon Sep 17 00:00:00 2001 From: Isha Gupta Date: Tue, 16 Sep 2025 01:20:57 +0530 Subject: [PATCH 3/3] Fix for bug in DerivedFieldScript: support emitting Float type object #19271 Signed-off-by: Isha Gupta --- .../java/org/opensearch/painless/DerivedFieldScriptTests.java | 1 - .../src/main/java/org/opensearch/script/DerivedFieldScript.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java b/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java index 70516d4c94666..b427f2ab55a48 100644 --- a/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java +++ b/modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java @@ -102,7 +102,6 @@ public void testEmittingFloatField() throws IOException { assertEquals(3.14f, result.get(0)); } - public void testEmittingDoubleField() throws IOException { // Mocking field value to be returned NumberFieldType fieldType = new NumberFieldType("test_double_field", NumberType.DOUBLE); diff --git a/server/src/main/java/org/opensearch/script/DerivedFieldScript.java b/server/src/main/java/org/opensearch/script/DerivedFieldScript.java index 563c60b58da72..e4ea1e06e5ddc 100644 --- a/server/src/main/java/org/opensearch/script/DerivedFieldScript.java +++ b/server/src/main/java/org/opensearch/script/DerivedFieldScript.java @@ -119,7 +119,7 @@ private int getObjectByteSize(Object obj) { return Long.BYTES; } else if (obj instanceof Double) { return Double.BYTES; - }else if (obj instanceof Float) { + } else if (obj instanceof Float) { return Float.BYTES; } else if (obj instanceof Boolean) { return Byte.BYTES; // Assuming 1 byte for boolean