提交 6bc71839 编写于 作者: Y yihaoDeng

[TD-4098]<feature> refactor IN filter

上级 ad651eff
...@@ -176,18 +176,32 @@ bool serializeExprListToVariant(SArray* pList, tVariant **dst, int16_t colType, ...@@ -176,18 +176,32 @@ bool serializeExprListToVariant(SArray* pList, tVariant **dst, int16_t colType,
break; break;
} }
if ((colType == TSDB_DATA_TYPE_BOOL || IS_SIGNED_NUMERIC_TYPE(colType))) { if ((colType == TSDB_DATA_TYPE_BOOL || IS_SIGNED_NUMERIC_TYPE(colType))) {
if (var->nType != TSDB_DATA_TYPE_BOOL && !IS_SIGNED_NUMERIC_TYPE(var->nType)) {
break;
}
tbufWriteInt64(&bw, var->i64); tbufWriteInt64(&bw, var->i64);
} else if (IS_UNSIGNED_NUMERIC_TYPE(colType)) { } else if (IS_UNSIGNED_NUMERIC_TYPE(colType)) {
if (IS_SIGNED_NUMERIC_TYPE(var->nType) && IS_UNSIGNED_NUMERIC_TYPE(var->nType)) {
break;
}
tbufWriteUint64(&bw, var->u64); tbufWriteUint64(&bw, var->u64);
} else if (colType == TSDB_DATA_TYPE_DOUBLE || colType == TSDB_DATA_TYPE_FLOAT) { } else if (colType == TSDB_DATA_TYPE_DOUBLE || colType == TSDB_DATA_TYPE_FLOAT) {
if (IS_SIGNED_NUMERIC_TYPE(var->nType) || IS_UNSIGNED_NUMERIC_TYPE(var->nType)) { if (IS_SIGNED_NUMERIC_TYPE(var->nType) || IS_UNSIGNED_NUMERIC_TYPE(var->nType)) {
tbufWriteDouble(&bw, (double)(var->i64)); tbufWriteDouble(&bw, (double)(var->i64));
} else { } else if (var->nType == TSDB_DATA_TYPE_DOUBLE || var->nType == TSDB_DATA_TYPE_FLOAT){
tbufWriteDouble(&bw, var->dKey); tbufWriteDouble(&bw, var->dKey);
} else {
break;
} }
} else if (colType == TSDB_DATA_TYPE_BINARY) { } else if (colType == TSDB_DATA_TYPE_BINARY) {
if (var->nType != TSDB_DATA_TYPE_BINARY) {
break;
}
tbufWriteBinary(&bw, var->pz, var->nLen); tbufWriteBinary(&bw, var->pz, var->nLen);
} else if (colType == TSDB_DATA_TYPE_NCHAR) { } else if (colType == TSDB_DATA_TYPE_NCHAR) {
if (var->nType != TSDB_DATA_TYPE_BINARY) {
break;
}
char *buf = (char *)calloc(1, (var->nLen + 1)*TSDB_NCHAR_SIZE); char *buf = (char *)calloc(1, (var->nLen + 1)*TSDB_NCHAR_SIZE);
if (tVariantDump(var, buf, colType, false) != TSDB_CODE_SUCCESS) { if (tVariantDump(var, buf, colType, false) != TSDB_CODE_SUCCESS) {
free(buf); free(buf);
...@@ -203,6 +217,8 @@ bool serializeExprListToVariant(SArray* pList, tVariant **dst, int16_t colType, ...@@ -203,6 +217,8 @@ bool serializeExprListToVariant(SArray* pList, tVariant **dst, int16_t colType,
tbufWriteInt64(&bw, var->i64); tbufWriteInt64(&bw, var->i64);
} else if (var->nType == TSDB_DATA_TYPE_BIGINT) { } else if (var->nType == TSDB_DATA_TYPE_BIGINT) {
tbufWriteInt64(&bw, var->i64); tbufWriteInt64(&bw, var->i64);
} else {
break;
} }
} else { } else {
break; break;
......
...@@ -621,65 +621,65 @@ class TDTestCase: ...@@ -621,65 +621,65 @@ class TDTestCase:
tdLog.info(cmd1) tdLog.info(cmd1)
tdSql.execute(cmd1) tdSql.execute(cmd1)
#cmd2 = 'select * from in_stable_4 where in_float in (\'888\');' cmd2 = 'select * from in_stable_4 where in_float in (\'888\');'
#tdLog.info(cmd2) tdLog.info(cmd2)
#tdSql.error(cmd2) tdSql.error(cmd2)
#try: try:
# tdSql.execute(cmd2) tdSql.execute(cmd2)
# tdLog.exit("invalid operation: not supported filter condition") tdLog.exit("invalid operation: not supported filter condition")
#except Exception as e: except Exception as e:
# tdLog.info(repr(e)) tdLog.info(repr(e))
# tdLog.info("invalid operation: not supported filter condition") tdLog.info("invalid operation: not supported filter condition")
#cmd3 = 'select * from in_stable_4 where in_double in (\'66666\');' cmd3 = 'select * from in_stable_4 where in_double in (\'66666\');'
#tdLog.info(cmd3) tdLog.info(cmd3)
#tdSql.error(cmd3) tdSql.error(cmd3)
#try: try:
# tdSql.execute(cmd3) tdSql.execute(cmd3)
# tdLog.exit("invalid operation: not supported filter condition") tdLog.exit("invalid operation: not supported filter condition")
#except Exception as e: except Exception as e:
# tdLog.info(repr(e)) tdLog.info(repr(e))
# tdLog.info("invalid operation: not supported filter condition") tdLog.info("invalid operation: not supported filter condition")
#cmd4 = 'select * from in_stable_4 where tin_float in (\'666\');' cmd4 = 'select * from in_stable_4 where tin_float in (\'666\');'
#tdLog.info(cmd4) tdLog.info(cmd4)
#tdSql.error(cmd4) tdSql.error(cmd4)
#try: try:
# tdSql.execute(cmd4) tdSql.execute(cmd4)
# tdLog.exit("invalid operation: not supported filter condition") tdLog.exit("invalid operation: not supported filter condition")
#except Exception as e: except Exception as e:
# tdLog.info(repr(e)) tdLog.info(repr(e))
# tdLog.info("invalid operation: not supported filter condition") tdLog.info("invalid operation: not supported filter condition")
#cmd5 = 'select * from in_stable_4 where tin_double in (\'88888\');' cmd5 = 'select * from in_stable_4 where tin_double in (\'88888\');'
#tdLog.info(cmd5) tdLog.info(cmd5)
#tdSql.error(cmd5) tdSql.error(cmd5)
#try: try:
# tdSql.execute(cmd5) tdSql.execute(cmd5)
# tdLog.exit("invalid operation: not supported filter condition") tdLog.exit("invalid operation: not supported filter condition")
#except Exception as e: except Exception as e:
# tdLog.info(repr(e)) tdLog.info(repr(e))
# tdLog.info("invalid operation: not supported filter condition") tdLog.info("invalid operation: not supported filter condition")
#cmd6 = 'select * from in_float_double_1 where in_float in (\'888\');' cmd6 = 'select * from in_float_double_1 where in_float in (\'888\');'
#tdLog.info(cmd6) tdLog.info(cmd6)
#tdSql.error(cmd6) tdSql.error(cmd6)
#try: try:
# tdSql.execute(cmd6) tdSql.execute(cmd6)
# tdLog.exit("invalid operation: not supported filter condition") tdLog.exit("invalid operation: not supported filter condition")
#except Exception as e: except Exception as e:
# tdLog.info(repr(e)) tdLog.info(repr(e))
# tdLog.info("invalid operation: not supported filter condition") tdLog.info("invalid operation: not supported filter condition")
#
#cmd7 = 'select * from in_float_double_1 where in_double in (\'66666\');' cmd7 = 'select * from in_float_double_1 where in_double in (\'66666\');'
#tdLog.info(cmd7) tdLog.info(cmd7)
#tdSql.error(cmd7) tdSql.error(cmd7)
#try: try:
# tdSql.execute(cmd7) tdSql.execute(cmd7)
# tdLog.exit("invalid operation: not supported filter condition") tdLog.exit("invalid operation: not supported filter condition")
#except Exception as e: except Exception as e:
# tdLog.info(repr(e)) tdLog.info(repr(e))
# tdLog.info("invalid operation: not supported filter condition") tdLog.info("invalid operation: not supported filter condition")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册