fix: LEASTSQUARES func result overflow

This commit is contained in:
factosea 2024-01-16 15:34:05 +08:00
parent 2fef37a5cc
commit fdb847fd36
2 changed files with 13 additions and 5 deletions

View File

@ -1576,9 +1576,13 @@ int32_t leastSQRFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
param12 /= param[1][1];
char buf[512] = {0};
size_t len =
snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", param02, param12);
char buf[64] = {0};
size_t len = 0;
if (fabs(param02) > 1e6 || fabs(param12) > 1e6) {
len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6e, intercept:%.6e}", param02, param12);
} else {
len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", param02, param12);
}
varDataSetLen(buf, len);
colDataSetVal(pCol, currentRow, buf, pResInfo->isNullRes);

View File

@ -2428,8 +2428,12 @@ int32_t leastSQRScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPa
matrix12 /= matrix[1][1];
char buf[64] = {0};
size_t len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", matrix02,
matrix12);
size_t len = 0;
if (fabs(matrix02) > 1e6 || fabs(matrix12) > 1e6) {
len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6e, intercept:%.6e}", matrix02, matrix12);
} else {
len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", matrix02, matrix12);
}
varDataSetLen(buf, len);
colDataSetVal(pOutputData, 0, buf, false);
}