Skip to content

Commit 1f572ad

Browse files
Add index name validation rule for empty index names (#119960) (#120060)
* Add index name validation rule for empty index names * Created negative tests for ES|QL index names with only exclusion character * Added test for `*-`
1 parent 70b3bb5 commit 1f572ad

File tree

4 files changed

+15
-2
lines changed

4 files changed

+15
-2
lines changed

server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ public SystemIndices getSystemIndices() {
225225
* Validate the name for an index or alias against some static rules.
226226
*/
227227
public static void validateIndexOrAliasName(String index, BiFunction<String, String, ? extends RuntimeException> exceptionCtor) {
228+
if (index == null || index.isEmpty()) {
229+
throw exceptionCtor.apply(index, "must not be empty");
230+
}
228231
if (Strings.validFileName(index) == false) {
229232
throw exceptionCtor.apply(index, "must not contain the following characters " + Strings.INVALID_FILENAME_CHARS);
230233
}

server/src/test/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexServiceTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,9 @@ public void testValidateIndexName() throws Exception {
560560
validateIndexName(checkerService, "..", "must not be '.' or '..'");
561561

562562
validateIndexName(checkerService, "foo:bar", "must not contain ':'");
563+
564+
validateIndexName(checkerService, "", "must not be empty");
565+
validateIndexName(checkerService, null, "must not be empty");
563566
}));
564567
}
565568

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/AbstractStatementParserTests.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,12 @@ void expectInvalidIndexNameErrorWithLineNumber(String query, String indexString,
151151
expectInvalidIndexNameErrorWithLineNumber(query, "\"" + indexString + "\"", lineNumber, indexString);
152152
}
153153

154-
void expectInvalidIndexNameErrorWithLineNumber(String query, String indexString, String lineNumber, String error) {
155-
expectError(LoggerMessageFormat.format(null, query, indexString), lineNumber + "Invalid index name [" + error);
154+
void expectInvalidIndexNameErrorWithLineNumber(String query, String indexString, String lineNumber, String name) {
155+
expectError(LoggerMessageFormat.format(null, query, indexString), lineNumber + "Invalid index name [" + name);
156+
}
157+
158+
void expectInvalidIndexNameErrorWithLineNumber(String query, String indexString, String lineNumber, String name, String error) {
159+
expectError(LoggerMessageFormat.format(null, query, indexString), lineNumber + "Invalid index name [" + name + "], " + error);
156160
}
157161

158162
void expectDateMathErrorWithLineNumber(String query, String arg, String lineNumber, String error) {

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/parser/StatementParserTests.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,9 @@ public void testInvalidCharacterInIndexPattern() {
577577
expectInvalidIndexNameErrorWithLineNumber(command, "indexpattern, --indexpattern", lineNumber, "-indexpattern");
578578
expectInvalidIndexNameErrorWithLineNumber(command, "indexpattern, \"--indexpattern\"", lineNumber, "-indexpattern");
579579
expectInvalidIndexNameErrorWithLineNumber(command, "\"indexpattern, --indexpattern\"", commands.get(command), "-indexpattern");
580+
expectInvalidIndexNameErrorWithLineNumber(command, "\"- , -\"", commands.get(command), "", "must not be empty");
581+
expectInvalidIndexNameErrorWithLineNumber(command, "\"indexpattern,-\"", commands.get(command), "", "must not be empty");
582+
clustersAndIndices(command, "indexpattern", "*-");
580583
clustersAndIndices(command, "indexpattern", "-indexpattern");
581584
}
582585

0 commit comments

Comments
 (0)