Hi Sergei, On 05/29/2015 08:05 PM, Sergei Golubchik wrote:
Hi, Alexander!
On May 19, Alexander Barkov wrote:
I'm not sure, though, how to do that with a minimal overhead. A couple of bool's in TABLE, like
bool all_default_are_checked; bool write_set_defaults_are_checked;
I rewrote the patch slightly, so now we don't need to remember all_default_are_checked or write_set_defaults_are_checked. The default values are now checked before the query execution and before the first restore_record() call. They are now checked directly in table->s->default_values. I hope it's now faster and clearer comparing to the original patch version from MySQL-5.6. Thanks.
that are set to false at the beginning on INSERT,INSERT...SELECT,LOAD. And used like that
... Sorry, I did't understand your idea about having two separate flags for "all" and "write_set". Is it for the cases when one mixes empty and non-empty parenthesized value lists, like these:
insert into (a,b) t1 values (),(10,20); insert into (a,b) t1 values (10,20),();
???
Yes, exactly. I thought it's the only case when the set of columns might change within a single query execution.
Note, this currently does not work and return this error:
ERROR 1136 (21S01): Column count doesn't match value count at row 2
Looks like a bug. I guess this could work.
Okay, then I was wrong :) Does that mean a set of inserted columns can *never* change within a single query? Good for us.
If so, would you like me to report and fix it before mdev-7824?
No, certainly not before mdev-7824. And may be not at all. I don't care much. It's apparently not a bug. It could be a new minor feature. But as nobody ever wanted it, I wouldn't bother.
Regards, Sergei