提交 83ae535c 编写于 作者: wmmhello's avatar wmmhello

support describe JSON NCHAR

上级 241b64c9
......@@ -85,9 +85,20 @@ static int32_t tscSetValueToResObj(SSqlObj *pSql, int32_t rowLen) {
pField = tscFieldInfoGetField(&pQueryInfo->fieldsInfo, 1);
dst = pRes->data + tscFieldInfoGetOffset(pQueryInfo, 1) * totalNumOfRows + pField->bytes * i;
STR_WITH_MAXSIZE_TO_VARSTR(dst, type, pField->bytes);
char *postfix = NULL;
if (pSchema[i].type == TSDB_DATA_TYPE_JSON && JSON_TYPE_BINARY){
postfix = " BINARY";
}
else if(pSchema[i].type == TSDB_DATA_TYPE_JSON && JSON_TYPE_NCHAR) {
postfix = " NCHAR";
}
if(postfix){
strncpy(varDataVal(dst), postfix, pField->bytes-varDataTLen(dst));
varDataSetLen(dst, varDataLen(dst) + strlen(postfix));
}
int32_t bytes = pSchema[i].bytes;
if (pSchema[i].type == TSDB_DATA_TYPE_BINARY || (pSchema[i].type == TSDB_DATA_TYPE_JSON && JSON_TYPE_BINARY)){
bytes -= VARSTR_HEADER_SIZE;
......
......@@ -17,6 +17,7 @@
#include "ttype.h"
#include "ttokendef.h"
#include "tscompression.h"
#include "tglobal.h"
const int32_t TYPE_BYTES[16] = {
-1, // TSDB_DATA_TYPE_NULL
......@@ -368,6 +369,16 @@ static void getStatics_nchr(const void *pData, int32_t numOfRow, int64_t *min, i
*maxIndex = 0;
}
static void getStatics_json(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
if (JSON_TYPE_NCHAR) {
getStatics_nchr(pData, numOfRow, min, max, sum, minIndex, maxIndex, numOfNull);
}
else{
getStatics_bin(pData, numOfRow, min, max, sum, minIndex, maxIndex, numOfNull);
}
}
tDataTypeDescriptor tDataTypes[16] = {
{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},
......@@ -384,7 +395,7 @@ tDataTypeDescriptor tDataTypes[16] = {
{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},
{TSDB_DATA_TYPE_JSON, 4, 0, "JSON", 0, 0, tsCompressString, tsDecompressString, getStatics_nchr},
{TSDB_DATA_TYPE_JSON, 4, 0, "JSON", 0, 0, tsCompressString, tsDecompressString, getStatics_json},
};
char tTokenTypeSwitcher[13] = {
......
......@@ -46,7 +46,7 @@ typedef void **TAOS_ROW;
#define TSDB_DATA_TYPE_USMALLINT 12 // 2 bytes
#define TSDB_DATA_TYPE_UINT 13 // 4 bytes
#define TSDB_DATA_TYPE_UBIGINT 14 // 8 bytes
#define TSDB_DATA_TYPE_JSON 15
#define TSDB_DATA_TYPE_JSON 15 // json string
typedef enum {
TSDB_OPTION_LOCALE,
......
......@@ -189,7 +189,7 @@ typedef struct tDataTypeDescriptor {
int (*decompFunc)(const char *const input, int compressedSize, const int nelements, char *const output,
int outputSize, char algorithm, char *const buffer, int bufferSize);
void (*statisFunc)(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);
} tDataTypeDescriptor;
extern tDataTypeDescriptor tDataTypes[16];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册