maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #13129
Re: 93493a0e9b5: MDEV-24176 Server crashes after insert in the table with virtual column generated using date_format() and if()
Hi Sergei,
On Wed, Apr 13, 2022 at 8:18 PM Sergei Golubchik <serg@xxxxxxxxxxx> wrote:
>
> Hi, Aleksey,
>
> On Apr 12, Aleksey Midenkov wrote:
> > > > > > +bool Vcol_expr_context::init()
> > > > > > +{
> > > > > > + /*
> > > > > > + As this is vcol expression we must narrow down name resolution to
> > > > > > + single table.
> > > > > > + */
> > > > > > + if (init_lex_with_single_table(thd, table, &lex))
> > > > >
> > > > CURRENT_TEST: gcol.gcol_bugfixes
> > > > mysqltest: At line 579: query 'INSERT INTO t1 (suppliersenttoday)
> > > > VALUES (0)' failed: 2013: Lost connection to MySQL server during query
> > >
> > > this one crashes. on the next line, 580, though.
> > > because you set CONTEXT_ANALYSIS_ONLY_VCOL_EXPR, so
> > > Type_std_attributes::agg_item_set_converter does not wrap items
> > > in Item_func_conv_charset. Which is likely incorrect, because items
> > > without wrapping cannot be properly evaluated, and it looks like they
> > > has to be evaluated later, so it's not "context analysys only".
> > >
> > > Crash on wrapped items is https://jira.mariadb.org/browse/MDEV-25638
> > > that Sanja is looking at right now.
> >
> > Agree, I have the same picture now. Previous faults were on work in
> > progress. So it faults anyway and we keep
> > init_lex_with_single_table(), right?
>
> No, quite the opposite.
> I think (see above) that CONTEXT_ANALYSIS_ONLY_VCOL_EXPR
> (it's set inside init_lex_with_single_table()) is wrong, what you're
> doing is not "context analysys only", you're preparing items for
> evaluation.
That works identically in branch and vanilla 10.3:
--source include/have_ucs2.inc
create table t1 (c1 char(1) character set ucs2 collate ucs2_test_ci,
v1 char(1) character set ucs2 collate ucs2_test_ci as (c1),
v2 int as (c1 = 'b'),
v3 int as (v1 = 'b'));
insert into t1 (c1) values ('a');
select * from t1 where v1 = 'b';
drop table t1;
Result:
select * from t1 where v1 = 'b';
c1 v1 v2 v3
a a 0 0
.opt file:
--character-sets-dir=$MYSQL_TEST_DIR/std_data/ldml/
Please, correct the test case if I missed something.
...
As a side note here I tried to clear CONTEXT_ANALYSIS_ONLY_VCOL_EXPR:
https://github.com/midenok/mariadb/issues/93#issuecomment-1098336828
Couple of tests failed.
>
> Let's wait for Sanja to close his MDEV-25638, and then I'll check this
> test case again.
>
> Regards,
> Sergei
> VP of MariaDB Server Engineering
> and security@xxxxxxxxxxx
--
@midenok
Follow ups
References