[td-11818] support select * from child_table.
This commit is contained in:
parent
4aa8be8333
commit
90e25132e1
|
@ -93,13 +93,12 @@ typedef struct SReqResultInfo {
|
||||||
const char *pData;
|
const char *pData;
|
||||||
TAOS_FIELD *fields;
|
TAOS_FIELD *fields;
|
||||||
uint32_t numOfCols;
|
uint32_t numOfCols;
|
||||||
|
|
||||||
int32_t *length;
|
int32_t *length;
|
||||||
TAOS_ROW row;
|
TAOS_ROW row;
|
||||||
char **pCol;
|
char **pCol;
|
||||||
|
|
||||||
uint32_t numOfRows;
|
uint32_t numOfRows;
|
||||||
uint32_t current;
|
uint32_t current;
|
||||||
|
bool completed;
|
||||||
} SReqResultInfo;
|
} SReqResultInfo;
|
||||||
|
|
||||||
typedef struct SShowReqInfo {
|
typedef struct SShowReqInfo {
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
static int32_t initEpSetFromCfg(const char *firstEp, const char *secondEp, SCorEpSet *pEpSet);
|
static int32_t initEpSetFromCfg(const char *firstEp, const char *secondEp, SCorEpSet *pEpSet);
|
||||||
static SMsgSendInfo* buildConnectMsg(SRequestObj *pRequest);
|
static SMsgSendInfo* buildConnectMsg(SRequestObj *pRequest);
|
||||||
static void destroySendMsgInfo(SMsgSendInfo* pMsgBody);
|
static void destroySendMsgInfo(SMsgSendInfo* pMsgBody);
|
||||||
static void setQueryResultByRsp(SReqResultInfo* pResultInfo, SRetrieveTableRsp* pRsp);
|
static void setQueryResultByRsp(SReqResultInfo* pResultInfo, const SRetrieveTableRsp* pRsp);
|
||||||
|
|
||||||
static bool stringLengthCheck(const char* str, size_t maxsize) {
|
static bool stringLengthCheck(const char* str, size_t maxsize) {
|
||||||
if (str == NULL) {
|
if (str == NULL) {
|
||||||
|
@ -547,12 +547,15 @@ void* doFetchRow(SRequestObj* pRequest) {
|
||||||
|
|
||||||
if (pResultInfo->pData == NULL || pResultInfo->current >= pResultInfo->numOfRows) {
|
if (pResultInfo->pData == NULL || pResultInfo->current >= pResultInfo->numOfRows) {
|
||||||
if (pRequest->type == TDMT_VND_QUERY) {
|
if (pRequest->type == TDMT_VND_QUERY) {
|
||||||
pRequest->type = TDMT_VND_FETCH;
|
// All data has returned to App already, no need to try again
|
||||||
|
if (pResultInfo->completed) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
scheduleFetchRows(pRequest->body.pQueryJob, (void **)&pRequest->body.resInfo.pData);
|
scheduleFetchRows(pRequest->body.pQueryJob, (void **)&pRequest->body.resInfo.pData);
|
||||||
setQueryResultByRsp(&pRequest->body.resInfo, (SRetrieveTableRsp*)pRequest->body.resInfo.pData);
|
setQueryResultByRsp(&pRequest->body.resInfo, (SRetrieveTableRsp*)pRequest->body.resInfo.pData);
|
||||||
|
|
||||||
pResultInfo->current = 0;
|
if (pResultInfo->numOfRows == 0) {
|
||||||
if (pResultInfo->numOfRows <= pResultInfo->current) {
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,11 +659,14 @@ void setConnectionDB(STscObj* pTscObj, const char* db) {
|
||||||
pthread_mutex_unlock(&pTscObj->mutex);
|
pthread_mutex_unlock(&pTscObj->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setQueryResultByRsp(SReqResultInfo* pResultInfo, SRetrieveTableRsp* pRsp) {
|
void setQueryResultByRsp(SReqResultInfo* pResultInfo, const SRetrieveTableRsp* pRsp) {
|
||||||
assert(pRsp != NULL && pResultInfo != NULL);
|
assert(pResultInfo != NULL && pRsp != NULL);
|
||||||
pResultInfo->pRspMsg = pRsp;
|
|
||||||
|
pResultInfo->pRspMsg = (const char*) pRsp;
|
||||||
pResultInfo->pData = (void*) pRsp->data;
|
pResultInfo->pData = (void*) pRsp->data;
|
||||||
pResultInfo->numOfRows = htonl(pRsp->numOfRows);
|
pResultInfo->numOfRows = htonl(pRsp->numOfRows);
|
||||||
|
pResultInfo->current = 0;
|
||||||
|
pResultInfo->completed = (pRsp->completed == 1);
|
||||||
|
|
||||||
setResultDataPtr(pResultInfo, pResultInfo->fields, pResultInfo->numOfCols, pResultInfo->numOfRows);
|
setResultDataPtr(pResultInfo, pResultInfo->fields, pResultInfo->numOfCols, pResultInfo->numOfRows);
|
||||||
}
|
}
|
Loading…
Reference in New Issue