diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSchemaRestletResource.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSchemaRestletResource.java index d2f997cf61ca..8c85f6d3550e 100644 --- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSchemaRestletResource.java +++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotSchemaRestletResource.java @@ -392,6 +392,9 @@ private void validateSchemaName(Schema schema) { throw new ControllerApplicationException(LOGGER, "Invalid schema. Reason: 'schemaName' should not be null or empty", Response.Status.BAD_REQUEST); } + if (schema.getSchemaName().contains(TableConfig.TABLE_NAME_FORBIDDEN_SUBSTRING)) { + throw new IllegalStateException("'schemaName' cannot contain double underscore ('__')"); + } } private void validateSchemaInternal(Schema schema) { diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/TableConfig.java b/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/TableConfig.java index e5e11b0bd984..7eba79f6d89a 100644 --- a/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/TableConfig.java +++ b/pinot-spi/src/main/java/org/apache/pinot/spi/config/table/TableConfig.java @@ -60,7 +60,7 @@ public class TableConfig extends BaseJsonConfig { public static final String TIER_OVERWRITES_KEY = "tierOverwrites"; // Double underscore is reserved for real-time segment name delimiter - private static final String TABLE_NAME_FORBIDDEN_SUBSTRING = "__"; + public static final String TABLE_NAME_FORBIDDEN_SUBSTRING = "__"; /* MANDATORY FIELDS */