Description:
I have a schema with table sessio, view resum_vista_2, function carrega_dia() and view resum_vista. All works well but mysqldump generates the code of view resum_vista not very well.
The definition of view resum_vista I wrote is in the first line, but Mysql generates the second line. They have some important differences!
CODE I WROTE:
select if((dayofweek(sess.dia) >= 2), from_days((to_days(sess.dia) - (dayofweek(sess.dia) - 2))), from_days((to_days(sess.dia) - 6))) AS setmana,
round(sum(sess.distancia),2) AS distancia,round(avg(sess.distancia),2) AS distancia_mitjana,
round((sum((time_to_sec(sess.temps) * sess.batecs_mig)) / sum(time_to_sec(sess.temps))),0) AS batecs_mig,
round((sum((time_to_sec(sess.temps) * sess.batecs_max)) / sum(time_to_sec(sess.temps))),0) AS batecs_max,
sec_to_time((sum(time_to_sec(sess.temps)) / sum(sess.distancia))) AS ritme,
sec_to_time(sum(time_to_sec(sess.temps))) AS temps_total,
round(avg(sess.pujada),0) AS pujada_mitjana,
round(avg(sess.baixada),0) AS baixada_mitjana,
round(avg(sess.pes),2) AS pes_mig,
round(avg(sess.greix),2) AS greix_mig,
round(sum(sess.carrega),2) AS carrega_total,
round((sum(sess.carrega) / 7),2) AS carrega_diaria,
if((dayofweek(sess.dia) >= 2), (select carrega_dia(from_days(((to_days(sess.dia) - (dayofweek(sess.dia) - 2)) - 1)))),(select carrega_dia((from_days((to_days(sess.dia) - 6)) - 1)))) AS adaptacio_anterior from resum_vista_2 sess
group by 1
order by 1 desc;
INCORRECT CODE GENERATION BY MYSQLDUMP
select if((dayofweek(sess.dia) >= 2), from_days((to_days(sess.dia) - (dayofweek(sess.dia) - 2))), from_days((to_days(sess.dia) - 6))) AS setmana,
round(sum(sess.distancia),2) AS distancia,round(avg(sess.distancia),2) AS distancia_mitjana,
round((sum((time_to_sec(sess.temps) * sess.batecs_mig)) / sum(time_to_sec(sess.temps))),0) AS batecs_mig,
round((sum((time_to_sec(sess.temps) * sess.batecs_max)) / sum(time_to_sec(sess.temps))),0) AS batecs_max,
sec_to_time((sum(time_to_sec(sess.temps)) / sum(sess.distancia))) AS ritme,
sec_to_time(sum(time_to_sec(sess.temps))) AS temps_total,
round(avg(sess.pujada),0) AS pujada_mitjana,
round(avg(sess.baixada),0) AS baixada_mitjana,
round(avg(sess.pes),2) AS pes_mig,
round(avg(sess.greix),2) AS greix_mig,
round(sum(sess.carrega),2) AS carrega_total,
round((sum(sess.carrega) / 7),2) AS carrega_diaria,
if((dayofweek(sess.dia) >= 2), (select carrega_dia(from_days(((to_days(sess.dia) - (dayofweek(sess.dia) - 2)) - 1))) AS carrega_dia(from_days(((to_days(sess.dia) - (dayofweek(sess.dia) - 2)) - 1)))), (select carrega_dia((from_days((to_days(sess.dia) - 6)) - 1)) AS carrega_dia((from_days((to_days(sess.dia) - 6)) - 1)))) AS adaptacio_anterior
from resum_vista_2 sess
group by 1
order by 1 desc;
How to repeat:
Create, in this order, table sessio, view resum_vista_2, function carrega_dia() and view resum_vista.