diff --git a/source/client/test/clientTests.cpp b/source/client/test/clientTests.cpp
index 9810b30857..4170401f00 100644
--- a/source/client/test/clientTests.cpp
+++ b/source/client/test/clientTests.cpp
@@ -49,7 +49,7 @@ int main(int argc, char** argv) {
TEST(testCase, driverInit_Test) { taos_init(); }
TEST(testCase, connect_Test) {
- TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0);
+ TAOS* pConn = taos_connect("localhost", "root", "taosdata", "abc1", 0);
if (pConn == NULL) {
printf("failed to connect to server, reason:%s\n", taos_errstr(NULL));
}
diff --git a/source/libs/planner/src/physicalPlanJson.c b/source/libs/planner/src/physicalPlanJson.c
index 97eb63ac31..c7a4e438ba 100644
--- a/source/libs/planner/src/physicalPlanJson.c
+++ b/source/libs/planner/src/physicalPlanJson.c
@@ -30,7 +30,8 @@ static void copyString(const cJSON* json, const char* name, char* dst) {
}
static int64_t getNumber(const cJSON* json, const char* name) {
- return cJSON_GetNumberValue(cJSON_GetObjectItem(json, name));
+ double d = cJSON_GetNumberValue(cJSON_GetObjectItem(json, name));
+ return (int64_t) d;
}
static bool addObject(cJSON* json, const char* name, FToJson func, const void* obj) {
@@ -541,17 +542,27 @@ static const char* jkTimeWindowEndKey = "EndKey";
static bool timeWindowToJson(const void* obj, cJSON* json) {
const STimeWindow* win = (const STimeWindow*)obj;
- bool res = cJSON_AddNumberToObject(json, jkTimeWindowStartKey, win->skey);
+
+ char tmp[32] = {0};
+ sprintf(tmp, "%"PRId64, win->skey);
+
+ bool res = cJSON_AddStringToObject(json, jkTimeWindowStartKey, tmp);
if (res) {
- res = cJSON_AddNumberToObject(json, jkTimeWindowEndKey, win->ekey);
+ memset(tmp, 0, tListLen(tmp));
+ sprintf(tmp, "%"PRId64, win->ekey);
+ res = cJSON_AddStringToObject(json, jkTimeWindowEndKey, tmp);
}
return res;
}
static bool timeWindowFromJson(const cJSON* json, void* obj) {
STimeWindow* win = (STimeWindow*)obj;
- win->skey = getNumber(json, jkTimeWindowStartKey);
- win->ekey = getNumber(json, jkTimeWindowEndKey);
+
+ char* p = getString(json, jkTimeWindowStartKey);
+ win->skey = strtoll(p, NULL, 10);
+
+ p = getString(json, jkTimeWindowEndKey);
+ win->ekey = strtoll(p, NULL, 10);
return true;
}
diff --git a/source/libs/qworker/src/qworker.c b/source/libs/qworker/src/qworker.c
index 1be190065a..249c784313 100644
--- a/source/libs/qworker/src/qworker.c
+++ b/source/libs/qworker/src/qworker.c
@@ -1262,7 +1262,8 @@ int32_t qWorkerProcessQueryMsg(void *node, void *qWorkerMgmt, SRpcMsg *pMsg) {
}
QW_ERR_JRET(qwAddTask(qWorkerMgmt, sId, qId, tId, JOB_TASK_STATUS_EXECUTING));
-
+ QW_DLOG("query task received, reqId:0x%"PRIx64", physical plan:%s", qId, msg->msg);
+
code = qStringToSubplan(msg->msg, &plan);
if (TSDB_CODE_SUCCESS != code) {
QW_TASK_ELOG("string to subplan failed, code:%d", code);
diff --git a/source/libs/transport/test/transportTests.cc b/source/libs/transport/test/transportTests.cc
index 468aeba8a9..151deaf29b 100644
--- a/source/libs/transport/test/transportTests.cc
+++ b/source/libs/transport/test/transportTests.cc
@@ -13,23 +13,126 @@
* along with this program. If not, see .
*/
+#ifdef USE_UV
+
#include
#include
#include
#include
#include
+#include
#include "transportInt.h"
#include "trpc.h"
using namespace std;
-int main() {
- SRpcInit init = {.localPort = 6030, .label = "rpc", .numOfThreads = 5};
- void* p = rpcOpen(&init);
-
- while (1) {
- std::cout << "cron task" << std::endl;
- std::this_thread::sleep_for(std::chrono::milliseconds(10 * 1000));
+struct QueueElem {
+ queue q;
+ int val;
+};
+class QueueObj {
+ public:
+ QueueObj() {
+ // avoid formate
+ QUEUE_INIT(&head);
}
+ void Push(QueueElem *el) {
+ // avoid formate
+ QUEUE_PUSH(&head, &el->q);
+ }
+ QueueElem *Pop() {
+ QueueElem *el = NULL;
+ if (!IsEmpty()) {
+ queue *h = QUEUE_HEAD(&head);
+ el = QUEUE_DATA(h, QueueElem, q);
+ QUEUE_REMOVE(&el->q);
+ }
+ return el;
+ }
+ bool IsEmpty() {
+ // avoid formate
+ return QUEUE_IS_EMPTY(&head);
+ }
+ void RmElem(QueueElem *el) {
+ // impl
+ QUEUE_REMOVE(&el->q);
+ }
+ void ForEach(std::vector &result) {
+ queue *h;
+ QUEUE_FOREACH(h, &head) {
+ // add more
+ QueueElem *el = QUEUE_DATA(h, QueueElem, q);
+ result.push_back(el->val);
+ }
+ }
+
+ private:
+ queue head;
+};
+
+class QueueEnv : public ::testing::Test {
+ protected:
+ virtual void SetUp() {
+ // TODO
+ q = new QueueObj();
+ }
+ virtual void TearDown() {
+ delete q;
+ // formate
+ }
+ QueueObj *q;
+};
+
+TEST_F(QueueEnv, testPushAndPop) {
+ // add more test
+ assert(q->IsEmpty());
+
+ for (int i = 0; i < 100; i++) {
+ QueueElem *el = (QueueElem *)malloc(sizeof(QueueElem));
+ el->val = i;
+ q->Push(el);
+ }
+ int i = 0;
+ while (!q->IsEmpty()) {
+ QueueElem *el = q->Pop();
+ assert(el->val == i++);
+ free(el);
+ }
+ assert(q->IsEmpty());
}
+TEST_F(QueueEnv, testRm) {
+ // add more test
+
+ std::vector set;
+ assert(q->IsEmpty());
+
+ for (int i = 0; i < 100; i++) {
+ QueueElem *el = (QueueElem *)malloc(sizeof(QueueElem));
+ el->val = i;
+ q->Push(el);
+ set.push_back(el);
+ }
+ for (int i = set.size() - 1; i >= 0; i--) {
+ QueueElem *el = set[i];
+ q->RmElem(el);
+ free(el);
+ }
+ assert(q->IsEmpty());
+}
+TEST_F(QueueEnv, testIter) {
+ // add more test
+ assert(q->IsEmpty());
+ std::vector vals;
+ for (int i = 0; i < 100; i++) {
+ QueueElem *el = (QueueElem *)malloc(sizeof(QueueElem));
+ el->val = i;
+ q->Push(el);
+ vals.push_back(i);
+ }
+ std::vector result;
+ q->ForEach(result);
+ assert(result.size() == vals.size());
+}
+
+#endif