Skip to content

Commit d6e3355

Browse files
committed
New Changes to handle bug:#866
Signed-off-by: vamsi-amazon <[email protected]>
1 parent bc6540b commit d6e3355

File tree

4 files changed

+81
-7
lines changed

4 files changed

+81
-7
lines changed

integ-test/src/test/java/org/opensearch/sql/ppl/StandaloneIT.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,57 @@ public void testSourceFieldQuery() throws IOException {
9898
actual);
9999
}
100100

101+
@Test
102+
public void testErrorsAcrossMultipleQueries() throws IOException {
103+
Request request1 = new Request("PUT", "/test.one/_doc/1?refresh=true");
104+
request1.setJsonEntity("{\"name\": \"hello\", \"age\": 20}");
105+
client().performRequest(request1);
106+
Request request2 = new Request("PUT", "/test.one/_doc/2?refresh=true");
107+
request2.setJsonEntity("{\"name\": \"world\", \"age\": 30}");
108+
client().performRequest(request2);
109+
110+
String actual = executeByStandaloneQueryEngine("source=test.one | fields name");
111+
assertEquals(
112+
"{\n"
113+
+ " \"schema\": [\n"
114+
+ " {\n"
115+
+ " \"name\": \"name\",\n"
116+
+ " \"type\": \"string\"\n"
117+
+ " }\n"
118+
+ " ],\n"
119+
+ " \"datarows\": [\n"
120+
+ " [\n"
121+
+ " \"hello\"\n"
122+
+ " ],\n"
123+
+ " [\n"
124+
+ " \"world\"\n"
125+
+ " ]\n"
126+
+ " ],\n"
127+
+ " \"total\": 2,\n"
128+
+ " \"size\": 2\n"
129+
+ "}",
130+
actual);
131+
132+
String actual2 = executeByStandaloneQueryEngine("source=test.one | where age=30 | fields name");
133+
assertEquals(
134+
"{\n"
135+
+ " \"schema\": [\n"
136+
+ " {\n"
137+
+ " \"name\": \"name\",\n"
138+
+ " \"type\": \"string\"\n"
139+
+ " }\n"
140+
+ " ],\n"
141+
+ " \"datarows\": [\n"
142+
+ " [\n"
143+
+ " \"world\"\n"
144+
+ " ]\n"
145+
+ " ],\n"
146+
+ " \"total\": 1,\n"
147+
+ " \"size\": 1\n"
148+
+ "}",
149+
actual2);
150+
}
151+
101152
private String executeByStandaloneQueryEngine(String query) {
102153
AtomicReference<String> actual = new AtomicReference<>();
103154
pplService.execute(

plugin/src/main/java/org/opensearch/sql/plugin/catalog/CatalogServiceImpl.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
import com.fasterxml.jackson.core.type.TypeReference;
99
import com.fasterxml.jackson.databind.DeserializationFeature;
1010
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import com.google.common.collect.ImmutableSet;
1112
import java.io.IOException;
1213
import java.io.InputStream;
1314
import java.net.URISyntaxException;
1415
import java.security.PrivilegedExceptionAction;
16+
import java.util.Collections;
1517
import java.util.HashMap;
1618
import java.util.HashSet;
1719
import java.util.List;
@@ -37,7 +39,7 @@ public class CatalogServiceImpl implements CatalogService {
3739

3840
private static final Logger LOG = LogManager.getLogger();
3941

40-
public static final String OPEN_SEARCH = "opensearch";
42+
public static StorageEngine defaultOpenSearchStorageEngine;
4143

4244
private Map<String, StorageEngine> storageEngineMap = new HashMap<>();
4345

@@ -80,21 +82,22 @@ public void loadConnectors(Settings settings) {
8082
@Override
8183
public StorageEngine getStorageEngine(String catalog) {
8284
if (catalog == null || !storageEngineMap.containsKey(catalog)) {
83-
return storageEngineMap.get(OPEN_SEARCH);
85+
return defaultOpenSearchStorageEngine;
8486
}
8587
return storageEngineMap.get(catalog);
8688
}
8789

8890
@Override
8991
public Set<String> getCatalogs() {
90-
return storageEngineMap.keySet()
91-
.stream().filter(catalog -> !catalog.equals(OPEN_SEARCH))
92-
.collect(Collectors.toSet());
92+
return Collections.unmodifiableSet(storageEngineMap.keySet());
9393
}
9494

9595
@Override
9696
public void registerOpenSearchStorageEngine(StorageEngine storageEngine) {
97-
storageEngineMap.put(OPEN_SEARCH, storageEngine);
97+
if(storageEngine == null) {
98+
throw new IllegalArgumentException("Default storage engine can't be null");
99+
}
100+
defaultOpenSearchStorageEngine = storageEngine;
98101
}
99102

100103
private <T> T doPrivileged(PrivilegedExceptionAction<T> action) {

plugin/src/test/java/org/opensearch/sql/plugin/catalog/CatalogServiceImplTest.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,21 @@
1515
import lombok.SneakyThrows;
1616
import org.junit.Assert;
1717
import org.junit.Test;
18+
import org.junit.runner.RunWith;
19+
import org.mockito.Mock;
20+
import org.mockito.junit.MockitoJUnitRunner;
1821
import org.opensearch.common.settings.MockSecureSettings;
1922
import org.opensearch.common.settings.Settings;
23+
import org.opensearch.sql.storage.StorageEngine;
2024

21-
25+
@RunWith(MockitoJUnitRunner.class)
2226
public class CatalogServiceImplTest {
2327

2428
public static final String CATALOG_SETTING_METADATA_KEY =
2529
"plugins.query.federation.catalog.config";
2630

31+
@Mock
32+
private StorageEngine storageEngine;
2733

2834
@SneakyThrows
2935
@Test
@@ -73,6 +79,19 @@ public void testLoadConnectorsWithMalformedJson() {
7379
() -> CatalogServiceImpl.getInstance().loadConnectors(settings));
7480
}
7581

82+
@SneakyThrows
83+
@Test
84+
public void testGetStorageEngineAfterGetCatalogs() {
85+
Settings settings = getCatalogSettings("empty_catalog.json");
86+
CatalogServiceImpl.getInstance().registerOpenSearchStorageEngine(storageEngine);
87+
CatalogServiceImpl.getInstance().loadConnectors(settings);
88+
Set<String> expected = new HashSet<>();
89+
Assert.assertEquals(expected, CatalogServiceImpl.getInstance().getCatalogs());
90+
Assert.assertEquals(storageEngine, CatalogServiceImpl.getInstance().getStorageEngine(null));
91+
Assert.assertEquals(expected, CatalogServiceImpl.getInstance().getCatalogs());
92+
Assert.assertEquals(storageEngine, CatalogServiceImpl.getInstance().getStorageEngine(null));
93+
}
94+
7695

7796
private Settings getCatalogSettings(String filename) throws URISyntaxException, IOException {
7897
MockSecureSettings mockSecureSettings = new MockSecureSettings();
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[]

0 commit comments

Comments
 (0)