mirror of https://github.com/apache/druid.git
Fix sql syntax error user (#16583)
This fixes an issue where in some cases, a SQL syntax error encountered when parsing / planning a query results in an error returned to the user with persona a `admin` when it should instead be `user`.
This commit is contained in:
parent
fec48432d4
commit
3f5f5921e0
|
@ -380,13 +380,7 @@ public class DruidPlanner implements Closeable
|
|||
}
|
||||
}
|
||||
|
||||
return DruidException.forPersona(DruidException.Persona.DEVELOPER)
|
||||
.ofCategory(DruidException.Category.UNCATEGORIZED)
|
||||
.build(
|
||||
inner,
|
||||
"Unable to parse the SQL, unrecognized error from calcite: [%s]",
|
||||
inner.getMessage()
|
||||
);
|
||||
return InvalidSqlInput.exception(inner.getMessage());
|
||||
}
|
||||
catch (RelOptPlanner.CannotPlanException inner) {
|
||||
return DruidException.forPersona(DruidException.Persona.USER)
|
||||
|
|
|
@ -1626,6 +1626,18 @@ public class CalciteInsertDmlTest extends CalciteIngestionDmlTest
|
|||
.verify();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInsertWithLongIdentifer()
|
||||
{
|
||||
// This test fails because an identifer is specified of length 200, which exceeds the length limit of 128
|
||||
// characters.
|
||||
String longIdentifer = new String(new char[200]).replace('\0', 'a');
|
||||
testIngestionQuery()
|
||||
.sql(StringUtils.format("INSERT INTO t SELECT %s FROM foo PARTITIONED BY ALL", longIdentifer)) // count is a keyword
|
||||
.expectValidationError(invalidSqlContains(StringUtils.format("Length of identifier '%s' must be less than or equal to 128 characters", longIdentifer)))
|
||||
.verify();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInsertWithUnnamedColumnInSelectStatement()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue