Skip to content

Commit 005c48e

Browse files
committed
Fixed mapping
1 parent 412ba1d commit 005c48e

File tree

2 files changed

+100
-29
lines changed

2 files changed

+100
-29
lines changed

integ-test/src/test/java/org/opensearch/sql/sql/TextTypeIT.java

Lines changed: 99 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.junit.Test;
99
import org.opensearch.sql.legacy.SQLIntegTestCase;
1010

11+
import java.io.IOException;
1112

1213
import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_TEXTKEYWORD;
1314
import static org.opensearch.sql.util.MatcherUtils.schema;
@@ -20,6 +21,8 @@ public class TextTypeIT extends SQLIntegTestCase {
2021
public void init() throws Exception {
2122
super.init();
2223
loadIndex(Index.TEXTKEYWORD);
24+
loadIndex(Index.CALCS);
25+
2326
}
2427

2528
// Select
@@ -70,134 +73,202 @@ public void aggregateOnTextAndFieldDataNoFields() {
7073

7174
@Test
7275
public void whereLikeKeyword() {
73-
executeJdbcRequest(String.format("select * from %s WHERE typeKeyword LIKE \\\"key*\\\"", TEST_INDEX_TEXTKEYWORD));
76+
var result = executeJdbcRequest(String.format("select typeKeyword from %s WHERE typeKeyword LIKE \\\"key*\\\"", TEST_INDEX_TEXTKEYWORD));
77+
verifySchema(result,
78+
schema("typeKeyword", null, "keyword"));
7479
}
7580

7681
@Test
7782
public void whereLikeText() {
78-
executeJdbcRequest(String.format("select * from %s WHERE typeText LIKE \\\"text*\\\"", TEST_INDEX_TEXTKEYWORD));
83+
var result = executeJdbcRequest(String.format("select typeText from %s WHERE typeText LIKE \\\"text*\\\"", TEST_INDEX_TEXTKEYWORD));
84+
verifySchema(result,
85+
schema("typeText", null, "text"));
7986
}
8087

8188
@Test
8289
public void whereLikeKeywordFieldNoFieldData() {
83-
executeJdbcRequest(String.format("select * from %s WHERE typeKeywordFieldNoFieldData LIKE \\\"keyword*\\\"", TEST_INDEX_TEXTKEYWORD));
90+
var result = executeJdbcRequest(String.format("select typeKeywordFieldNoFieldData from %s WHERE typeKeywordFieldNoFieldData LIKE \\\"keyword*\\\"", TEST_INDEX_TEXTKEYWORD));
91+
verifySchema(result,
92+
schema("typeKeywordFieldNoFieldData", null, "text"));
8493
}
8594

8695
@Test
8796
public void whereLikeTextFieldData() {
88-
executeJdbcRequest(String.format("select * from %s WHERE typeTextFieldData LIKE \\\"keyFD*\\\"", TEST_INDEX_TEXTKEYWORD));
97+
var result = executeJdbcRequest(String.format("select typeTextFieldData from %s WHERE typeTextFieldData LIKE \\\"keyFD*\\\"", TEST_INDEX_TEXTKEYWORD));
98+
verifySchema(result,
99+
schema("typeTextFieldData", null, "text"));
89100
}
90101

91102
@Test
92103
public void whereLiketextDataFieldNoFields() {
93-
executeJdbcRequest(String.format("select * from %s WHERE textDataFieldNoFields LIKE \\\"textFDNF*\\\"", TEST_INDEX_TEXTKEYWORD));
104+
var result = executeJdbcRequest(String.format("select textDataFieldNoFields from %s WHERE textDataFieldNoFields LIKE \\\"textFDNF*\\\"", TEST_INDEX_TEXTKEYWORD));
105+
verifySchema(result,
106+
schema("textDataFieldNoFields", null, "text"));
94107
}
95108

96109
// Wildcard
97110

98111
@Test
99112
public void whereWildcardKeyword() {
100-
executeJdbcRequest(String.format("select * from %s WHERE wildcard_query(typeKeyword, \\\"key*\\\")", TEST_INDEX_TEXTKEYWORD));
113+
var result = executeJdbcRequest(String.format("select typeKeyword from %s WHERE wildcard_query(typeKeyword, \\\"key*\\\")", TEST_INDEX_TEXTKEYWORD));
114+
verifySchema(result,
115+
schema("typeKeyword", null, "keyword"));
101116
}
102117

103118
@Test
104119
public void whereWildcardText() {
105-
executeJdbcRequest(String.format("select * from %s WHERE wildcard_query(\\\"typeText\\\", \\\"text*\\\")", TEST_INDEX_TEXTKEYWORD));
120+
var result = executeJdbcRequest(String.format("select typeText from %s WHERE wildcard_query(\\\"typeText\\\", \\\"text*\\\")", TEST_INDEX_TEXTKEYWORD));
121+
verifySchema(result,
122+
schema("typeText", null, "text"));
106123
}
107124

108125
@Test
109126
public void whereWildcardKeywordFieldNoFieldData() {
110-
executeJdbcRequest(String.format("select * from %s WHERE wildcard_query(\\\"typeKeywordFieldNoFieldData\\\", \\\"keyword*\\\")", TEST_INDEX_TEXTKEYWORD));
127+
var result = executeJdbcRequest(String.format("select typeKeywordFieldNoFieldData from %s WHERE wildcard_query(\\\"typeKeywordFieldNoFieldData\\\", \\\"keyword*\\\")", TEST_INDEX_TEXTKEYWORD));
128+
verifySchema(result,
129+
schema("typeKeywordFieldNoFieldData", null, "text"));
111130
}
112131

113132
@Test
114133
public void whereWildcardTextFieldData() {
115-
executeJdbcRequest(String.format("select * from %s WHERE wildcard_query(\\\"typeTextFieldData\\\", \\\"keyFD*\\\")", TEST_INDEX_TEXTKEYWORD));
134+
var result = executeJdbcRequest(String.format("select typeTextFieldData from %s WHERE wildcard_query(\\\"typeTextFieldData\\\", \\\"keyFD*\\\")", TEST_INDEX_TEXTKEYWORD));
135+
verifySchema(result,
136+
schema("typeTextFieldData", null, "text"));
116137
}
117138

118139
@Test
119140
public void whereWildcardtextDataFieldNoFields() {
120-
executeJdbcRequest(String.format("select * from %s WHERE wildcard_query(\\\"textDataFieldNoFields\\\", \\\"textFDNF*\\\")", TEST_INDEX_TEXTKEYWORD));
141+
var result = executeJdbcRequest(String.format("select textDataFieldNoFields from %s WHERE wildcard_query(\\\"textDataFieldNoFields\\\", \\\"textFDNF*\\\")", TEST_INDEX_TEXTKEYWORD));
142+
verifySchema(result,
143+
schema("textDataFieldNoFields", null, "text"));
121144
}
122145

123146
// Locate
124147

125148
@Test
126149
public void selectLocateKeyword() {
127-
executeJdbcRequest(String.format("select typeKeyword LIKE \\\"key*\\\" from %s", TEST_INDEX_TEXTKEYWORD));
150+
var result = executeJdbcRequest(String.format("select locate(\\\"key*\\\", typeKeyword) from %s", TEST_INDEX_TEXTKEYWORD));
151+
verifySchema(result,
152+
schema("locate(\\\"key*\\\", typeKeyword)", null, "integer"));
128153
}
129154

130155
@Test
131156
public void selectLocateText() {
132-
executeJdbcRequest(String.format("select typeText LIKE \\\"text*\\\" from %s", TEST_INDEX_TEXTKEYWORD));
157+
var result = executeJdbcRequest(String.format("select locate(\\\"text*\\\", typeText) from %s", TEST_INDEX_TEXTKEYWORD));
158+
verifySchema(result,
159+
schema("locate(\\\"text*\\\", typeText)", null, "integer"));
133160
}
134161

135162
@Test
136163
public void selectLocateTextKeywordFieldNoFieldData() {
137-
executeJdbcRequest(String.format("select typeKeywordFieldNoFieldData LIKE \\\"keyword*\\\" from %s", TEST_INDEX_TEXTKEYWORD));
164+
var result = executeJdbcRequest(String.format("select locate(\\\"keyword*\\\", typeKeywordFieldNoFieldData) from %s", TEST_INDEX_TEXTKEYWORD));
165+
verifySchema(result,
166+
schema("locate(\\\"keyword*\\\", typeKeywordFieldNoFieldData)", null, "integer"));
138167
}
139168

140169
@Test
141170
public void selectLocateTypeTextFieldData() {
142-
executeJdbcRequest(String.format("select typeTextFieldData LIKE \\\"keyFD*\\\" from %s", TEST_INDEX_TEXTKEYWORD));
171+
var result = executeJdbcRequest(String.format("select locate(\\\"keyFD*\\\", typeTextFieldData) from %s", TEST_INDEX_TEXTKEYWORD));
172+
verifySchema(result,
173+
schema("locate(\\\"keyFD*\\\", typeTextFieldData)", null, "integer"));
143174
}
144175

145176
@Test
146177
public void selectLocateTextDataFieldNoFields() {
147-
executeJdbcRequest(String.format("select textDataFieldNoFields LIKE \\\"textFDNF*\\\" from %s", TEST_INDEX_TEXTKEYWORD));
178+
var result = executeJdbcRequest(String.format("select locate(\\\"textFDNF*\\\", textDataFieldNoFields) from %s", TEST_INDEX_TEXTKEYWORD));
179+
verifySchema(result,
180+
schema("locate(\\\"textFDNF*\\\", textDataFieldNoFields)", null, "integer"));
148181
}
149182

150183
// Position
151184

152185
@Test
153186
public void selectPositionKeyword() {
154-
executeJdbcRequest(String.format("select POSITION(key IN typeKeyword) from %s", TEST_INDEX_TEXTKEYWORD));
187+
var result = executeJdbcRequest(String.format("select POSITION(\\\"key\\\" IN typeKeyword) from %s", TEST_INDEX_TEXTKEYWORD));
188+
verifySchema(result,
189+
schema("LOCATE('key', typeKeyword)", null, "double"));
155190
}
156191

157192
@Test
158-
public void selectPositionText() {
159-
executeJdbcRequest(String.format("select POSITION(\\\"text\\\" IN typeText) from %s", TEST_INDEX_TEXTKEYWORD));
193+
public void selectPositionText() throws IOException {
194+
var result = executeQuery(String.format("select POSITION(\\\"text\\\" IN typeText) from %s", TEST_INDEX_TEXTKEYWORD));
195+
verifySchema(result,
196+
schema("typeText", null, "double"));
197+
// //assertFalse(result.has("error"));
198+
// if(result.has("error")) {
199+
// fail(result.optJSONObject("error").getString("reason") + "\n" + result.optJSONObject("error").getString("details"));
200+
// } else {
201+
// assert(true);
202+
// }
160203
}
161204

162205
@Test
163206
public void selectPositionTextKeywordFieldNoFieldData() {
164-
executeJdbcRequest(String.format("select POSITION(keyword IN typeKeywordFieldNoFieldData) from %s", TEST_INDEX_TEXTKEYWORD));
207+
var result = executeJdbcRequest(String.format("select POSITION(\\\"keyword\\\" IN typeKeywordFieldNoFieldData) from %s", TEST_INDEX_TEXTKEYWORD));
208+
verifySchema(result,
209+
schema("LOCATE('keyword', typeKeywordFieldNoFieldData)", null, "double"));
165210
}
166211

167212
@Test
168-
public void selectPositionTypeTextFieldData() {
169-
executeJdbcRequest(String.format("select POSITION(\\\"keyFD\\\" IN typeTextFieldData) from %s", TEST_INDEX_TEXTKEYWORD));
213+
public void selectPositionTypeTextFieldData() throws IOException {
214+
var result = executeQuery(String.format("select POSITION(\\\"keyFD\\\" IN typeTextFieldData) from %s", TEST_INDEX_TEXTKEYWORD));
215+
verifySchema(result,
216+
schema("LOCATE('keyFD', typeTextFieldData)", null, "double"));
170217
}
171218

172219
@Test
173220
public void selectPositionTextDataFieldNoFields() {
174-
executeJdbcRequest(String.format("select POSITION(textFDNF IN textDataFieldNoFields) from %s", TEST_INDEX_TEXTKEYWORD));
221+
var result = executeJdbcRequest(String.format("select POSITION(\\\"textFDNF\\\" IN textDataFieldNoFields) from %s", TEST_INDEX_TEXTKEYWORD));
222+
verifySchema(result,
223+
schema("LOCATE('textFDNF', textDataFieldNoFields)", null, "double"));
175224
}
176225

177226
// Substring
178227

179228
@Test
180229
public void selectSubstringKeyword() {
181-
executeJdbcRequest(String.format("select SUBSTRING(typeKeyword, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
230+
var result = executeJdbcRequest(String.format("select SUBSTRING(typeKeyword, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
231+
verifySchema(result,
232+
schema("SUBSTRING(typeKeyword, 1, 1)", null, "keyword"));
182233
}
183234

184235
@Test
185236
public void selectSubstringText() {
186-
executeJdbcRequest(String.format("select SUBSTRING(typeText, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
237+
var result = executeJdbcRequest(String.format("select SUBSTRING(typeText, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
238+
verifySchema(result,
239+
schema("SUBSTRING(typeText, 1, 1)", null, "keyword"));
187240
}
188241

189242
@Test
190243
public void selectSubstringTextKeywordFieldNoFieldData() {
191-
executeJdbcRequest(String.format("select SUBSTRING(typeKeywordFieldNoFieldData, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
244+
var result = executeJdbcRequest(String.format("select SUBSTRING(typeKeywordFieldNoFieldData, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
245+
verifySchema(result,
246+
schema("SUBSTRING(typeKeywordFieldNoFieldData, 1, 1)", null, "keyword"));
192247
}
193248

194249
@Test
195250
public void selectSubstringTypeTextFieldData() {
196-
executeJdbcRequest(String.format("select SUBSTRING(typeTextFieldData, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
251+
var result = executeJdbcRequest(String.format("select SUBSTRING(typeTextFieldData, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
252+
verifySchema(result,
253+
schema("SUBSTRING(typeTextFieldData, 1, 1)", null, "keyword"));
197254
}
198255

199256
@Test
200257
public void selectSubstringTextDataFieldNoFields() {
201-
executeJdbcRequest(String.format("select SUBSTRING(textDataFieldNoFields, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
202-
}
258+
var result = executeJdbcRequest(String.format("select SUBSTRING(textDataFieldNoFields, 1, 1) from %s", TEST_INDEX_TEXTKEYWORD));
259+
verifySchema(result,
260+
schema("SUBSTRING(textDataFieldNoFields, 1, 1)", null, "keyword"));
261+
}
262+
263+
// protected JSONObject executeQuery(String query) throws IOException {
264+
// Request request = new Request("POST", QUERY_API_ENDPOINT);
265+
// request.setJsonEntity(String.format(Locale.ROOT, "{\n" + " \"query\": \"%s\"\n" + "}", query));
266+
//
267+
// RequestOptions.Builder restOptionsBuilder = RequestOptions.DEFAULT.toBuilder();
268+
// restOptionsBuilder.addHeader("Content-Type", "application/json");
269+
// request.setOptions(restOptionsBuilder);
270+
//
271+
// Response response = client().performRequest(request);
272+
// return new JSONObject(getResponseBody(response));
273+
// }
203274
}

integ-test/src/test/resources/indexDefinitions/calcs_index_mappings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"type" : "double"
2121
},
2222
"str0" : {
23-
"type" : "keyword"
23+
"type" : "integer"
2424
},
2525
"str1" : {
2626
"type" : "keyword"

0 commit comments

Comments
 (0)