Merge pull request #5409 from taosdata/hotfix/TD-3231
[TD-3231]last_row should not work with group by column
This commit is contained in:
commit
25e7ff1e6b
|
@ -1540,7 +1540,7 @@ bool isValidDistinctSql(SQueryInfo* pQueryInfo) {
|
||||||
int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSelection, bool isSTable, bool joinQuery, bool intervalQuery) {
|
int32_t parseSelectClause(SSqlCmd* pCmd, int32_t clauseIndex, tSQLExprList* pSelection, bool isSTable, bool joinQuery, bool intervalQuery) {
|
||||||
assert(pSelection != NULL && pCmd != NULL);
|
assert(pSelection != NULL && pCmd != NULL);
|
||||||
|
|
||||||
const char* msg2 = "functions can not be mixed up";
|
const char* msg2 = "functions or others can not be mixed up";
|
||||||
const char* msg3 = "not support query expression";
|
const char* msg3 = "not support query expression";
|
||||||
const char* msg5 = "invalid function name";
|
const char* msg5 = "invalid function name";
|
||||||
const char* msg6 = "only support distinct one tag";
|
const char* msg6 = "only support distinct one tag";
|
||||||
|
@ -2828,6 +2828,23 @@ bool hasUnsupportFunctionsForSTableQuery(SSqlCmd* pCmd, SQueryInfo* pQueryInfo)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool groupbyTagsOrNull(SQueryInfo* pQueryInfo) {
|
||||||
|
if (pQueryInfo->groupbyExpr.columnInfo == NULL ||
|
||||||
|
taosArrayGetSize(pQueryInfo->groupbyExpr.columnInfo) == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t s = taosArrayGetSize(pQueryInfo->groupbyExpr.columnInfo);
|
||||||
|
for (int32_t i = 0; i < s; i++) {
|
||||||
|
SColIndex* colIndex = taosArrayGet(pQueryInfo->groupbyExpr.columnInfo, i);
|
||||||
|
if (colIndex->flag != TSDB_COL_TAG) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery, bool intervalQuery) {
|
static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery, bool intervalQuery) {
|
||||||
int32_t startIdx = 0;
|
int32_t startIdx = 0;
|
||||||
|
|
||||||
|
@ -2844,7 +2861,7 @@ static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery, bool
|
||||||
|
|
||||||
int32_t factor = functionCompatList[tscSqlExprGet(pQueryInfo, startIdx)->functionId];
|
int32_t factor = functionCompatList[tscSqlExprGet(pQueryInfo, startIdx)->functionId];
|
||||||
|
|
||||||
if (tscSqlExprGet(pQueryInfo, 0)->functionId == TSDB_FUNC_LAST_ROW && (joinQuery || intervalQuery)) {
|
if (tscSqlExprGet(pQueryInfo, 0)->functionId == TSDB_FUNC_LAST_ROW && (joinQuery || intervalQuery || !groupbyTagsOrNull(pQueryInfo))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2872,7 +2889,7 @@ static bool functionCompatibleCheck(SQueryInfo* pQueryInfo, bool joinQuery, bool
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (functionId == TSDB_FUNC_LAST_ROW && (joinQuery || intervalQuery)) {
|
if (functionId == TSDB_FUNC_LAST_ROW && (joinQuery || intervalQuery || !groupbyTagsOrNull(pQueryInfo))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1785,7 +1785,7 @@ class TdSuperTable:
|
||||||
'top(speed, 50)', # TODO: not supported?
|
'top(speed, 50)', # TODO: not supported?
|
||||||
'bottom(speed, 50)', # TODO: not supported?
|
'bottom(speed, 50)', # TODO: not supported?
|
||||||
'apercentile(speed, 10)', # TODO: TD-1316
|
'apercentile(speed, 10)', # TODO: TD-1316
|
||||||
'last_row(speed)',
|
# 'last_row(speed)', # TODO: commented out per TD-3231, we should re-create
|
||||||
# Transformation Functions
|
# Transformation Functions
|
||||||
# 'diff(speed)', # TODO: no supported?!
|
# 'diff(speed)', # TODO: no supported?!
|
||||||
'spread(speed)'
|
'spread(speed)'
|
||||||
|
|
|
@ -16,6 +16,9 @@ $stb = $stbPrefix . $i
|
||||||
|
|
||||||
sql use $db
|
sql use $db
|
||||||
|
|
||||||
|
print ========>TD-3231 last_row with group by column error
|
||||||
|
sql_error select last_row(c1) from $stb group by c1;
|
||||||
|
|
||||||
##### select lastrow from STable with two vnodes, timestamp decreases from tables in vnode0 to tables in vnode1
|
##### select lastrow from STable with two vnodes, timestamp decreases from tables in vnode0 to tables in vnode1
|
||||||
sql select last_row(*) from $stb
|
sql select last_row(*) from $stb
|
||||||
if $rows != 1 then
|
if $rows != 1 then
|
||||||
|
|
Loading…
Reference in New Issue