diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 33cce621d5..aa750a291b 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -126,7 +126,7 @@ int32_t tsdbRowCompareWithoutVersion(const void *p1, const void *p2); int32_t tsdbRowKeyCmpr(const STsdbRowKey *key1, const STsdbRowKey *key2); void tsdbRowGetKey(TSDBROW *row, STsdbRowKey *key); void tColRowGetKey(SBlockData *pBlock, int32_t irow, SRowKey *key); -int32_t tRowKeyAssign(SRowKey *pDst, SRowKey *pSrc); + // STSDBRowIter int32_t tsdbRowIterOpen(STSDBRowIter *pIter, TSDBROW *pRow, STSchema *pTSchema); diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index 33a26ab3d5..8abdfaac6a 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -124,7 +124,7 @@ int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { if (p1->pks[0].val == p2->pks[0].val) { return 0; } else { - return p1->pks[0].val > p2->pks[0].val? 1:-1; + return tValueCompare(&p1->pks[0], &p2->pks[0]); } } } diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c index c805d2f93f..27b7f3edbe 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c @@ -136,20 +136,51 @@ int32_t initRowKey(SRowKey* pKey, int64_t ts, int32_t numOfPks, int32_t type, in if (numOfPks > 0) { pKey->pks[0].type = type; - if (IS_NUMERIC_TYPE(pKey->pks[0].type)) { + + if (IS_NUMERIC_TYPE(type)) { if (asc) { - switch(pKey->pks[0].type) { - case TSDB_DATA_TYPE_BIGINT:pKey->pks[0].val = INT64_MIN;break; - case TSDB_DATA_TYPE_INT:pKey->pks[0].val = INT32_MIN;break; - case TSDB_DATA_TYPE_SMALLINT:pKey->pks[0].val = INT16_MIN;break; - case TSDB_DATA_TYPE_TINYINT:pKey->pks[0].val = INT8_MIN;break; + switch(type) { + case TSDB_DATA_TYPE_BIGINT: { + pKey->pks[0].val = INT64_MIN; + break; + } + case TSDB_DATA_TYPE_INT:{ + int32_t min = INT32_MIN; + memcpy(&pKey->pks[0].val, &min, tDataTypes[type].bytes); + break; + } + case TSDB_DATA_TYPE_SMALLINT:{ + int16_t min = INT16_MIN; + memcpy(&pKey->pks[0].val, &min, tDataTypes[type].bytes); + break; + } + case TSDB_DATA_TYPE_TINYINT:{ + int8_t min = INT8_MIN; + memcpy(&pKey->pks[0].val, &min, tDataTypes[type].bytes); + break; + } + case TSDB_DATA_TYPE_UTINYINT: + case TSDB_DATA_TYPE_USMALLINT: + case TSDB_DATA_TYPE_UINT: + case TSDB_DATA_TYPE_UBIGINT: { + pKey->pks[0].val = 0; + break; + } + default: + ASSERT(0); } } else { - switch(pKey->pks[0].type) { + switch(type) { case TSDB_DATA_TYPE_BIGINT:pKey->pks[0].val = INT64_MAX;break; case TSDB_DATA_TYPE_INT:pKey->pks[0].val = INT32_MAX;break; case TSDB_DATA_TYPE_SMALLINT:pKey->pks[0].val = INT16_MAX;break; case TSDB_DATA_TYPE_TINYINT:pKey->pks[0].val = INT8_MAX;break; + case TSDB_DATA_TYPE_UBIGINT:pKey->pks[0].val = UINT64_MAX;break; + case TSDB_DATA_TYPE_UINT:pKey->pks[0].val = UINT32_MAX;break; + case TSDB_DATA_TYPE_USMALLINT:pKey->pks[0].val = UINT16_MAX;break; + case TSDB_DATA_TYPE_UTINYINT:pKey->pks[0].val = UINT8_MAX;break; + default: + ASSERT(0); } } } else {