fix: sColumnOption->json

This commit is contained in:
factosea 2024-03-15 13:56:42 +08:00
parent ec227180e1
commit aaff23b4b8
4 changed files with 5 additions and 21 deletions

View File

@ -177,10 +177,8 @@ typedef struct SColumnDefNode {
ENodeType type; ENodeType type;
char colName[TSDB_COL_NAME_LEN]; char colName[TSDB_COL_NAME_LEN];
SDataType dataType; SDataType dataType;
char comments[TSDB_TB_COMMENT_LEN];
SColumnOptions* pOptions; SColumnOptions* pOptions;
bool sma; bool sma;
bool is_pk;
} SColumnDefNode; } SColumnDefNode;
typedef struct SCreateTableStmt { typedef struct SCreateTableStmt {

View File

@ -4704,7 +4704,7 @@ static const char* jkColumnDefColName = "ColName";
static const char* jkColumnDefDataType = "DataType"; static const char* jkColumnDefDataType = "DataType";
static const char* jkColumnDefComments = "Comments"; static const char* jkColumnDefComments = "Comments";
static const char* jkColumnDefSma = "Sma"; static const char* jkColumnDefSma = "Sma";
static const char* jkColumnDefIsPK = "IsPK"; static const char* jkColumnDefOptions = "ColumnOptions";
static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) { static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
const SColumnDefNode* pNode = (const SColumnDefNode*)pObj; const SColumnDefNode* pNode = (const SColumnDefNode*)pObj;
@ -4713,14 +4713,11 @@ static int32_t columnDefNodeToJson(const void* pObj, SJson* pJson) {
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType); code = tjsonAddObject(pJson, jkColumnDefDataType, dataTypeToJson, &pNode->dataType);
} }
if (TSDB_CODE_SUCCESS == code) {
code = tjsonAddStringToObject(pJson, jkColumnDefComments, pNode->comments);
}
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma); code = tjsonAddBoolToObject(pJson, jkColumnDefSma, pNode->sma);
} }
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = tjsonAddBoolToObject(pJson, jkColumnDefIsPK, pNode->is_pk); code = tjsonAddObject(pJson, jkColumnDefOptions, nodeToJson, pNode->pOptions);
} }
return code; return code;
@ -4733,14 +4730,11 @@ static int32_t jsonToColumnDefNode(const SJson* pJson, void* pObj) {
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType); code = tjsonToObject(pJson, jkColumnDefDataType, jsonToDataType, &pNode->dataType);
} }
if (TSDB_CODE_SUCCESS == code) {
code = tjsonGetStringValue(pJson, jkColumnDefComments, pNode->comments);
}
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma); code = tjsonGetBoolValue(pJson, jkColumnDefSma, &pNode->sma);
} }
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
code = tjsonGetBoolValue(pJson, jkColumnDefIsPK, &pNode->is_pk); code = jsonToNodeObject(pJson, jkColumnDefOptions, (SNode**)&pNode->pOptions);
} }
return code; return code;
} }

View File

@ -1555,8 +1555,6 @@ SNode* createColumnDefNode(SAstCreateContext* pCxt, SToken* pColName, SDataType
pCol->dataType = dataType; pCol->dataType = dataType;
pCol->pOptions = (SColumnOptions*)pNode; pCol->pOptions = (SColumnOptions*)pNode;
pCol->sma = true; pCol->sma = true;
// pNode equals to NULL means that the column is a tag.
pCol->is_pk = (SColumnOptions*)pNode ? ((SColumnOptions*)pNode)->bPrimaryKey : false;
return (SNode*)pCol; return (SNode*)pCol;
} }

View File

@ -5808,9 +5808,6 @@ static int32_t tagDefNodeToField(SNodeList* pList, SArray** pArray) {
if (pCol->sma) { if (pCol->sma) {
field.flags |= COL_SMA_ON; field.flags |= COL_SMA_ON;
} }
if (pCol->is_pk) {
field.flags |= COL_IS_KEY;
}
taosArrayPush(*pArray, &field); taosArrayPush(*pArray, &field);
} }
return TSDB_CODE_SUCCESS; return TSDB_CODE_SUCCESS;
@ -5910,9 +5907,6 @@ static int32_t checkTableTagsSchema(STranslateContext* pCxt, SHashObj* pHash, SN
if (NULL != taosHashGet(pHash, pTag->colName, len)) { if (NULL != taosHashGet(pHash, pTag->colName, len)) {
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_DUPLICATED_COLUMN); code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_DUPLICATED_COLUMN);
} }
if (TSDB_CODE_SUCCESS == code && pTag->is_pk) {
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY, pTag->colName);
}
if (TSDB_CODE_SUCCESS == code && pTag->dataType.type == TSDB_DATA_TYPE_JSON && ntags > 1) { if (TSDB_CODE_SUCCESS == code && pTag->dataType.type == TSDB_DATA_TYPE_JSON && ntags > 1) {
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG); code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_ONLY_ONE_JSON_TAG);
} }
@ -5969,7 +5963,7 @@ static int32_t checkTableColsSchema(STranslateContext* pCxt, SHashObj* pHash, in
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_FIRST_COLUMN); code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_FIRST_COLUMN);
} }
} }
if (TSDB_CODE_SUCCESS == code && pCol->is_pk && colIndex != 1) { if (TSDB_CODE_SUCCESS == code && pCol->pOptions && pCol->pOptions->bPrimaryKey && colIndex != 1) {
code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_SECOND_COL_PK); code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_SECOND_COL_PK);
} }
if (TSDB_CODE_SUCCESS == code && pCol->dataType.type == TSDB_DATA_TYPE_JSON) { if (TSDB_CODE_SUCCESS == code && pCol->dataType.type == TSDB_DATA_TYPE_JSON) {
@ -6193,7 +6187,7 @@ static void toSchema(const SColumnDefNode* pCol, col_id_t colId, SSchema* pSchem
if (pCol->sma) { if (pCol->sma) {
flags |= COL_SMA_ON; flags |= COL_SMA_ON;
} }
if (pCol->is_pk) { if (pCol->pOptions && pCol->pOptions->bPrimaryKey) {
flags |= COL_IS_KEY; flags |= COL_IS_KEY;
} }
pSchema->colId = colId; pSchema->colId = colId;