Skip to content

Commit

Permalink
Fix sql syntax error user (#16583)
Browse files Browse the repository at this point in the history
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`.
  • Loading branch information
zachjsh committed Jun 11, 2024
1 parent fec4843 commit 3f5f592
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -380,13 +380,7 @@ public static DruidException translateException(Exception e)
}
}

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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1626,6 +1626,18 @@ public void testInsertWithInvalidSelectStatement()
.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()
{
Expand Down

0 comments on commit 3f5f592

Please sign in to comment.