enh: check level

This commit is contained in:
facetosea 2024-11-11 17:23:13 +08:00
parent bf9ea14f86
commit 61ccba3ce7
1 changed files with 15 additions and 17 deletions

View File

@ -543,10 +543,6 @@ void udfdDeinitScriptPlugins() {
void udfdProcessRequest(uv_work_t *req) { void udfdProcessRequest(uv_work_t *req) {
TAOS_UDF_CHECK_PTR_RVOID(req); TAOS_UDF_CHECK_PTR_RVOID(req);
if (req == NULL) {
fnError("udf request is NULL");
return;
}
SUvUdfWork *uvUdf = (SUvUdfWork *)(req->data); SUvUdfWork *uvUdf = (SUvUdfWork *)(req->data);
if (uvUdf == NULL) { if (uvUdf == NULL) {
fnError("udf work is NULL"); fnError("udf work is NULL");
@ -800,22 +796,24 @@ static int32_t checkUDFScalaResult(SSDataBlock *block, SUdfColumn *output) {
return TSDB_CODE_UDF_FUNC_EXEC_FAILURE; return TSDB_CODE_UDF_FUNC_EXEC_FAILURE;
} }
for (int32_t i = 0; i < output->colData.numOfRows; ++i) { if (tsSafetyCheckLevel == TSDB_SAFETY_CHECK_LEVELL_BYROW) {
if (tsSafetyCheckLevel < TSDB_SAFETY_CHECK_LEVELL_BYROW) break; for (int32_t i = 0; i < output->colData.numOfRows; ++i) {
if (!udfColDataIsNull(output, i)) { if (!udfColDataIsNull(output, i)) {
if (IS_VAR_DATA_TYPE(output->colMeta.type)) { if (IS_VAR_DATA_TYPE(output->colMeta.type)) {
TAOS_UDF_CHECK_CONDITION(output->colData.varLenCol.payload != NULL, TSDB_CODE_UDF_FUNC_EXEC_FAILURE); TAOS_UDF_CHECK_CONDITION(output->colData.varLenCol.payload != NULL, TSDB_CODE_UDF_FUNC_EXEC_FAILURE);
TAOS_UDF_CHECK_CONDITION(output->colData.varLenCol.varOffsets[i] >= 0 && TAOS_UDF_CHECK_CONDITION(output->colData.varLenCol.varOffsets[i] >= 0 &&
output->colData.varLenCol.varOffsets[i] < output->colData.varLenCol.payloadLen, output->colData.varLenCol.varOffsets[i] < output->colData.varLenCol.payloadLen,
TSDB_CODE_UDF_FUNC_EXEC_FAILURE); TSDB_CODE_UDF_FUNC_EXEC_FAILURE);
} else { } else {
TAOS_UDF_CHECK_CONDITION( TAOS_UDF_CHECK_CONDITION(
output->colMeta.bytes * output->colData.numOfRows <= output->colData.fixLenCol.dataLen, output->colMeta.bytes * output->colData.numOfRows <= output->colData.fixLenCol.dataLen,
TSDB_CODE_UDF_FUNC_EXEC_FAILURE); TSDB_CODE_UDF_FUNC_EXEC_FAILURE);
break; break;
}
} }
} }
} }
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
} }