I agree that that query should throw when executed. If it doesn’t, you should 
log a bug.

However, that test in SqlToRelConverterTest doesn’t prove that Calcite doesn’t 
throw at execute time. 

> On Feb 8, 2023, at 11:20 PM, stanilovsky evgeny <[email protected]> 
> wrote:
> 
> 
> Hello, seems sql standard regulate situation when insertion (char, varchar) 
> data exceeds fixed len column as :
> 
> If the declared type T is fixed length string with length in characters L and 
> the
> length in characters M of V is larger than L, then
> Case:
> a) If the right part M–L characters of V are all space`s, then the value of T 
> is set to the first
> L characters of V.
> b) If one or more of the right part M–L characters of V are not space`s, then 
> exception is raised.
> 
> But fast test [1] in SqlToRelConverterTest highlights that calcite not 
> satisfy of such a rule.
> 
> I miss something or need to fill the issue ?
> 
> Thanks !
> 
> 
> [1]
>  @Test void testInsert1() {
>    String moreThanVarcharLimit = "a".repeat(30);
> 
>    final String sql = "insert into emp (empno, ename, job, mgr, hiredate,\n"
>        + "  sal, comm, deptno, slacker)\n"
>        + "values(1, '" + moreThanVarcharLimit + "', 'job', 0,\n"
>        + "  timestamp '1970-01-01 00:00:00', 1, 1, 1, false)";
>    sql(sql).ok();
>  }

Reply via email to