Merge pull request #5855 from taosdata/feature/qrefactor
Feature/qrefactor
This commit is contained in:
commit
31529614d5
|
@ -49,6 +49,14 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_setOptions
|
||||||
JNIEXPORT jstring JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getTsCharset
|
JNIEXPORT jstring JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getTsCharset
|
||||||
(JNIEnv *, jclass);
|
(JNIEnv *, jclass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: com_taosdata_jdbc_TSDBJNIConnector
|
||||||
|
* Method: getResultTimePrecision
|
||||||
|
* Signature: (J)J
|
||||||
|
*/
|
||||||
|
JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TDDBJNIConnector_getResultTimePrecision
|
||||||
|
(JNIEnv *, jobject, jlong, jlong);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: com_taosdata_jdbc_TSDBJNIConnector
|
* Class: com_taosdata_jdbc_TSDBJNIConnector
|
||||||
* Method: connectImp
|
* Method: connectImp
|
||||||
|
|
|
@ -671,3 +671,20 @@ JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_validateCreateTab
|
||||||
JNIEXPORT jstring JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getTsCharset(JNIEnv *env, jobject jobj) {
|
JNIEXPORT jstring JNICALL Java_com_taosdata_jdbc_TSDBJNIConnector_getTsCharset(JNIEnv *env, jobject jobj) {
|
||||||
return (*env)->NewStringUTF(env, (const char *)tsCharset);
|
return (*env)->NewStringUTF(env, (const char *)tsCharset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT jint JNICALL Java_com_taosdata_jdbc_TDDBJNIConnector_getResultTimePrecision(JNIEnv *env, jobject jobj, jlong con,
|
||||||
|
jlong res) {
|
||||||
|
TAOS *tscon = (TAOS *)con;
|
||||||
|
if (tscon == NULL) {
|
||||||
|
jniError("jobj:%p, connection is closed", jobj);
|
||||||
|
return JNI_CONNECTION_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
TAOS_RES *result = (TAOS_RES *)res;
|
||||||
|
if (result == NULL) {
|
||||||
|
jniError("jobj:%p, conn:%p, resultset is null", jobj, tscon);
|
||||||
|
return JNI_RESULT_SET_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return taos_result_precision(result);
|
||||||
|
}
|
|
@ -48,8 +48,12 @@ void tVariantCreate(tVariant *pVar, SStrToken *token) {
|
||||||
case TSDB_DATA_TYPE_INT:{
|
case TSDB_DATA_TYPE_INT:{
|
||||||
ret = tStrToInteger(token->z, token->type, token->n, &pVar->i64, true);
|
ret = tStrToInteger(token->z, token->type, token->n, &pVar->i64, true);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
pVar->nType = -1; // -1 means error type
|
// data overflow, try unsigned parse the input number
|
||||||
return;
|
ret = tStrToInteger(token->z, token->type, token->n, &pVar->i64, false);
|
||||||
|
if (ret != 0) {
|
||||||
|
pVar->nType = -1; // -1 means error type
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -525,6 +529,8 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result
|
||||||
}
|
}
|
||||||
|
|
||||||
bool code = false;
|
bool code = false;
|
||||||
|
|
||||||
|
uint64_t ui = 0;
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
code = IS_VALID_TINYINT(*result); break;
|
code = IS_VALID_TINYINT(*result); break;
|
||||||
|
@ -535,13 +541,17 @@ static FORCE_INLINE int32_t convertToInteger(tVariant *pVariant, int64_t *result
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
case TSDB_DATA_TYPE_BIGINT:
|
||||||
code = IS_VALID_BIGINT(*result); break;
|
code = IS_VALID_BIGINT(*result); break;
|
||||||
case TSDB_DATA_TYPE_UTINYINT:
|
case TSDB_DATA_TYPE_UTINYINT:
|
||||||
code = IS_VALID_UTINYINT(*result); break;
|
ui = *result;
|
||||||
|
code = IS_VALID_UTINYINT(ui); break;
|
||||||
case TSDB_DATA_TYPE_USMALLINT:
|
case TSDB_DATA_TYPE_USMALLINT:
|
||||||
code = IS_VALID_USMALLINT(*result); break;
|
ui = *result;
|
||||||
|
code = IS_VALID_USMALLINT(ui); break;
|
||||||
case TSDB_DATA_TYPE_UINT:
|
case TSDB_DATA_TYPE_UINT:
|
||||||
code = IS_VALID_UINT(*result); break;
|
ui = *result;
|
||||||
|
code = IS_VALID_UINT(ui); break;
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
case TSDB_DATA_TYPE_UBIGINT:
|
||||||
code = IS_VALID_UBIGINT(*result); break;
|
ui = *result;
|
||||||
|
code = IS_VALID_UBIGINT(ui); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return code? 0:-1;
|
return code? 0:-1;
|
||||||
|
|
|
@ -354,45 +354,14 @@ static FORCE_INLINE int32_t primaryKeyComparator(int64_t f1, int64_t f2, int32_t
|
||||||
|
|
||||||
static FORCE_INLINE int32_t columnValueAscendingComparator(char *f1, char *f2, int32_t type, int32_t bytes) {
|
static FORCE_INLINE int32_t columnValueAscendingComparator(char *f1, char *f2, int32_t type, int32_t bytes) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TSDB_DATA_TYPE_INT: {
|
case TSDB_DATA_TYPE_INT: DEFAULT_COMP(GET_INT32_VAL(f1), GET_INT32_VAL(f2));
|
||||||
int32_t first = *(int32_t *) f1;
|
case TSDB_DATA_TYPE_DOUBLE: DEFAULT_DOUBLE_COMP(GET_DOUBLE_VAL(f1), GET_DOUBLE_VAL(f2));
|
||||||
int32_t second = *(int32_t *) f2;
|
case TSDB_DATA_TYPE_FLOAT: DEFAULT_FLOAT_COMP(GET_FLOAT_VAL(f1), GET_FLOAT_VAL(f2));
|
||||||
if (first == second) {
|
case TSDB_DATA_TYPE_BIGINT: DEFAULT_COMP(GET_INT64_VAL(f1), GET_INT64_VAL(f2));
|
||||||
return 0;
|
case TSDB_DATA_TYPE_SMALLINT:DEFAULT_COMP(GET_INT16_VAL(f1), GET_INT16_VAL(f2));
|
||||||
}
|
|
||||||
return (first < second) ? -1 : 1;
|
|
||||||
};
|
|
||||||
case TSDB_DATA_TYPE_DOUBLE: {
|
|
||||||
DEFAULT_DOUBLE_COMP(GET_DOUBLE_VAL(f1), GET_DOUBLE_VAL(f2));
|
|
||||||
};
|
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
|
||||||
DEFAULT_FLOAT_COMP(GET_FLOAT_VAL(f1), GET_FLOAT_VAL(f2));
|
|
||||||
};
|
|
||||||
case TSDB_DATA_TYPE_BIGINT: {
|
|
||||||
int64_t first = *(int64_t *)f1;
|
|
||||||
int64_t second = *(int64_t *)f2;
|
|
||||||
if (first == second) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return (first < second) ? -1 : 1;
|
|
||||||
};
|
|
||||||
case TSDB_DATA_TYPE_SMALLINT: {
|
|
||||||
int16_t first = *(int16_t *)f1;
|
|
||||||
int16_t second = *(int16_t *)f2;
|
|
||||||
if (first == second) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return (first < second) ? -1 : 1;
|
|
||||||
};
|
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
case TSDB_DATA_TYPE_BOOL:
|
||||||
case TSDB_DATA_TYPE_TINYINT: {
|
case TSDB_DATA_TYPE_TINYINT: DEFAULT_COMP(GET_INT8_VAL(f1), GET_INT8_VAL(f2));
|
||||||
int8_t first = *(int8_t *)f1;
|
|
||||||
int8_t second = *(int8_t *)f2;
|
|
||||||
if (first == second) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return (first < second) ? -1 : 1;
|
|
||||||
};
|
|
||||||
case TSDB_DATA_TYPE_BINARY: {
|
case TSDB_DATA_TYPE_BINARY: {
|
||||||
int32_t len1 = varDataLen(f1);
|
int32_t len1 = varDataLen(f1);
|
||||||
int32_t len2 = varDataLen(f2);
|
int32_t len2 = varDataLen(f2);
|
||||||
|
@ -415,6 +384,10 @@ static FORCE_INLINE int32_t columnValueAscendingComparator(char *f1, char *f2, i
|
||||||
}
|
}
|
||||||
return (ret < 0) ? -1 : 1;
|
return (ret < 0) ? -1 : 1;
|
||||||
};
|
};
|
||||||
|
case TSDB_DATA_TYPE_UTINYINT: DEFAULT_COMP(GET_UINT8_VAL(f1), GET_UINT8_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_USMALLINT: DEFAULT_COMP(GET_UINT16_VAL(f1), GET_UINT16_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_UINT: DEFAULT_COMP(GET_UINT32_VAL(f1), GET_UINT32_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_UBIGINT: DEFAULT_COMP(GET_UINT64_VAL(f1), GET_UINT64_VAL(f2));
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -3210,9 +3210,10 @@ int32_t tsdbQuerySTableByTagCond(STsdbRepo* tsdb, uint64_t uid, TSKEY skey, cons
|
||||||
pGroupInfo->numOfTables = (uint32_t) taosArrayGetSize(res);
|
pGroupInfo->numOfTables = (uint32_t) taosArrayGetSize(res);
|
||||||
pGroupInfo->pGroupList = createTableGroup(res, pTagSchema, pColIndex, numOfCols, skey);
|
pGroupInfo->pGroupList = createTableGroup(res, pTagSchema, pColIndex, numOfCols, skey);
|
||||||
|
|
||||||
tsdbDebug("%p no table name/tag condition, all tables belong to one group, numOfTables:%u", tsdb, pGroupInfo->numOfTables);
|
tsdbDebug("%p no table name/tag condition, all tables qualified, numOfTables:%u, group:%zu", tsdb,
|
||||||
taosArrayDestroy(res);
|
pGroupInfo->numOfTables, taosArrayGetSize(pGroupInfo->pGroupList));
|
||||||
|
|
||||||
|
taosArrayDestroy(res);
|
||||||
if (tsdbUnlockRepoMeta(tsdb) < 0) goto _error;
|
if (tsdbUnlockRepoMeta(tsdb) < 0) goto _error;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -398,6 +398,10 @@ int32_t doCompare(const char* f1, const char* f2, int32_t type, size_t size) {
|
||||||
case TSDB_DATA_TYPE_SMALLINT: DEFAULT_COMP(GET_INT16_VAL(f1), GET_INT16_VAL(f2));
|
case TSDB_DATA_TYPE_SMALLINT: DEFAULT_COMP(GET_INT16_VAL(f1), GET_INT16_VAL(f2));
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
case TSDB_DATA_TYPE_BOOL: DEFAULT_COMP(GET_INT8_VAL(f1), GET_INT8_VAL(f2));
|
case TSDB_DATA_TYPE_BOOL: DEFAULT_COMP(GET_INT8_VAL(f1), GET_INT8_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_UTINYINT: DEFAULT_COMP(GET_UINT8_VAL(f1), GET_UINT8_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_USMALLINT: DEFAULT_COMP(GET_UINT16_VAL(f1), GET_UINT16_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_UINT: DEFAULT_COMP(GET_UINT32_VAL(f1), GET_UINT32_VAL(f2));
|
||||||
|
case TSDB_DATA_TYPE_UBIGINT: DEFAULT_COMP(GET_UINT64_VAL(f1), GET_UINT64_VAL(f2));
|
||||||
case TSDB_DATA_TYPE_NCHAR: {
|
case TSDB_DATA_TYPE_NCHAR: {
|
||||||
tstr* t1 = (tstr*) f1;
|
tstr* t1 = (tstr*) f1;
|
||||||
tstr* t2 = (tstr*) f2;
|
tstr* t2 = (tstr*) f2;
|
||||||
|
|
|
@ -269,4 +269,50 @@ if $data14 != @test2@ then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
sql drop table stest
|
sql drop table stest
|
||||||
|
|
||||||
|
print ===================>td-3779
|
||||||
|
sql create table m1(ts timestamp, k int) tags(a int);
|
||||||
|
sql create table tm0 using m1 tags(1);
|
||||||
|
sql create table tm1 using m1 tags(2);
|
||||||
|
sql insert into tm0 values('2020-3-1 1:1:1', 112);
|
||||||
|
sql insert into tm1 values('2020-1-1 1:1:1', 1)('2020-3-1 0:1:1', 421);
|
||||||
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||||
|
sleep 1000
|
||||||
|
|
||||||
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
print ================== server restart completed
|
||||||
|
sleep 1000
|
||||||
|
sql connect
|
||||||
|
sql use first_db0;
|
||||||
|
|
||||||
|
sql select last(*) from m1 group by tbname;
|
||||||
|
if $rows != 2 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data00 != @20-03-01 01:01:01.000@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data01 != 112 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data02 != @tm0@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data10 != @20-03-01 00:01:01.000@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data11 != 421 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
if $data12 != @tm1@ then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
sql drop table m1
|
|
@ -160,7 +160,7 @@ if $data03 != @abc15@ then
|
||||||
endi
|
endi
|
||||||
|
|
||||||
sql select top(c6, 3) from select_tags_mt0 interval(10a)
|
sql select top(c6, 3) from select_tags_mt0 interval(10a)
|
||||||
sql select top(c3,10) from select_tags_mt0 interval(10a) group by tbname
|
sql select top(c3,10) from select_tags_mt0 interval(10a) group by tbname,t1,t2
|
||||||
sql select top(c6, 3) from select_tags_mt0 interval(10a) group by tbname;
|
sql select top(c6, 3) from select_tags_mt0 interval(10a) group by tbname;
|
||||||
|
|
||||||
sql select top(c6, 10) from select_tags_mt0 interval(10a);
|
sql select top(c6, 10) from select_tags_mt0 interval(10a);
|
||||||
|
|
|
@ -164,7 +164,6 @@ void *simExecuteScript(void *inputScript) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (script->killed || script->linePos >= script->numOfLines) {
|
if (script->killed || script->linePos >= script->numOfLines) {
|
||||||
printf("killed ---------------------->\n");
|
|
||||||
script = simProcessCallOver(script);
|
script = simProcessCallOver(script);
|
||||||
if (script == NULL) {
|
if (script == NULL) {
|
||||||
printf("abort now!\n");
|
printf("abort now!\n");
|
||||||
|
|
Loading…
Reference in New Issue