diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 053cca43ae92b02793c241a311a70b525b44d4b3..bfc3b33c9237455ce354163cc171b614e8093f12 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -1839,7 +1839,7 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr } else { tVariantDump(pVariant, val, TSDB_DATA_TYPE_BIGINT, true); - int64_t nTop = *((int32_t*)val); + int64_t nTop = GET_INT32_VAL(val); if (nTop <= 0 || nTop > 100) { // todo use macro return invalidSqlErrMsg(pQueryInfo->msg, msg5); } @@ -1849,12 +1849,14 @@ int32_t addExprAndResultField(SQueryInfo* pQueryInfo, int32_t colIndex, tSQLExpr return TSDB_CODE_TSC_INVALID_SQL; } + // todo REFACTOR // set the first column ts for top/bottom query SColumnIndex index1 = {0, PRIMARYKEY_TIMESTAMP_COL_INDEX}; pExpr = tscSqlExprAppend(pQueryInfo, TSDB_FUNC_TS, &index1, TSDB_DATA_TYPE_TIMESTAMP, TSDB_KEYSIZE, TSDB_KEYSIZE, false); + tstrncpy(pExpr->aliasName, aAggs[TSDB_FUNC_TS].aName, sizeof(pExpr->aliasName)); - const int32_t TS_COLUMN_INDEX = 0; + const int32_t TS_COLUMN_INDEX = PRIMARYKEY_TIMESTAMP_COL_INDEX; SColumnList ids = getColumnList(1, 0, TS_COLUMN_INDEX); insertResultField(pQueryInfo, TS_COLUMN_INDEX, &ids, TSDB_KEYSIZE, TSDB_DATA_TYPE_TIMESTAMP, aAggs[TSDB_FUNC_TS].aName, pExpr); diff --git a/src/query/tests/tsBufTest.cpp b/src/query/tests/tsBufTest.cpp index f50e1a5a718b0a197c602acec7dc6249410e3e21..1d2d94f3c085ac9429704f7b36a8df4b4cdb67d0 100644 --- a/src/query/tests/tsBufTest.cpp +++ b/src/query/tests/tsBufTest.cpp @@ -29,7 +29,7 @@ int64_t* createTsList(int32_t num, int64_t start, int32_t step) { // simple test void simpleTest() { - STSBuf* pTSBuf = tsBufCreate(true); + STSBuf* pTSBuf = tsBufCreate(true, TSDB_ORDER_ASC); // write 10 ts points int32_t num = 10; @@ -52,7 +52,7 @@ void simpleTest() { // one large list of ts, the ts list need to be split into several small blocks void largeTSTest() { - STSBuf* pTSBuf = tsBufCreate(true); + STSBuf* pTSBuf = tsBufCreate(true, TSDB_ORDER_ASC); // write 10 ts points int32_t num = 1000000; @@ -75,7 +75,7 @@ void largeTSTest() { } void multiTagsTest() { - STSBuf* pTSBuf = tsBufCreate(true); + STSBuf* pTSBuf = tsBufCreate(true, TSDB_ORDER_ASC); int32_t num = 10000; int64_t tag = 1; @@ -105,7 +105,7 @@ void multiTagsTest() { } void multiVnodeTagsTest() { - STSBuf* pTSBuf = tsBufCreate(true); + STSBuf* pTSBuf = tsBufCreate(true, TSDB_ORDER_ASC); int32_t num = 10000; int64_t start = 10000000; @@ -143,7 +143,7 @@ void multiVnodeTagsTest() { } void loadDataTest() { - STSBuf* pTSBuf = tsBufCreate(true); + STSBuf* pTSBuf = tsBufCreate(true, TSDB_ORDER_ASC); int32_t num = 10000; int64_t oldStart = 10000000; @@ -221,7 +221,7 @@ void TSTraverse() { int32_t step = 30; int32_t numOfVnode = 2; - STSBuf* pTSBuf = tsBufCreate(true); + STSBuf* pTSBuf = tsBufCreate(true, TSDB_ORDER_ASC); for (int32_t j = 0; j < numOfVnode; ++j) { // vnodeId:0 @@ -359,8 +359,8 @@ void invalidFileTest() { } void mergeDiffVnodeBufferTest() { - STSBuf* pTSBuf1 = tsBufCreate(true); - STSBuf* pTSBuf2 = tsBufCreate(true); + STSBuf* pTSBuf1 = tsBufCreate(true, TSDB_ORDER_ASC); + STSBuf* pTSBuf2 = tsBufCreate(true, TSDB_ORDER_ASC); int32_t step = 30; int32_t num = 1000; @@ -391,8 +391,8 @@ void mergeDiffVnodeBufferTest() { } void mergeIdenticalVnodeBufferTest() { - STSBuf* pTSBuf1 = tsBufCreate(true); - STSBuf* pTSBuf2 = tsBufCreate(true); + STSBuf* pTSBuf1 = tsBufCreate(true, TSDB_ORDER_ASC); + STSBuf* pTSBuf2 = tsBufCreate(true, TSDB_ORDER_ASC); int32_t step = 30; int32_t num = 1000;