Skip to content

Commit affbc2b

Browse files
ishag4Isha Gupta
authored andcommitted
Issue 19271: Fix DerivedFieldScript to support emitting Float type (opensearch-project#19303)
* Fix for Bug in DerivedFieldScript should support emitting Float type object: opensearch-project#19271 Signed-off-by: ishag4 <isha26701@gmail.com> * Fix for Bug in DerivedFieldScript should support emitting Float type object: opensearch-project#19271 Signed-off-by: ishag4 <isha26701@gmail.com> * Fix for bug in DerivedFieldScript: support emitting Float type object opensearch-project#19271 Signed-off-by: Isha Gupta <igupta24@apple.com> --------- Signed-off-by: ishag4 <isha26701@gmail.com> Signed-off-by: Isha Gupta <igupta24@apple.com> Co-authored-by: Isha Gupta <igupta24@apple.com>
1 parent 04a8908 commit affbc2b

2 files changed

Lines changed: 22 additions & 0 deletions

File tree

modules/lang-painless/src/test/java/org/opensearch/painless/DerivedFieldScriptTests.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,26 @@ private DerivedFieldScript.LeafFactory compile(String expression, SearchLookup l
8282
return factory.newFactory(Collections.emptyMap(), lookup);
8383
}
8484

85+
public void testEmittingFloatField() throws IOException {
86+
SearchLookup lookup = mock(SearchLookup.class);
87+
88+
// Mock LeafReaderContext
89+
MemoryIndex index = new MemoryIndex();
90+
LeafReaderContext leafReaderContext = index.createSearcher().getIndexReader().leaves().get(0);
91+
92+
LeafSearchLookup leafSearchLookup = mock(LeafSearchLookup.class);
93+
when(lookup.getLeafSearchLookup(leafReaderContext)).thenReturn(leafSearchLookup);
94+
95+
// Script that emits a float value
96+
DerivedFieldScript script = compile("emit(3.14f)", lookup).newInstance(leafReaderContext);
97+
script.setDocument(1);
98+
script.execute();
99+
100+
List<Object> result = script.getEmittedValues();
101+
assertEquals(1, result.size());
102+
assertEquals(3.14f, result.get(0));
103+
}
104+
85105
public void testEmittingDoubleField() throws IOException {
86106
// Mocking field value to be returned
87107
NumberFieldType fieldType = new NumberFieldType("test_double_field", NumberType.DOUBLE);

server/src/main/java/org/opensearch/script/DerivedFieldScript.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ private int getObjectByteSize(Object obj) {
119119
return Long.BYTES;
120120
} else if (obj instanceof Double) {
121121
return Double.BYTES;
122+
} else if (obj instanceof Float) {
123+
return Float.BYTES;
122124
} else if (obj instanceof Boolean) {
123125
return Byte.BYTES; // Assuming 1 byte for boolean
124126
} else if (obj instanceof Tuple) {

0 commit comments

Comments
 (0)