1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-05 16:15:50 +03:00

Fix another 0 count error in dropValue

This commit is contained in:
mariadb-AndreyPiskunov
2022-09-09 21:34:20 +03:00
committed by Leonid Fedorov
parent e7cab8445c
commit 680633a350
9 changed files with 160 additions and 87 deletions

View File

@@ -218,7 +218,16 @@ 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 dx = valx - avgxPrev;
long double dy = valy - avgyPrev; long double dy = valy - avgyPrev;
@@ -235,6 +244,6 @@ mcsv1_UDAF::ReturnCode corr::dropValue(mcsv1Context* context, ColumnDatum* valsD
data->varx = varxPrev; data->varx = varxPrev;
data->vary = varyPrev; data->vary = varyPrev;
data->cxy = cxyPrev; data->cxy = cxyPrev;
}
return mcsv1_UDAF::SUCCESS; return mcsv1_UDAF::SUCCESS;
} }

View File

@@ -169,6 +169,14 @@ 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;
if (cnt == 0)
{
data->avgx = 0;
data->avgy = 0;
data->cxy = 0;
}
else
{
long double dx = valx - avgxPrev; long double dx = valx - avgxPrev;
avgyPrev -= (valy - avgyPrev) / cnt; avgyPrev -= (valy - avgyPrev) / cnt;
@@ -178,6 +186,6 @@ mcsv1_UDAF::ReturnCode covar_pop::dropValue(mcsv1Context* context, ColumnDatum*
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;
} }

View File

@@ -173,6 +173,14 @@ 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;
if (cnt == 0)
{
data->avgx = 0;
data->avgy = 0;
data->cxy = 0;
}
else
{
long double dx = valx - avgxPrev; long double dx = valx - avgxPrev;
avgyPrev -= (valy - avgyPrev) / cnt; avgyPrev -= (valy - avgyPrev) / cnt;
@@ -182,5 +190,6 @@ mcsv1_UDAF::ReturnCode covar_samp::dropValue(mcsv1Context* context, ColumnDatum*
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;
} }

View File

@@ -196,7 +196,15 @@ 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 dx = valx - avgxPrev;
long double dy = valy - avgyPrev; long double dy = valy - avgyPrev;
@@ -211,6 +219,6 @@ mcsv1_UDAF::ReturnCode regr_intercept::dropValue(mcsv1Context* context, ColumnDa
data->avgy = avgyPrev; data->avgy = avgyPrev;
data->cx = cxPrev; data->cx = cxPrev;
data->cxy = cxyPrev; data->cxy = cxyPrev;
}
return mcsv1_UDAF::SUCCESS; return mcsv1_UDAF::SUCCESS;
} }

View File

@@ -218,7 +218,16 @@ 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 dx = valx - avgxPrev;
long double dy = valy - avgyPrev; long double dy = valy - avgyPrev;
@@ -235,6 +244,6 @@ mcsv1_UDAF::ReturnCode regr_r2::dropValue(mcsv1Context* context, ColumnDatum* va
data->varx = varxPrev; data->varx = varxPrev;
data->vary = varyPrev; data->vary = varyPrev;
data->cxy = cxyPrev; data->cxy = cxyPrev;
}
return mcsv1_UDAF::SUCCESS; return mcsv1_UDAF::SUCCESS;
} }

View File

@@ -193,7 +193,15 @@ 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 dx = valx - avgxPrev;
long double dy = valy - avgyPrev; long double dy = valy - avgyPrev;
@@ -208,6 +216,6 @@ mcsv1_UDAF::ReturnCode regr_slope::dropValue(mcsv1Context* context, ColumnDatum*
data->avgy = avgyPrev; data->avgy = avgyPrev;
data->cx = cxPrev; data->cx = cxPrev;
data->cxy = cxyPrev; data->cxy = cxyPrev;
}
return mcsv1_UDAF::SUCCESS; return mcsv1_UDAF::SUCCESS;
} }

View File

@@ -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;
if (cnt == 0)
{
data->avgx = 0;
data->cx = 0;
}
else
{
long double dx = valx - avgxPrev; long double dx = valx - avgxPrev;
avgxPrev -= dx / cnt; avgxPrev -= dx / cnt;
cxPrev -= dx * (valx - avgxPrev); cxPrev -= dx * (valx - avgxPrev);
data->avgx = avgxPrev; data->avgx = avgxPrev;
data->cx = cxPrev; data->cx = cxPrev;
}
return mcsv1_UDAF::SUCCESS; return mcsv1_UDAF::SUCCESS;
} }

View File

@@ -168,6 +168,14 @@ 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;
if (cnt == 0)
{
data->avgx = 0;
data->avgy = 0;
data->cxy = 0;
}
else
{
long double dx = valx - avgxPrev; long double dx = valx - avgxPrev;
avgyPrev -= (valy - avgyPrev) / cnt; avgyPrev -= (valy - avgyPrev) / cnt;
@@ -177,6 +185,6 @@ mcsv1_UDAF::ReturnCode regr_sxy::dropValue(mcsv1Context* context, ColumnDatum* v
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;
} }

View File

@@ -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;
if (cnt == 0)
{
data->avgy = 0;
data->cx = 0;
}
else
{
long double dy = valy - avgyPrev; long double dy = valy - avgyPrev;
avgyPrev -= dy / cnt; avgyPrev -= dy / cnt;
cyPrev -= dy * (valy - avgyPrev); cyPrev -= dy * (valy - avgyPrev);
data->avgy = avgyPrev; data->avgy = avgyPrev;
data->cy = cyPrev; data->cy = cyPrev;
}
return mcsv1_UDAF::SUCCESS; return mcsv1_UDAF::SUCCESS;
} }