diff --git a/src/client/src/tscSubquery.c b/src/client/src/tscSubquery.c index ed9e0f7d32e255eab1fb7ee8560a421b7a50cbb8..a9197a33f15c39d34fd38696d59b8e2ba8ab5521 100644 --- a/src/client/src/tscSubquery.c +++ b/src/client/src/tscSubquery.c @@ -3351,10 +3351,14 @@ static void tscRetrieveFromDnodeCallBack(void *param, TAOS_RES *tres, int numOfR } SColumnModel *pModelDesc = pDesc->pColumnModel; + if (pModelDesc == NULL) { + tscError("0x%"PRIx64" sub:0x%"PRIx64" column model has been freed", pParentSql->self, pSql->self); + tscAbortFurtherRetryRetrieval(trsupport, tres, TSDB_CODE_QRY_APP_ERROR); + } SColumnModel *pModelMemBuf = trsupport->pExtMemBuffer[idx]->pColumnModel; if (pModelDesc->numOfCols != pModelMemBuf->numOfCols || pModelDesc->rowSize != pModelMemBuf->rowSize) { - tscError("extBuf column model is not consistent with descriptor column model"); + tscError("0x%"PRIx64" sub:0x%"PRIx64 "extBuf column model is not consistent with descriptor column model", pParentSql->self, pSql->self); tscAbortFurtherRetryRetrieval(trsupport, tres, TSDB_CODE_QRY_APP_ERROR); return; } diff --git a/src/query/src/qExtbuffer.c b/src/query/src/qExtbuffer.c index fa0b891df0bc06c621a02740d538ef69b04ea6fd..fa376097fcfbc4c50b2436652a3f62daff02d722 100644 --- a/src/query/src/qExtbuffer.c +++ b/src/query/src/qExtbuffer.c @@ -1254,6 +1254,7 @@ void tOrderDescDestroy(tOrderDescriptor *pDesc) { } destroyColumnModel(pDesc->pColumnModel); + pDesc->pColumnModel = NULL; tfree(pDesc); }