TD-803: if non-existing columns as NULL
This commit is contained in:
parent
13f8b063e5
commit
b1a4752b9f
|
@ -5664,7 +5664,6 @@ int32_t doCheckForCreateFromStable(SSqlObj* pSql, SSqlInfo* pInfo) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
//pTag->dataLen = tagVal - pTag->data;
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -464,6 +464,28 @@ void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t nullBool = TSDB_DATA_BOOL_NULL;
|
||||||
|
static uint8_t nullTinyInt = TSDB_DATA_TINYINT_NULL;
|
||||||
|
static uint16_t nullSmallInt = TSDB_DATA_SMALLINT_NULL;
|
||||||
|
static uint32_t nullInt = TSDB_DATA_INT_NULL;
|
||||||
|
static uint64_t nullBigInt = TSDB_DATA_BIGINT_NULL;
|
||||||
|
static uint32_t nullFloat = TSDB_DATA_FLOAT_NULL;
|
||||||
|
static uint64_t nullDouble = TSDB_DATA_DOUBLE_NULL;
|
||||||
|
static struct {
|
||||||
|
tstr str;
|
||||||
|
int32_t pad;
|
||||||
|
} nullBinary = {.str = {.len = 1}, .pad = 0}, nullNchar = {.str = {.len = 4}, .pad = 0};
|
||||||
|
|
||||||
|
static void *nullValues[] = {
|
||||||
|
&nullBool, &nullTinyInt, &nullSmallInt, &nullInt, &nullBigInt,
|
||||||
|
&nullFloat, &nullDouble, &nullBinary, &nullBigInt, &nullNchar,
|
||||||
|
};
|
||||||
|
|
||||||
|
void *getNullValue(int32_t type) {
|
||||||
|
assert(type >= TSDB_DATA_TYPE_BOOL && type <= TSDB_DATA_TYPE_NCHAR);
|
||||||
|
return nullValues[type - 1];
|
||||||
|
}
|
||||||
|
|
||||||
void assignVal(char *val, const char *src, int32_t len, int32_t type) {
|
void assignVal(char *val, const char *src, int32_t len, int32_t type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TSDB_DATA_TYPE_INT: {
|
case TSDB_DATA_TYPE_INT: {
|
||||||
|
|
|
@ -165,6 +165,7 @@ bool isNull(const char *val, int32_t type);
|
||||||
void setVardataNull(char* val, int32_t type);
|
void setVardataNull(char* val, int32_t type);
|
||||||
void setNull(char *val, int32_t type, int32_t bytes);
|
void setNull(char *val, int32_t type, int32_t bytes);
|
||||||
void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems);
|
void setNullN(char *val, int32_t type, int32_t bytes, int32_t numOfElems);
|
||||||
|
void* getNullValue(int32_t type);
|
||||||
|
|
||||||
void assignVal(char *val, const char *src, int32_t len, int32_t type);
|
void assignVal(char *val, const char *src, int32_t len, int32_t type);
|
||||||
void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
|
void tsDataSwap(void *pLeft, void *pRight, int32_t type, int32_t size);
|
||||||
|
|
|
@ -604,6 +604,10 @@ static char *getTagIndexKey(const void *pData) {
|
||||||
STSchema *pSchema = tsdbGetTableTagSchema(pTable);
|
STSchema *pSchema = tsdbGetTableTagSchema(pTable);
|
||||||
STColumn *pCol = schemaColAt(pSchema, DEFAULT_TAG_INDEX_COLUMN);
|
STColumn *pCol = schemaColAt(pSchema, DEFAULT_TAG_INDEX_COLUMN);
|
||||||
void * res = tdGetKVRowValOfCol(pTable->tagVal, pCol->colId);
|
void * res = tdGetKVRowValOfCol(pTable->tagVal, pCol->colId);
|
||||||
|
if (res == NULL) {
|
||||||
|
// treat the column as NULL if we cannot find it
|
||||||
|
res = getNullValue(pCol->type);
|
||||||
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -849,6 +853,7 @@ static int tsdbAddTableIntoIndex(STsdbMeta *pMeta, STable *pTable) {
|
||||||
STable *pSTable = tsdbGetTableByUid(pMeta, TABLE_SUID(pTable));
|
STable *pSTable = tsdbGetTableByUid(pMeta, TABLE_SUID(pTable));
|
||||||
ASSERT(pSTable != NULL);
|
ASSERT(pSTable != NULL);
|
||||||
|
|
||||||
|
printf("pTable = %p, pSTable = %p\n", pTable, pSTable);
|
||||||
pTable->pSuper = pSTable;
|
pTable->pSuper = pSTable;
|
||||||
|
|
||||||
int32_t level = 0;
|
int32_t level = 0;
|
||||||
|
|
Loading…
Reference in New Issue