You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
Fix another 0 count error in dropValue
This commit is contained in:
committed by
Leonid Fedorov
parent
e7cab8445c
commit
680633a350
@ -218,23 +218,32 @@ mcsv1_UDAF::ReturnCode corr::dropValue(mcsv1Context* context, ColumnDatum* valsD
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->varx = 0;
|
||||||
|
data->vary = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
long double dy = valy - avgyPrev;
|
||||||
|
|
||||||
long double dx = valx - avgxPrev;
|
avgyPrev -= dy / cnt;
|
||||||
long double dy = valy - avgyPrev;
|
avgxPrev -= dx / cnt;
|
||||||
|
|
||||||
avgyPrev -= dy / cnt;
|
varxPrev -= dx * (valx - avgxPrev);
|
||||||
avgxPrev -= dx / cnt;
|
varyPrev -= dy * (valy - avgyPrev);
|
||||||
|
|
||||||
varxPrev -= dx * (valx - avgxPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
varyPrev -= dy * (valy - avgyPrev);
|
|
||||||
|
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
|
||||||
data->avgy = avgyPrev;
|
|
||||||
data->varx = varxPrev;
|
|
||||||
data->vary = varyPrev;
|
|
||||||
data->cxy = cxyPrev;
|
|
||||||
|
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->varx = varxPrev;
|
||||||
|
data->vary = varyPrev;
|
||||||
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -169,15 +169,23 @@ mcsv1_UDAF::ReturnCode covar_pop::dropValue(mcsv1Context* context, ColumnDatum*
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
long double dx = valx - avgxPrev;
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
|
||||||
avgyPrev -= (valy - avgyPrev) / cnt;
|
avgyPrev -= (valy - avgyPrev) / cnt;
|
||||||
avgxPrev -= dx / cnt;
|
avgxPrev -= dx / cnt;
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
|
||||||
data->avgy = avgyPrev;
|
|
||||||
data->cxy = cxyPrev;
|
|
||||||
|
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -173,14 +173,23 @@ mcsv1_UDAF::ReturnCode covar_samp::dropValue(mcsv1Context* context, ColumnDatum*
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
long double dx = valx - avgxPrev;
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
|
||||||
avgyPrev -= (valy - avgyPrev) / cnt;
|
avgyPrev -= (valy - avgyPrev) / cnt;
|
||||||
avgxPrev -= dx / cnt;
|
avgxPrev -= dx / cnt;
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
data->avgx = avgxPrev;
|
||||||
data->avgy = avgyPrev;
|
data->avgy = avgyPrev;
|
||||||
data->cxy = cxyPrev;
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -196,21 +196,29 @@ mcsv1_UDAF::ReturnCode regr_intercept::dropValue(mcsv1Context* context, ColumnDa
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->cx = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
long double dy = valy - avgyPrev;
|
||||||
|
|
||||||
long double dx = valx - avgxPrev;
|
avgyPrev -= dy / cnt;
|
||||||
long double dy = valy - avgyPrev;
|
avgxPrev -= dx / cnt;
|
||||||
|
|
||||||
avgyPrev -= dy / cnt;
|
cxPrev -= dx * (valx - avgxPrev);
|
||||||
avgxPrev -= dx / cnt;
|
|
||||||
|
|
||||||
cxPrev -= dx * (valx - avgxPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
|
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
|
||||||
data->avgy = avgyPrev;
|
|
||||||
data->cx = cxPrev;
|
|
||||||
data->cxy = cxyPrev;
|
|
||||||
|
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->cx = cxPrev;
|
||||||
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -218,23 +218,32 @@ mcsv1_UDAF::ReturnCode regr_r2::dropValue(mcsv1Context* context, ColumnDatum* va
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->varx = 0;
|
||||||
|
data->vary = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
long double dy = valy - avgyPrev;
|
||||||
|
|
||||||
long double dx = valx - avgxPrev;
|
avgyPrev -= dy / cnt;
|
||||||
long double dy = valy - avgyPrev;
|
avgxPrev -= dx / cnt;
|
||||||
|
|
||||||
avgyPrev -= dy / cnt;
|
varxPrev -= dx * (valx - avgxPrev);
|
||||||
avgxPrev -= dx / cnt;
|
varyPrev -= dy * (valy - avgyPrev);
|
||||||
|
|
||||||
varxPrev -= dx * (valx - avgxPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
varyPrev -= dy * (valy - avgyPrev);
|
|
||||||
|
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
|
||||||
data->avgy = avgyPrev;
|
|
||||||
data->varx = varxPrev;
|
|
||||||
data->vary = varyPrev;
|
|
||||||
data->cxy = cxyPrev;
|
|
||||||
|
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->varx = varxPrev;
|
||||||
|
data->vary = varyPrev;
|
||||||
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -193,21 +193,29 @@ mcsv1_UDAF::ReturnCode regr_slope::dropValue(mcsv1Context* context, ColumnDatum*
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->cx = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
long double dy = valy - avgyPrev;
|
||||||
|
|
||||||
long double dx = valx - avgxPrev;
|
avgyPrev -= dy / cnt;
|
||||||
long double dy = valy - avgyPrev;
|
avgxPrev -= dx / cnt;
|
||||||
|
|
||||||
avgyPrev -= dy / cnt;
|
cxPrev -= dx * (valx - avgxPrev);
|
||||||
avgxPrev -= dx / cnt;
|
|
||||||
|
|
||||||
cxPrev -= dx * (valx - avgxPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
|
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
|
||||||
data->avgy = avgyPrev;
|
|
||||||
data->cx = cxPrev;
|
|
||||||
data->cxy = cxyPrev;
|
|
||||||
|
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->cx = cxPrev;
|
||||||
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -157,11 +157,18 @@ mcsv1_UDAF::ReturnCode regr_sxx::dropValue(mcsv1Context* context, ColumnDatum* v
|
|||||||
long double cxPrev = data->cx;
|
long double cxPrev = data->cx;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
long double dx = valx - avgxPrev;
|
if (cnt == 0)
|
||||||
avgxPrev -= dx / cnt;
|
{
|
||||||
cxPrev -= dx * (valx - avgxPrev);
|
data->avgx = 0;
|
||||||
data->avgx = avgxPrev;
|
data->cx = 0;
|
||||||
data->cx = cxPrev;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
avgxPrev -= dx / cnt;
|
||||||
|
cxPrev -= dx * (valx - avgxPrev);
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->cx = cxPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -168,15 +168,23 @@ mcsv1_UDAF::ReturnCode regr_sxy::dropValue(mcsv1Context* context, ColumnDatum* v
|
|||||||
long double cxyPrev = data->cxy;
|
long double cxyPrev = data->cxy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
long double dx = valx - avgxPrev;
|
if (cnt == 0)
|
||||||
|
{
|
||||||
|
data->avgx = 0;
|
||||||
|
data->avgy = 0;
|
||||||
|
data->cxy = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dx = valx - avgxPrev;
|
||||||
|
|
||||||
avgyPrev -= (valy - avgyPrev) / cnt;
|
avgyPrev -= (valy - avgyPrev) / cnt;
|
||||||
avgxPrev -= dx / cnt;
|
avgxPrev -= dx / cnt;
|
||||||
cxyPrev -= dx * (valy - avgyPrev);
|
cxyPrev -= dx * (valy - avgyPrev);
|
||||||
|
|
||||||
data->avgx = avgxPrev;
|
|
||||||
data->avgy = avgyPrev;
|
|
||||||
data->cxy = cxyPrev;
|
|
||||||
|
|
||||||
|
data->avgx = avgxPrev;
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->cxy = cxyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -158,11 +158,18 @@ mcsv1_UDAF::ReturnCode regr_syy::dropValue(mcsv1Context* context, ColumnDatum* v
|
|||||||
long double cyPrev = data->cy;
|
long double cyPrev = data->cy;
|
||||||
--data->cnt;
|
--data->cnt;
|
||||||
uint64_t cnt = data->cnt;
|
uint64_t cnt = data->cnt;
|
||||||
long double dy = valy - avgyPrev;
|
if (cnt == 0)
|
||||||
avgyPrev -= dy / cnt;
|
{
|
||||||
cyPrev -= dy * (valy - avgyPrev);
|
data->avgy = 0;
|
||||||
data->avgy = avgyPrev;
|
data->cx = 0;
|
||||||
data->cy = cyPrev;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long double dy = valy - avgyPrev;
|
||||||
|
avgyPrev -= dy / cnt;
|
||||||
|
cyPrev -= dy * (valy - avgyPrev);
|
||||||
|
data->avgy = avgyPrev;
|
||||||
|
data->cy = cyPrev;
|
||||||
|
}
|
||||||
return mcsv1_UDAF::SUCCESS;
|
return mcsv1_UDAF::SUCCESS;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user