-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprepData.c
executable file
·39 lines (38 loc) · 1.09 KB
/
prepData.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
static bool selectCommonType(SDataType* commonType, const SDataType* newType) {
if (type1 < 0 || type1 >= TSDB_DATA_TYPE_MAX || type2 < 0 || type2 >= TSDB_DATA_TYPE_MAX) {
return false;
}
if (commonType->type == TSDB_DATA_TYPE_NULL) {
*commonType = *newType;
return true;
}
if (newType->type == TSDB_DATA_TYPE_NULL) {
return true;
}
if (commonType->type == newType->type) {
if (commonType->bytes < newType->bytes) {
commonType->bytes = newType->bytes;
}
return true;
}
int type1 = commonType->type;
int type2 = newType->type;
if (type1 > type2) {
int temp = type1;
type1 = type2;
type2 = temp;
}
int8_t resultType = gConvertTypes[type1][type2];
if (resultType == -1) {
return false;
} else if (resultType == 0) {
return false;
} else {
commonType->type = resultType;
commonType->bytes = type_bytes[resultType];
if (commonType->bytes == 0) {
commonType->bytes = (commonType->bytes > newType->bytes) ? commonType->bytes : newType->bytes;
}
return true;
}
}