minor changes
This commit is contained in:
parent
26adff1fa5
commit
738e40a37d
|
@ -49,16 +49,16 @@ const int32_t TYPE_BYTES[15] = {
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
static void getStatics_bool(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_bool(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
int8_t *data = (int8_t *)pData;
|
int8_t *data = (int8_t *)pData;
|
||||||
*min = INT64_MAX;
|
*min = INT64_MAX;
|
||||||
*max = INT64_MIN;
|
*max = INT64_MIN;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (data[i] == TSDB_DATA_BOOL_NULL) {
|
if (data[i] == TSDB_DATA_BOOL_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
|
@ -76,9 +76,9 @@ static void getStatics_i8(const void *pData, int32_t numOfRow, int64_t *min, int
|
||||||
*max = INT64_MIN;
|
*max = INT64_MIN;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (((uint8_t)data[i]) == TSDB_DATA_TINYINT_NULL) {
|
if (((uint8_t)data[i]) == TSDB_DATA_TINYINT_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
|
@ -122,9 +122,9 @@ static void getStatics_i16(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
*max = INT64_MIN;
|
*max = INT64_MIN;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (((uint16_t)data[i]) == TSDB_DATA_SMALLINT_NULL) {
|
if (((uint16_t)data[i]) == TSDB_DATA_SMALLINT_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
|
@ -133,15 +133,14 @@ static void getStatics_i16(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
|
|
||||||
DO_STATICS(*sum, *min, *max, *minIndex, *maxIndex, data, i);
|
DO_STATICS(*sum, *min, *max, *minIndex, *maxIndex, data, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_u16(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
static void getStatics_u16(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
uint16_t *data = (uint16_t *)pData;
|
uint16_t *data = (uint16_t *)pData;
|
||||||
uint64_t _min = UINT64_MAX;
|
uint64_t _min = UINT64_MAX;
|
||||||
uint64_t _max = 0;
|
uint64_t _max = 0;
|
||||||
uint64_t _sum = 0;
|
uint64_t _sum = 0;
|
||||||
|
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
@ -169,9 +168,9 @@ static void getStatics_i32(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
*max = INT64_MIN;
|
*max = INT64_MIN;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (((uint32_t)data[i]) == TSDB_DATA_INT_NULL) {
|
if (((uint32_t)data[i]) == TSDB_DATA_INT_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
|
@ -182,12 +181,12 @@ static void getStatics_i32(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_u32(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_u32(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
uint32_t *data = (uint32_t *)pData;
|
uint32_t *data = (uint32_t *)pData;
|
||||||
uint64_t _min = UINT64_MAX;
|
uint64_t _min = UINT64_MAX;
|
||||||
uint64_t _max = 0;
|
uint64_t _max = 0;
|
||||||
uint64_t _sum = 0;
|
uint64_t _sum = 0;
|
||||||
|
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
@ -208,16 +207,16 @@ static void getStatics_u32(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
*sum = _sum;
|
*sum = _sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_i64(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_i64(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
int64_t *data = (int64_t *)pData;
|
int64_t *data = (int64_t *)pData;
|
||||||
*min = INT64_MAX;
|
*min = INT64_MAX;
|
||||||
*max = INT64_MIN;
|
*max = INT64_MIN;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (((uint64_t)data[i]) == TSDB_DATA_BIGINT_NULL) {
|
if (((uint64_t)data[i]) == TSDB_DATA_BIGINT_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
|
@ -228,12 +227,12 @@ static void getStatics_i64(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_u64(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_u64(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
uint64_t *data = (uint64_t *)pData;
|
uint64_t *data = (uint64_t *)pData;
|
||||||
uint64_t _min = UINT64_MAX;
|
uint64_t _min = UINT64_MAX;
|
||||||
uint64_t _max = 0;
|
uint64_t _max = 0;
|
||||||
uint64_t _sum = 0;
|
uint64_t _sum = 0;
|
||||||
|
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
@ -254,91 +253,91 @@ static void getStatics_u64(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
*sum = _sum;
|
*sum = _sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_f(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_f(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
float *data = (float *)pData;
|
float *data = (float *)pData;
|
||||||
float fmin = FLT_MAX;
|
float fmin = FLT_MAX;
|
||||||
float fmax = -FLT_MAX;
|
float fmax = -FLT_MAX;
|
||||||
double dsum = 0;
|
double dsum = 0;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if ((*(uint32_t*)&(data[i])) == TSDB_DATA_FLOAT_NULL) {
|
if ((*(uint32_t *)&(data[i])) == TSDB_DATA_FLOAT_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
float fv = GET_FLOAT_VAL((const char*)&(data[i]));
|
float fv = GET_FLOAT_VAL((const char *)&(data[i]));
|
||||||
|
|
||||||
dsum += fv;
|
dsum += fv;
|
||||||
if (fmin > fv) {
|
if (fmin > fv) {
|
||||||
fmin = fv;
|
fmin = fv;
|
||||||
*minIndex = i;
|
*minIndex = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fmax < fv) {
|
if (fmax < fv) {
|
||||||
fmax = fv;
|
fmax = fv;
|
||||||
*maxIndex = i;
|
*maxIndex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SET_DOUBLE_VAL(sum, dsum);
|
SET_DOUBLE_VAL(sum, dsum);
|
||||||
SET_DOUBLE_VAL(max, fmax);
|
SET_DOUBLE_VAL(max, fmax);
|
||||||
SET_DOUBLE_VAL(min, fmin);
|
SET_DOUBLE_VAL(min, fmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_d(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_d(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
double *data = (double *)pData;
|
double *data = (double *)pData;
|
||||||
double dmin = DBL_MAX;
|
double dmin = DBL_MAX;
|
||||||
double dmax = -DBL_MAX;
|
double dmax = -DBL_MAX;
|
||||||
double dsum = 0;
|
double dsum = 0;
|
||||||
*minIndex = 0;
|
*minIndex = 0;
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
|
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if ((*(uint64_t*)&(data[i])) == TSDB_DATA_DOUBLE_NULL) {
|
if ((*(uint64_t *)&(data[i])) == TSDB_DATA_DOUBLE_NULL) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
double dv = 0;
|
double dv = 0;
|
||||||
dv = GET_DOUBLE_VAL((const char*)&(data[i]));
|
dv = GET_DOUBLE_VAL((const char *)&(data[i]));
|
||||||
dsum += dv;
|
dsum += dv;
|
||||||
if (dmin > dv) {
|
if (dmin > dv) {
|
||||||
dmin = dv;
|
dmin = dv;
|
||||||
*minIndex = i;
|
*minIndex = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dmax < dv) {
|
if (dmax < dv) {
|
||||||
dmax = dv;
|
dmax = dv;
|
||||||
*maxIndex = i;
|
*maxIndex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SET_DOUBLE_PTR(sum, &dsum);
|
SET_DOUBLE_PTR(sum, &dsum);
|
||||||
SET_DOUBLE_PTR(max, &dmax);
|
SET_DOUBLE_PTR(max, &dmax);
|
||||||
SET_DOUBLE_PTR(min, &dmin);
|
SET_DOUBLE_PTR(min, &dmin);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_bin(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_bin(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
const char* data = pData;
|
const char *data = pData;
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (isNull(data, TSDB_DATA_TYPE_BINARY)) {
|
if (isNull(data, TSDB_DATA_TYPE_BINARY)) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
data += varDataTLen(data);
|
data += varDataTLen(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
*sum = 0;
|
*sum = 0;
|
||||||
*max = 0;
|
*max = 0;
|
||||||
*min = 0;
|
*min = 0;
|
||||||
|
@ -346,19 +345,19 @@ static void getStatics_bin(const void *pData, int32_t numOfRow, int64_t *min, in
|
||||||
*maxIndex = 0;
|
*maxIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void getStatics_nchr(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
|
static void getStatics_nchr(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max, int64_t *sum,
|
||||||
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
|
||||||
const char* data = pData;
|
const char *data = pData;
|
||||||
assert(numOfRow <= INT16_MAX);
|
assert(numOfRow <= INT16_MAX);
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRow; ++i) {
|
for (int32_t i = 0; i < numOfRow; ++i) {
|
||||||
if (isNull(data, TSDB_DATA_TYPE_NCHAR)) {
|
if (isNull(data, TSDB_DATA_TYPE_NCHAR)) {
|
||||||
(*numOfNull) += 1;
|
(*numOfNull) += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
data += varDataTLen(data);
|
data += varDataTLen(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
*sum = 0;
|
*sum = 0;
|
||||||
*max = 0;
|
*max = 0;
|
||||||
*min = 0;
|
*min = 0;
|
||||||
|
@ -367,21 +366,28 @@ static void getStatics_nchr(const void *pData, int32_t numOfRow, int64_t *min, i
|
||||||
}
|
}
|
||||||
|
|
||||||
tDataTypeDescriptor tDataTypes[15] = {
|
tDataTypeDescriptor tDataTypes[15] = {
|
||||||
{TSDB_DATA_TYPE_NULL, 6, 1, "NOTYPE", 0, 0, NULL, NULL, NULL},
|
{TSDB_DATA_TYPE_NULL, 6, 1, "NOTYPE", 0, 0, NULL, NULL, NULL},
|
||||||
{TSDB_DATA_TYPE_BOOL, 4, CHAR_BYTES, "BOOL", false, true, tsCompressBool, tsDecompressBool, getStatics_bool},
|
{TSDB_DATA_TYPE_BOOL, 4, CHAR_BYTES, "BOOL", false, true, tsCompressBool, tsDecompressBool, getStatics_bool},
|
||||||
{TSDB_DATA_TYPE_TINYINT, 7, CHAR_BYTES, "TINYINT", INT8_MIN, INT8_MAX, tsCompressTinyint, tsDecompressTinyint, getStatics_i8},
|
{TSDB_DATA_TYPE_TINYINT, 7, CHAR_BYTES, "TINYINT", INT8_MIN, INT8_MAX, tsCompressTinyint, tsDecompressTinyint,
|
||||||
{TSDB_DATA_TYPE_SMALLINT, 8, SHORT_BYTES, "SMALLINT", INT16_MIN, INT16_MAX, tsCompressSmallint, tsDecompressSmallint, getStatics_i16},
|
getStatics_i8},
|
||||||
{TSDB_DATA_TYPE_INT, 3, INT_BYTES, "INT", INT32_MIN, INT32_MAX, tsCompressInt, tsDecompressInt, getStatics_i32},
|
{TSDB_DATA_TYPE_SMALLINT, 8, SHORT_BYTES, "SMALLINT", INT16_MIN, INT16_MAX, tsCompressSmallint,
|
||||||
{TSDB_DATA_TYPE_BIGINT, 6, LONG_BYTES, "BIGINT", INT64_MIN, INT64_MAX, tsCompressBigint, tsDecompressBigint, getStatics_i64},
|
tsDecompressSmallint, getStatics_i16},
|
||||||
{TSDB_DATA_TYPE_FLOAT, 5, FLOAT_BYTES, "FLOAT", 0, 0, tsCompressFloat, tsDecompressFloat, getStatics_f},
|
{TSDB_DATA_TYPE_INT, 3, INT_BYTES, "INT", INT32_MIN, INT32_MAX, tsCompressInt, tsDecompressInt, getStatics_i32},
|
||||||
{TSDB_DATA_TYPE_DOUBLE, 6, DOUBLE_BYTES, "DOUBLE", 0, 0, tsCompressDouble, tsDecompressDouble, getStatics_d},
|
{TSDB_DATA_TYPE_BIGINT, 6, LONG_BYTES, "BIGINT", INT64_MIN, INT64_MAX, tsCompressBigint, tsDecompressBigint,
|
||||||
{TSDB_DATA_TYPE_BINARY, 6, 0, "BINARY", 0, 0, tsCompressString, tsDecompressString, getStatics_bin},
|
getStatics_i64},
|
||||||
{TSDB_DATA_TYPE_TIMESTAMP, 9, LONG_BYTES, "TIMESTAMP", INT64_MIN, INT64_MAX, tsCompressTimestamp, tsDecompressTimestamp, getStatics_i64},
|
{TSDB_DATA_TYPE_FLOAT, 5, FLOAT_BYTES, "FLOAT", 0, 0, tsCompressFloat, tsDecompressFloat, getStatics_f},
|
||||||
{TSDB_DATA_TYPE_NCHAR, 5, 8, "NCHAR", 0, 0, tsCompressString, tsDecompressString, getStatics_nchr},
|
{TSDB_DATA_TYPE_DOUBLE, 6, DOUBLE_BYTES, "DOUBLE", 0, 0, tsCompressDouble, tsDecompressDouble, getStatics_d},
|
||||||
{TSDB_DATA_TYPE_UTINYINT, 16, CHAR_BYTES, "TINYINT UNSIGNED", 0, UINT8_MAX, tsCompressTinyint, tsDecompressTinyint, getStatics_u8},
|
{TSDB_DATA_TYPE_BINARY, 6, 0, "BINARY", 0, 0, tsCompressString, tsDecompressString, getStatics_bin},
|
||||||
{TSDB_DATA_TYPE_USMALLINT, 17, SHORT_BYTES, "SMALLINT UNSIGNED", 0, UINT16_MAX, tsCompressSmallint, tsDecompressSmallint, getStatics_u16},
|
{TSDB_DATA_TYPE_TIMESTAMP, 9, LONG_BYTES, "TIMESTAMP", INT64_MIN, INT64_MAX, tsCompressTimestamp,
|
||||||
{TSDB_DATA_TYPE_UINT, 12, INT_BYTES, "INT UNSIGNED", 0, UINT32_MAX, tsCompressInt, tsDecompressInt, getStatics_u32},
|
tsDecompressTimestamp, getStatics_i64},
|
||||||
{TSDB_DATA_TYPE_UBIGINT, 15, LONG_BYTES, "BIGINT UNSIGNED", 0, UINT64_MAX, tsCompressBigint, tsDecompressBigint, getStatics_u64},
|
{TSDB_DATA_TYPE_NCHAR, 5, 8, "NCHAR", 0, 0, tsCompressString, tsDecompressString, getStatics_nchr},
|
||||||
|
{TSDB_DATA_TYPE_UTINYINT, 16, CHAR_BYTES, "TINYINT UNSIGNED", 0, UINT8_MAX, tsCompressTinyint, tsDecompressTinyint,
|
||||||
|
getStatics_u8},
|
||||||
|
{TSDB_DATA_TYPE_USMALLINT, 17, SHORT_BYTES, "SMALLINT UNSIGNED", 0, UINT16_MAX, tsCompressSmallint,
|
||||||
|
tsDecompressSmallint, getStatics_u16},
|
||||||
|
{TSDB_DATA_TYPE_UINT, 12, INT_BYTES, "INT UNSIGNED", 0, UINT32_MAX, tsCompressInt, tsDecompressInt, getStatics_u32},
|
||||||
|
{TSDB_DATA_TYPE_UBIGINT, 15, LONG_BYTES, "BIGINT UNSIGNED", 0, UINT64_MAX, tsCompressBigint, tsDecompressBigint,
|
||||||
|
getStatics_u64},
|
||||||
};
|
};
|
||||||
|
|
||||||
char tTokenTypeSwitcher[13] = {
|
char tTokenTypeSwitcher[13] = {
|
||||||
|
@ -400,10 +406,10 @@ char tTokenTypeSwitcher[13] = {
|
||||||
TSDB_DATA_TYPE_NCHAR, // TK_NCHAR
|
TSDB_DATA_TYPE_NCHAR, // TK_NCHAR
|
||||||
};
|
};
|
||||||
|
|
||||||
float floatMin = -FLT_MAX, floatMax = FLT_MAX;
|
float floatMin = -FLT_MAX, floatMax = FLT_MAX;
|
||||||
double doubleMin = -DBL_MAX, doubleMax = DBL_MAX;
|
double doubleMin = -DBL_MAX, doubleMax = DBL_MAX;
|
||||||
|
|
||||||
FORCE_INLINE void* getDataMin(int32_t type) {
|
FORCE_INLINE void *getDataMin(int32_t type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TSDB_DATA_TYPE_FLOAT:
|
case TSDB_DATA_TYPE_FLOAT:
|
||||||
return &floatMin;
|
return &floatMin;
|
||||||
|
@ -414,7 +420,7 @@ FORCE_INLINE void* getDataMin(int32_t type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE void* getDataMax(int32_t type) {
|
FORCE_INLINE void *getDataMax(int32_t type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TSDB_DATA_TYPE_FLOAT:
|
case TSDB_DATA_TYPE_FLOAT:
|
||||||
return &floatMax;
|
return &floatMax;
|
||||||
|
@ -425,17 +431,15 @@ FORCE_INLINE void* getDataMax(int32_t type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isValidDataType(int32_t type) {
|
bool isValidDataType(int32_t type) { return type >= TSDB_DATA_TYPE_NULL && type <= TSDB_DATA_TYPE_UBIGINT; }
|
||||||
return type >= TSDB_DATA_TYPE_NULL && type <= TSDB_DATA_TYPE_UBIGINT;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setVardataNull(void* val, int32_t type) {
|
void setVardataNull(void *val, int32_t type) {
|
||||||
if (type == TSDB_DATA_TYPE_BINARY) {
|
if (type == TSDB_DATA_TYPE_BINARY) {
|
||||||
varDataSetLen(val, sizeof(int8_t));
|
varDataSetLen(val, sizeof(int8_t));
|
||||||
*(uint8_t*) varDataVal(val) = TSDB_DATA_BINARY_NULL;
|
*(uint8_t *)varDataVal(val) = TSDB_DATA_BINARY_NULL;
|
||||||
} else if (type == TSDB_DATA_TYPE_NCHAR) {
|
} else if (type == TSDB_DATA_TYPE_NCHAR) {
|
||||||
varDataSetLen(val, sizeof(int32_t));
|
varDataSetLen(val, sizeof(int32_t));
|
||||||
*(uint32_t*) varDataVal(val) = TSDB_DATA_NCHAR_NULL;
|
*(uint32_t *)varDataVal(val) = TSDB_DATA_NCHAR_NULL;
|
||||||
} else {
|
} else {
|
||||||
assert(0);
|
assert(0);
|
||||||
}
|
}
|
||||||
|
@ -533,9 +537,8 @@ static SBinaryNullT nullBinary = {1, TSDB_DATA_BINARY_NULL};
|
||||||
static SNCharNullT nullNchar = {4, TSDB_DATA_NCHAR_NULL};
|
static SNCharNullT nullNchar = {4, TSDB_DATA_NCHAR_NULL};
|
||||||
|
|
||||||
static const void *nullValues[] = {
|
static const void *nullValues[] = {
|
||||||
&nullBool, &nullTinyInt, &nullSmallInt, &nullInt, &nullBigInt,
|
&nullBool, &nullTinyInt, &nullSmallInt, &nullInt, &nullBigInt, &nullFloat, &nullDouble,
|
||||||
&nullFloat, &nullDouble, &nullBinary, &nullBigInt, &nullNchar,
|
&nullBinary, &nullBigInt, &nullNchar, &nullTinyIntu, &nullSmallIntu, &nullIntu, &nullBigIntu,
|
||||||
&nullTinyIntu, &nullSmallIntu, &nullIntu, &nullBigIntu,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const void *getNullValue(int32_t type) {
|
const void *getNullValue(int32_t type) {
|
||||||
|
@ -590,7 +593,7 @@ void operateVal(void *dst, void *s1, void *s2, int32_t optr, int32_t type) {
|
||||||
*((int8_t *)dst) = GET_INT8_VAL(s1) + GET_INT8_VAL(s2);
|
*((int8_t *)dst) = GET_INT8_VAL(s1) + GET_INT8_VAL(s2);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_UTINYINT:
|
case TSDB_DATA_TYPE_UTINYINT:
|
||||||
*((uint8_t *)dst) = GET_UINT8_VAL(s1) + GET_UINT8_VAL(s2);
|
*((uint8_t *)dst) = GET_UINT8_VAL(s1) + GET_UINT8_VAL(s2);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
case TSDB_DATA_TYPE_SMALLINT:
|
||||||
*((int16_t *)dst) = GET_INT16_VAL(s1) + GET_INT16_VAL(s2);
|
*((int16_t *)dst) = GET_INT16_VAL(s1) + GET_INT16_VAL(s2);
|
||||||
|
@ -629,14 +632,14 @@ void operateVal(void *dst, void *s1, void *s2, int32_t optr, int32_t type) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size, void* buf) {
|
void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size, void *buf) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TSDB_DATA_TYPE_INT:
|
case TSDB_DATA_TYPE_INT:
|
||||||
case TSDB_DATA_TYPE_UINT: {
|
case TSDB_DATA_TYPE_UINT: {
|
||||||
TSWAP(*(int32_t *)(pLeft), *(int32_t *)(pRight), int32_t);
|
TSWAP(*(int32_t *)(pLeft), *(int32_t *)(pRight), int32_t);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
case TSDB_DATA_TYPE_BIGINT:
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
case TSDB_DATA_TYPE_UBIGINT:
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP: {
|
case TSDB_DATA_TYPE_TIMESTAMP: {
|
||||||
|
@ -652,19 +655,19 @@ void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size, void* buf
|
||||||
TSWAP(*(int16_t *)(pLeft), *(int16_t *)(pRight), int16_t);
|
TSWAP(*(int16_t *)(pLeft), *(int16_t *)(pRight), int16_t);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
case TSDB_DATA_TYPE_FLOAT: {
|
||||||
TSWAP(*(float *)(pLeft), *(float *)(pRight), float);
|
TSWAP(*(float *)(pLeft), *(float *)(pRight), float);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
case TSDB_DATA_TYPE_BOOL:
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
case TSDB_DATA_TYPE_UTINYINT: {
|
case TSDB_DATA_TYPE_UTINYINT: {
|
||||||
TSWAP(*(int8_t *)(pLeft), *(int8_t *)(pRight), int8_t);
|
TSWAP(*(int8_t *)(pLeft), *(int8_t *)(pRight), int8_t);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
memcpy(buf, pLeft, size);
|
memcpy(buf, pLeft, size);
|
||||||
memcpy(pLeft, pRight, size);
|
memcpy(pLeft, pRight, size);
|
||||||
|
|
|
@ -35,9 +35,9 @@
|
||||||
assert(0); \
|
assert(0); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
int32_t toInteger(const char* z, int32_t n, int32_t base, int64_t* value, bool* isSigned) {
|
int32_t toInteger(const char *z, int32_t n, int32_t base, int64_t *value, bool *isSigned) {
|
||||||
errno = 0;
|
errno = 0;
|
||||||
char* endPtr = NULL;
|
char *endPtr = NULL;
|
||||||
|
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
|
|
||||||
|
@ -63,15 +63,15 @@ int32_t toInteger(const char* z, int32_t n, int32_t base, int64_t* value, bool*
|
||||||
|
|
||||||
*isSigned = specifiedSign || (val <= INT64_MAX);
|
*isSigned = specifiedSign || (val <= INT64_MAX);
|
||||||
if (*isSigned) {
|
if (*isSigned) {
|
||||||
*value = (z[0] == '-')? -val:val;
|
*value = (z[0] == '-') ? -val : val;
|
||||||
} else {
|
} else {
|
||||||
*(uint64_t*) value = val;
|
*(uint64_t *)value = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosVariantCreate(SVariant *pVar, const char* z, int32_t n, int32_t type) {
|
void taosVariantCreate(SVariant *pVar, const char *z, int32_t n, int32_t type) {
|
||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
memset(pVar, 0, sizeof(SVariant));
|
memset(pVar, 0, sizeof(SVariant));
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ void taosVariantCreate(SVariant *pVar, const char* z, int32_t n, int32_t type) {
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
case TSDB_DATA_TYPE_SMALLINT:
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
case TSDB_DATA_TYPE_BIGINT:
|
||||||
case TSDB_DATA_TYPE_INT:{
|
case TSDB_DATA_TYPE_INT: {
|
||||||
bool sign = true;
|
bool sign = true;
|
||||||
|
|
||||||
int32_t base = 10;
|
int32_t base = 10;
|
||||||
|
@ -104,11 +104,11 @@ void taosVariantCreate(SVariant *pVar, const char* z, int32_t n, int32_t type) {
|
||||||
|
|
||||||
ret = toInteger(z, n, base, &pVar->i, &sign);
|
ret = toInteger(z, n, base, &pVar->i, &sign);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
pVar->nType = -1; // -1 means error type
|
pVar->nType = -1; // -1 means error type
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVar->nType = (sign)? TSDB_DATA_TYPE_BIGINT:TSDB_DATA_TYPE_UBIGINT;
|
pVar->nType = (sign) ? TSDB_DATA_TYPE_BIGINT : TSDB_DATA_TYPE_UBIGINT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_DOUBLE:
|
case TSDB_DATA_TYPE_DOUBLE:
|
||||||
|
@ -123,15 +123,15 @@ void taosVariantCreate(SVariant *pVar, const char* z, int32_t n, int32_t type) {
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP: {
|
case TSDB_DATA_TYPE_TIMESTAMP: {
|
||||||
assert(0);
|
assert(0);
|
||||||
pVar->i = taosGetTimestamp(TSDB_TIME_PRECISION_NANO);
|
pVar->i = taosGetTimestamp(TSDB_TIME_PRECISION_NANO);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default: { // nType == 0 means the null value
|
default: { // nType == 0 means the null value
|
||||||
type = TSDB_DATA_TYPE_NULL;
|
type = TSDB_DATA_TYPE_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pVar->nType = type;
|
pVar->nType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,13 +196,13 @@ void taosVariantCreateFromBinary(SVariant *pVar, const char *pz, size_t len, uin
|
||||||
pVar->d = GET_FLOAT_VAL(pz);
|
pVar->d = GET_FLOAT_VAL(pz);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_NCHAR: { // here we get the nchar length from raw binary bits length
|
case TSDB_DATA_TYPE_NCHAR: { // here we get the nchar length from raw binary bits length
|
||||||
size_t lenInwchar = len / TSDB_NCHAR_SIZE;
|
size_t lenInwchar = len / TSDB_NCHAR_SIZE;
|
||||||
|
|
||||||
pVar->wpz = calloc(1, (lenInwchar + 1) * TSDB_NCHAR_SIZE);
|
pVar->wpz = calloc(1, (lenInwchar + 1) * TSDB_NCHAR_SIZE);
|
||||||
memcpy(pVar->wpz, pz, lenInwchar * TSDB_NCHAR_SIZE);
|
memcpy(pVar->wpz, pz, lenInwchar * TSDB_NCHAR_SIZE);
|
||||||
pVar->nLen = (int32_t)len;
|
pVar->nLen = (int32_t)len;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_BINARY: { // todo refactor, extract a method
|
case TSDB_DATA_TYPE_BINARY: { // todo refactor, extract a method
|
||||||
|
@ -211,18 +211,18 @@ void taosVariantCreateFromBinary(SVariant *pVar, const char *pz, size_t len, uin
|
||||||
pVar->nLen = (int32_t)len;
|
pVar->nLen = (int32_t)len;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
pVar->i = GET_INT32_VAL(pz);
|
pVar->i = GET_INT32_VAL(pz);
|
||||||
pVar->nLen = tDataTypes[TSDB_DATA_TYPE_INT].bytes;
|
pVar->nLen = tDataTypes[TSDB_DATA_TYPE_INT].bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVar->nType = type;
|
pVar->nType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosVariantDestroy(SVariant *pVar) {
|
void taosVariantDestroy(SVariant *pVar) {
|
||||||
if (pVar == NULL) return;
|
if (pVar == NULL) return;
|
||||||
|
|
||||||
if (pVar->nType == TSDB_DATA_TYPE_BINARY || pVar->nType == TSDB_DATA_TYPE_NCHAR) {
|
if (pVar->nType == TSDB_DATA_TYPE_BINARY || pVar->nType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
tfree(pVar->pz);
|
tfree(pVar->pz);
|
||||||
pVar->nLen = 0;
|
pVar->nLen = 0;
|
||||||
|
@ -231,8 +231,8 @@ void taosVariantDestroy(SVariant *pVar) {
|
||||||
// NOTE: this is only for string array
|
// NOTE: this is only for string array
|
||||||
if (pVar->nType == TSDB_DATA_TYPE_POINTER_ARRAY) {
|
if (pVar->nType == TSDB_DATA_TYPE_POINTER_ARRAY) {
|
||||||
size_t num = taosArrayGetSize(pVar->arr);
|
size_t num = taosArrayGetSize(pVar->arr);
|
||||||
for(size_t i = 0; i < num; i++) {
|
for (size_t i = 0; i < num; i++) {
|
||||||
void* p = taosArrayGetP(pVar->arr, i);
|
void *p = taosArrayGetP(pVar->arr, i);
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
taosArrayDestroy(pVar->arr);
|
taosArrayDestroy(pVar->arr);
|
||||||
|
@ -250,11 +250,11 @@ bool taosVariantIsValid(SVariant *pVar) {
|
||||||
|
|
||||||
void taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
void taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
||||||
if (pSrc == NULL || pDst == NULL) return;
|
if (pSrc == NULL || pDst == NULL) return;
|
||||||
|
|
||||||
pDst->nType = pSrc->nType;
|
pDst->nType = pSrc->nType;
|
||||||
if (pSrc->nType == TSDB_DATA_TYPE_BINARY || pSrc->nType == TSDB_DATA_TYPE_NCHAR) {
|
if (pSrc->nType == TSDB_DATA_TYPE_BINARY || pSrc->nType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
int32_t len = pSrc->nLen + TSDB_NCHAR_SIZE;
|
int32_t len = pSrc->nLen + TSDB_NCHAR_SIZE;
|
||||||
char* p = realloc(pDst->pz, len);
|
char *p = realloc(pDst->pz, len);
|
||||||
assert(p);
|
assert(p);
|
||||||
|
|
||||||
memset(p, 0, len);
|
memset(p, 0, len);
|
||||||
|
@ -263,28 +263,27 @@ void taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
||||||
memcpy(pDst->pz, pSrc->pz, pSrc->nLen);
|
memcpy(pDst->pz, pSrc->pz, pSrc->nLen);
|
||||||
pDst->nLen = pSrc->nLen;
|
pDst->nLen = pSrc->nLen;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IS_NUMERIC_TYPE(pSrc->nType) || (pSrc->nType == TSDB_DATA_TYPE_BOOL)) {
|
if (IS_NUMERIC_TYPE(pSrc->nType) || (pSrc->nType == TSDB_DATA_TYPE_BOOL)) {
|
||||||
pDst->i = pSrc->i;
|
pDst->i = pSrc->i;
|
||||||
} else if (pSrc->nType == TSDB_DATA_TYPE_POINTER_ARRAY) { // this is only for string array
|
} else if (pSrc->nType == TSDB_DATA_TYPE_POINTER_ARRAY) { // this is only for string array
|
||||||
size_t num = taosArrayGetSize(pSrc->arr);
|
size_t num = taosArrayGetSize(pSrc->arr);
|
||||||
pDst->arr = taosArrayInit(num, sizeof(char*));
|
pDst->arr = taosArrayInit(num, sizeof(char *));
|
||||||
for(size_t i = 0; i < num; i++) {
|
for (size_t i = 0; i < num; i++) {
|
||||||
char* p = (char*)taosArrayGetP(pSrc->arr, i);
|
char *p = (char *)taosArrayGetP(pSrc->arr, i);
|
||||||
char* n = strdup(p);
|
char *n = strdup(p);
|
||||||
taosArrayPush(pDst->arr, &n);
|
taosArrayPush(pDst->arr, &n);
|
||||||
}
|
}
|
||||||
} else if (pSrc->nType == TSDB_DATA_TYPE_VALUE_ARRAY) {
|
} else if (pSrc->nType == TSDB_DATA_TYPE_VALUE_ARRAY) {
|
||||||
size_t num = taosArrayGetSize(pSrc->arr);
|
size_t num = taosArrayGetSize(pSrc->arr);
|
||||||
pDst->arr = taosArrayInit(num, sizeof(int64_t));
|
pDst->arr = taosArrayInit(num, sizeof(int64_t));
|
||||||
pDst->nLen = pSrc->nLen;
|
pDst->nLen = pSrc->nLen;
|
||||||
assert(pSrc->nLen == num);
|
assert(pSrc->nLen == num);
|
||||||
for(size_t i = 0; i < num; i++) {
|
for (size_t i = 0; i < num; i++) {
|
||||||
int64_t *p = taosArrayGet(pSrc->arr, i);
|
int64_t *p = taosArrayGet(pSrc->arr, i);
|
||||||
taosArrayPush(pDst->arr, p);
|
taosArrayPush(pDst->arr, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pDst->nType != TSDB_DATA_TYPE_POINTER_ARRAY && pDst->nType != TSDB_DATA_TYPE_VALUE_ARRAY) {
|
if (pDst->nType != TSDB_DATA_TYPE_POINTER_ARRAY && pDst->nType != TSDB_DATA_TYPE_VALUE_ARRAY) {
|
||||||
|
@ -292,7 +291,7 @@ void taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t taosVariantCompare(const SVariant* p1, const SVariant* p2) {
|
int32_t taosVariantCompare(const SVariant *p1, const SVariant *p2) {
|
||||||
if (p1->nType == TSDB_DATA_TYPE_NULL && p2->nType == TSDB_DATA_TYPE_NULL) {
|
if (p1->nType == TSDB_DATA_TYPE_NULL && p2->nType == TSDB_DATA_TYPE_NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -309,39 +308,39 @@ int32_t taosVariantCompare(const SVariant* p1, const SVariant* p2) {
|
||||||
if (p1->nLen == p2->nLen) {
|
if (p1->nLen == p2->nLen) {
|
||||||
return memcmp(p1->pz, p2->pz, p1->nLen);
|
return memcmp(p1->pz, p2->pz, p1->nLen);
|
||||||
} else {
|
} else {
|
||||||
return p1->nLen > p2->nLen? 1:-1;
|
return p1->nLen > p2->nLen ? 1 : -1;
|
||||||
}
|
}
|
||||||
} else if (p1->nType == TSDB_DATA_TYPE_FLOAT || p1->nType == TSDB_DATA_TYPE_DOUBLE) {
|
} else if (p1->nType == TSDB_DATA_TYPE_FLOAT || p1->nType == TSDB_DATA_TYPE_DOUBLE) {
|
||||||
if (p1->d == p2->d) {
|
if (p1->d == p2->d) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return p1->d > p2->d? 1:-1;
|
return p1->d > p2->d ? 1 : -1;
|
||||||
}
|
}
|
||||||
} else if (IS_UNSIGNED_NUMERIC_TYPE(p1->nType)) {
|
} else if (IS_UNSIGNED_NUMERIC_TYPE(p1->nType)) {
|
||||||
if (p1->u == p2->u) {
|
if (p1->u == p2->u) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return p1->u > p2->u? 1:-1;
|
return p1->u > p2->u ? 1 : -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (p1->i == p2->i) {
|
if (p1->i == p2->i) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return p1->i > p2->i? 1:-1;
|
return p1->i > p2->i ? 1 : -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t taosVariantToString(SVariant *pVar, char *dst) {
|
int32_t taosVariantToString(SVariant *pVar, char *dst) {
|
||||||
if (pVar == NULL || dst == NULL) return 0;
|
if (pVar == NULL || dst == NULL) return 0;
|
||||||
|
|
||||||
switch (pVar->nType) {
|
switch (pVar->nType) {
|
||||||
case TSDB_DATA_TYPE_BINARY: {
|
case TSDB_DATA_TYPE_BINARY: {
|
||||||
int32_t len = sprintf(dst, "\'%s\'", pVar->pz);
|
int32_t len = sprintf(dst, "\'%s\'", pVar->pz);
|
||||||
assert(len <= pVar->nLen + sizeof("\'") * 2); // two more chars
|
assert(len <= pVar->nLen + sizeof("\'") * 2); // two more chars
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_NCHAR: {
|
case TSDB_DATA_TYPE_NCHAR: {
|
||||||
dst[0] = '\'';
|
dst[0] = '\'';
|
||||||
taosUcs4ToMbs(pVar->wpz, (twcslen(pVar->wpz) + 1) * TSDB_NCHAR_SIZE, dst + 1);
|
taosUcs4ToMbs(pVar->wpz, (twcslen(pVar->wpz) + 1) * TSDB_NCHAR_SIZE, dst + 1);
|
||||||
|
@ -350,7 +349,7 @@ int32_t taosVariantToString(SVariant *pVar, char *dst) {
|
||||||
dst[len + 1] = 0;
|
dst[len + 1] = 0;
|
||||||
return len + 1;
|
return len + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
case TSDB_DATA_TYPE_BOOL:
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
case TSDB_DATA_TYPE_SMALLINT:
|
||||||
|
@ -359,7 +358,7 @@ int32_t taosVariantToString(SVariant *pVar, char *dst) {
|
||||||
case TSDB_DATA_TYPE_USMALLINT:
|
case TSDB_DATA_TYPE_USMALLINT:
|
||||||
case TSDB_DATA_TYPE_UINT:
|
case TSDB_DATA_TYPE_UINT:
|
||||||
return sprintf(dst, "%d", (int32_t)pVar->i);
|
return sprintf(dst, "%d", (int32_t)pVar->i);
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
case TSDB_DATA_TYPE_BIGINT:
|
||||||
return sprintf(dst, "%" PRId64, pVar->i);
|
return sprintf(dst, "%" PRId64, pVar->i);
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
case TSDB_DATA_TYPE_UBIGINT:
|
||||||
|
@ -367,7 +366,7 @@ int32_t taosVariantToString(SVariant *pVar, char *dst) {
|
||||||
case TSDB_DATA_TYPE_FLOAT:
|
case TSDB_DATA_TYPE_FLOAT:
|
||||||
case TSDB_DATA_TYPE_DOUBLE:
|
case TSDB_DATA_TYPE_DOUBLE:
|
||||||
return sprintf(dst, "%.9lf", pVar->d);
|
return sprintf(dst, "%.9lf", pVar->d);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -399,27 +398,27 @@ static FORCE_INLINE int32_t wcsconvertToBoolImpl(wchar_t *pstr, int32_t len) {
|
||||||
|
|
||||||
static int32_t toBinary(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
static int32_t toBinary(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
const int32_t INITIAL_ALLOC_SIZE = 40;
|
const int32_t INITIAL_ALLOC_SIZE = 40;
|
||||||
char * pBuf = NULL;
|
char *pBuf = NULL;
|
||||||
|
|
||||||
// it is a in-place convert type for SVariant, local buffer is needed
|
// it is a in-place convert type for SVariant, local buffer is needed
|
||||||
if (*pDest == pVariant->pz) {
|
if (*pDest == pVariant->pz) {
|
||||||
pBuf = calloc(1, INITIAL_ALLOC_SIZE);
|
pBuf = calloc(1, INITIAL_ALLOC_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pVariant->nType == TSDB_DATA_TYPE_NCHAR) {
|
if (pVariant->nType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
size_t newSize = pVariant->nLen * TSDB_NCHAR_SIZE;
|
size_t newSize = pVariant->nLen * TSDB_NCHAR_SIZE;
|
||||||
if (pBuf != NULL) {
|
if (pBuf != NULL) {
|
||||||
if (newSize >= INITIAL_ALLOC_SIZE) {
|
if (newSize >= INITIAL_ALLOC_SIZE) {
|
||||||
pBuf = realloc(pBuf, newSize + 1);
|
pBuf = realloc(pBuf, newSize + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosUcs4ToMbs(pVariant->wpz, (int32_t)newSize, pBuf);
|
taosUcs4ToMbs(pVariant->wpz, (int32_t)newSize, pBuf);
|
||||||
free(pVariant->wpz);
|
free(pVariant->wpz);
|
||||||
pBuf[newSize] = 0;
|
pBuf[newSize] = 0;
|
||||||
} else {
|
} else {
|
||||||
taosUcs4ToMbs(pVariant->wpz, (int32_t)newSize, *pDest);
|
taosUcs4ToMbs(pVariant->wpz, (int32_t)newSize, *pDest);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (IS_SIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
if (IS_SIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
||||||
sprintf(pBuf == NULL ? *pDest : pBuf, "%" PRId64, pVariant->i);
|
sprintf(pBuf == NULL ? *pDest : pBuf, "%" PRId64, pVariant->i);
|
||||||
|
@ -431,26 +430,26 @@ static int32_t toBinary(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
setNull(pBuf == NULL ? *pDest : pBuf, TSDB_DATA_TYPE_BINARY, 0);
|
setNull(pBuf == NULL ? *pDest : pBuf, TSDB_DATA_TYPE_BINARY, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pBuf != NULL) {
|
if (pBuf != NULL) {
|
||||||
*pDest = pBuf;
|
*pDest = pBuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
*pDestSize = (int32_t)strlen(*pDest);
|
*pDestSize = (int32_t)strlen(*pDest);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t toNchar(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
static int32_t toNchar(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
char tmpBuf[40] = {0};
|
char tmpBuf[40] = {0};
|
||||||
|
|
||||||
char * pDst = tmpBuf;
|
char *pDst = tmpBuf;
|
||||||
int32_t nLen = 0;
|
int32_t nLen = 0;
|
||||||
|
|
||||||
// convert the number to string, than convert it to wchar string.
|
// convert the number to string, than convert it to wchar string.
|
||||||
if (IS_SIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
if (IS_SIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
||||||
nLen = sprintf(pDst, "%" PRId64, pVariant->i);
|
nLen = sprintf(pDst, "%" PRId64, pVariant->i);
|
||||||
} else if (IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
} else if (IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
||||||
nLen = sprintf(pDst, "%"PRIu64, pVariant->u);
|
nLen = sprintf(pDst, "%" PRIu64, pVariant->u);
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_DOUBLE || pVariant->nType == TSDB_DATA_TYPE_FLOAT) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_DOUBLE || pVariant->nType == TSDB_DATA_TYPE_FLOAT) {
|
||||||
nLen = sprintf(pDst, "%lf", pVariant->d);
|
nLen = sprintf(pDst, "%lf", pVariant->d);
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_BINARY) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_BINARY) {
|
||||||
|
@ -459,10 +458,10 @@ static int32_t toNchar(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_BOOL) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_BOOL) {
|
||||||
nLen = sprintf(pDst, "%s", (pVariant->i == TSDB_TRUE) ? "TRUE" : "FALSE");
|
nLen = sprintf(pDst, "%s", (pVariant->i == TSDB_TRUE) ? "TRUE" : "FALSE");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*pDest == pVariant->pz) {
|
if (*pDest == pVariant->pz) {
|
||||||
wchar_t *pWStr = calloc(1, (nLen + 1) * TSDB_NCHAR_SIZE);
|
wchar_t *pWStr = calloc(1, (nLen + 1) * TSDB_NCHAR_SIZE);
|
||||||
bool ret = taosMbsToUcs4(pDst, nLen, (char *)pWStr, (nLen + 1) * TSDB_NCHAR_SIZE, NULL);
|
bool ret = taosMbsToUcs4(pDst, nLen, (char *)pWStr, (nLen + 1) * TSDB_NCHAR_SIZE, NULL);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
tfree(pWStr);
|
tfree(pWStr);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -472,14 +471,14 @@ static int32_t toNchar(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
if (pVariant->nType == TSDB_DATA_TYPE_BINARY) {
|
if (pVariant->nType == TSDB_DATA_TYPE_BINARY) {
|
||||||
free(pVariant->wpz);
|
free(pVariant->wpz);
|
||||||
}
|
}
|
||||||
|
|
||||||
pVariant->wpz = pWStr;
|
pVariant->wpz = pWStr;
|
||||||
*pDestSize = twcslen(pVariant->wpz);
|
*pDestSize = twcslen(pVariant->wpz);
|
||||||
|
|
||||||
// shrink the allocate memory, no need to check here.
|
// shrink the allocate memory, no need to check here.
|
||||||
char* tmp = realloc(pVariant->wpz, (*pDestSize + 1)*TSDB_NCHAR_SIZE);
|
char *tmp = realloc(pVariant->wpz, (*pDestSize + 1) * TSDB_NCHAR_SIZE);
|
||||||
assert(tmp != NULL);
|
assert(tmp != NULL);
|
||||||
|
|
||||||
pVariant->wpz = (wchar_t *)tmp;
|
pVariant->wpz = (wchar_t *)tmp;
|
||||||
} else {
|
} else {
|
||||||
int32_t output = 0;
|
int32_t output = 0;
|
||||||
|
@ -493,21 +492,22 @@ static int32_t toNchar(SVariant *pVariant, char **pDest, int32_t *pDestSize) {
|
||||||
*pDestSize = output;
|
*pDestSize = output;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE int32_t convertToDouble(char *pStr, int32_t len, double *value) {
|
static FORCE_INLINE int32_t convertToDouble(char *pStr, int32_t len, double *value) {
|
||||||
// SToken stoken = {.z = pStr, .n = len};
|
// SToken stoken = {.z = pStr, .n = len};
|
||||||
// if (TK_ILLEGAL == tGetNumericStringType(&stoken)) {
|
// if (TK_ILLEGAL == tGetNumericStringType(&stoken)) {
|
||||||
// return -1;
|
// return -1;
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// *value = strtod(pStr, NULL);
|
// *value = strtod(pStr, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE int32_t convertToInteger(SVariant *pVariant, int64_t *result, int32_t type, bool issigned, bool releaseVariantPtr, bool *converted) {
|
static FORCE_INLINE int32_t convertToInteger(SVariant *pVariant, int64_t *result, int32_t type, bool issigned,
|
||||||
|
bool releaseVariantPtr, bool *converted) {
|
||||||
if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
||||||
setNull((char *)result, type, tDataTypes[type].bytes);
|
setNull((char *)result, type, tDataTypes[type].bytes);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -645,7 +645,7 @@ static int32_t convertToBool(SVariant *pVariant, int64_t *pDest) {
|
||||||
if ((ret = convertToBoolImpl(pVariant->pz, pVariant->nLen)) < 0) {
|
if ((ret = convertToBoolImpl(pVariant->pz, pVariant->nLen)) < 0) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
*pDest = ret;
|
*pDest = ret;
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_NCHAR) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
|
@ -656,7 +656,7 @@ static int32_t convertToBool(SVariant *pVariant, int64_t *pDest) {
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
||||||
*pDest = TSDB_DATA_BOOL_NULL;
|
*pDest = TSDB_DATA_BOOL_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(*pDest == TSDB_TRUE || *pDest == TSDB_FALSE || *pDest == TSDB_DATA_BOOL_NULL);
|
assert(*pDest == TSDB_TRUE || *pDest == TSDB_FALSE || *pDest == TSDB_DATA_BOOL_NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -665,11 +665,12 @@ static int32_t convertToBool(SVariant *pVariant, int64_t *pDest) {
|
||||||
* transfer data from variant serve as the implicit data conversion: from input sql string pVariant->nType
|
* transfer data from variant serve as the implicit data conversion: from input sql string pVariant->nType
|
||||||
* to column type defined in schema
|
* to column type defined in schema
|
||||||
*/
|
*/
|
||||||
int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool includeLengthPrefix, bool *converted, char *extInfo) {
|
int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool includeLengthPrefix, bool *converted,
|
||||||
|
char *extInfo) {
|
||||||
if (converted) {
|
if (converted) {
|
||||||
*converted = false;
|
*converted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pVariant == NULL || (pVariant->nType != 0 && !isValidDataType(pVariant->nType))) {
|
if (pVariant == NULL || (pVariant->nType != 0 && !isValidDataType(pVariant->nType))) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -686,25 +687,25 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
*(int8_t *)payload = (int8_t)result;
|
*(int8_t *)payload = (int8_t)result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_TINYINT: {
|
case TSDB_DATA_TYPE_TINYINT: {
|
||||||
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
||||||
SET_EXT_INFO(converted, result, INT8_MIN + 1, INT8_MAX, extInfo);
|
SET_EXT_INFO(converted, result, INT8_MIN + 1, INT8_MAX, extInfo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*((int8_t *)payload) = (int8_t) result;
|
*((int8_t *)payload) = (int8_t)result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_UTINYINT: {
|
case TSDB_DATA_TYPE_UTINYINT: {
|
||||||
if (convertToInteger(pVariant, &result, type, false, false, converted) < 0) {
|
if (convertToInteger(pVariant, &result, type, false, false, converted) < 0) {
|
||||||
SET_EXT_INFO(converted, result, 0, UINT8_MAX - 1, extInfo);
|
SET_EXT_INFO(converted, result, 0, UINT8_MAX - 1, extInfo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*((uint8_t *)payload) = (uint8_t) result;
|
*((uint8_t *)payload) = (uint8_t)result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_SMALLINT: {
|
case TSDB_DATA_TYPE_SMALLINT: {
|
||||||
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
||||||
SET_EXT_INFO(converted, result, INT16_MIN + 1, INT16_MAX, extInfo);
|
SET_EXT_INFO(converted, result, INT16_MIN + 1, INT16_MAX, extInfo);
|
||||||
|
@ -722,7 +723,7 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
*((uint16_t *)payload) = (uint16_t)result;
|
*((uint16_t *)payload) = (uint16_t)result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_INT: {
|
case TSDB_DATA_TYPE_INT: {
|
||||||
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
||||||
SET_EXT_INFO(converted, result, INT32_MIN + 1, INT32_MAX, extInfo);
|
SET_EXT_INFO(converted, result, INT32_MIN + 1, INT32_MAX, extInfo);
|
||||||
|
@ -740,7 +741,7 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
*((uint32_t *)payload) = (uint32_t)result;
|
*((uint32_t *)payload) = (uint32_t)result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_BIGINT: {
|
case TSDB_DATA_TYPE_BIGINT: {
|
||||||
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
if (convertToInteger(pVariant, &result, type, true, false, converted) < 0) {
|
||||||
SET_EXT_INFO(converted, (int64_t)result, INT64_MIN + 1, INT64_MAX, extInfo);
|
SET_EXT_INFO(converted, (int64_t)result, INT64_MIN + 1, INT64_MAX, extInfo);
|
||||||
|
@ -775,19 +776,20 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
if (converted) {
|
if (converted) {
|
||||||
*converted = true;
|
*converted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value > FLT_MAX || value < -FLT_MAX) {
|
if (value > FLT_MAX || value < -FLT_MAX) {
|
||||||
SET_EXT_INFO(converted, value, -FLT_MAX, FLT_MAX, extInfo);
|
SET_EXT_INFO(converted, value, -FLT_MAX, FLT_MAX, extInfo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
SET_FLOAT_VAL(payload, value);
|
SET_FLOAT_VAL(payload, value);
|
||||||
}
|
}
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_BOOL || IS_SIGNED_NUMERIC_TYPE(pVariant->nType) || IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_BOOL || IS_SIGNED_NUMERIC_TYPE(pVariant->nType) ||
|
||||||
|
IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
||||||
if (converted) {
|
if (converted) {
|
||||||
*converted = true;
|
*converted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pVariant->i > FLT_MAX || pVariant->i < -FLT_MAX) {
|
if (pVariant->i > FLT_MAX || pVariant->i < -FLT_MAX) {
|
||||||
SET_EXT_INFO(converted, pVariant->i, -FLT_MAX, FLT_MAX, extInfo);
|
SET_EXT_INFO(converted, pVariant->i, -FLT_MAX, FLT_MAX, extInfo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -797,12 +799,12 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
if (converted) {
|
if (converted) {
|
||||||
*converted = true;
|
*converted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pVariant->d > FLT_MAX || pVariant->d < -FLT_MAX) {
|
if (pVariant->d > FLT_MAX || pVariant->d < -FLT_MAX) {
|
||||||
SET_EXT_INFO(converted, pVariant->d, -FLT_MAX, FLT_MAX, extInfo);
|
SET_EXT_INFO(converted, pVariant->d, -FLT_MAX, FLT_MAX, extInfo);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SET_FLOAT_VAL(payload, pVariant->d);
|
SET_FLOAT_VAL(payload, pVariant->d);
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
||||||
*((uint32_t *)payload) = TSDB_DATA_FLOAT_NULL;
|
*((uint32_t *)payload) = TSDB_DATA_FLOAT_NULL;
|
||||||
|
@ -831,7 +833,8 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
|
|
||||||
SET_DOUBLE_VAL(payload, value);
|
SET_DOUBLE_VAL(payload, value);
|
||||||
}
|
}
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_BOOL || IS_SIGNED_NUMERIC_TYPE(pVariant->nType) || IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_BOOL || IS_SIGNED_NUMERIC_TYPE(pVariant->nType) ||
|
||||||
|
IS_UNSIGNED_NUMERIC_TYPE(pVariant->nType)) {
|
||||||
SET_DOUBLE_VAL(payload, pVariant->i);
|
SET_DOUBLE_VAL(payload, pVariant->i);
|
||||||
} else if (IS_FLOAT_TYPE(pVariant->nType)) {
|
} else if (IS_FLOAT_TYPE(pVariant->nType)) {
|
||||||
SET_DOUBLE_VAL(payload, pVariant->d);
|
SET_DOUBLE_VAL(payload, pVariant->d);
|
||||||
|
@ -847,11 +850,11 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_BINARY: {
|
case TSDB_DATA_TYPE_BINARY: {
|
||||||
if (!includeLengthPrefix) {
|
if (!includeLengthPrefix) {
|
||||||
if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
if (pVariant->nType == TSDB_DATA_TYPE_NULL) {
|
||||||
*(uint8_t*) payload = TSDB_DATA_BINARY_NULL;
|
*(uint8_t *)payload = TSDB_DATA_BINARY_NULL;
|
||||||
} else {
|
} else {
|
||||||
if (pVariant->nType != TSDB_DATA_TYPE_BINARY) {
|
if (pVariant->nType != TSDB_DATA_TYPE_BINARY) {
|
||||||
toBinary(pVariant, &payload, &pVariant->nLen);
|
toBinary(pVariant, &payload, &pVariant->nLen);
|
||||||
|
@ -918,11 +921,11 @@ int32_t tVariantDumpEx(SVariant *pVariant, char *payload, int16_t type, bool inc
|
||||||
assert(p == varDataVal(payload));
|
assert(p == varDataVal(payload));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -944,13 +947,13 @@ int32_t taosVariantTypeSetType(SVariant *pVariant, char type) {
|
||||||
if (pVariant == NULL || pVariant->nType == 0) { // value is not set
|
if (pVariant == NULL || pVariant->nType == 0) { // value is not set
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TSDB_DATA_TYPE_BOOL: { // bool
|
case TSDB_DATA_TYPE_BOOL: { // bool
|
||||||
if (convertToBool(pVariant, &pVariant->i) < 0) {
|
if (convertToBool(pVariant, &pVariant->i) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVariant->nType = type;
|
pVariant->nType = type;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -971,7 +974,7 @@ int32_t taosVariantTypeSetType(SVariant *pVariant, char type) {
|
||||||
free(pVariant->pz);
|
free(pVariant->pz);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pVariant->pz);
|
free(pVariant->pz);
|
||||||
pVariant->d = v;
|
pVariant->d = v;
|
||||||
} else if (pVariant->nType == TSDB_DATA_TYPE_NCHAR) {
|
} else if (pVariant->nType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
|
@ -981,14 +984,14 @@ int32_t taosVariantTypeSetType(SVariant *pVariant, char type) {
|
||||||
free(pVariant->pz);
|
free(pVariant->pz);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(pVariant->pz);
|
free(pVariant->pz);
|
||||||
pVariant->d = v;
|
pVariant->d = v;
|
||||||
} else if (pVariant->nType >= TSDB_DATA_TYPE_BOOL && pVariant->nType <= TSDB_DATA_TYPE_BIGINT) {
|
} else if (pVariant->nType >= TSDB_DATA_TYPE_BOOL && pVariant->nType <= TSDB_DATA_TYPE_BIGINT) {
|
||||||
double tmp = (double) pVariant->i;
|
double tmp = (double)pVariant->i;
|
||||||
pVariant->d = tmp;
|
pVariant->d = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVariant->nType = TSDB_DATA_TYPE_DOUBLE;
|
pVariant->nType = TSDB_DATA_TYPE_DOUBLE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1009,6 +1012,6 @@ int32_t taosVariantTypeSetType(SVariant *pVariant, char type) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Loading…
Reference in New Issue