[TD-3948]<enhance>: insert syntax - specify columns after supertable tags
This commit is contained in:
parent
b6e41d48e0
commit
5f2f20cf1a
|
@ -928,6 +928,42 @@ static int32_t tscCheckIfCreateTable(char **sqlstr, SSqlObj *pSql, char** boundC
|
||||||
return tscSQLSyntaxErrMsg(pCmd->payload, ") expected", sToken.z);
|
return tscSQLSyntaxErrMsg(pCmd->payload, ") expected", sToken.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parse columns after super table tags values.
|
||||||
|
* insert into table_name using super_table(tag_name1, tag_name2) tags(tag_val1, tag_val2)
|
||||||
|
* (normal_col1, normal_col2) values(normal_col1_val, normal_col2_val);
|
||||||
|
* */
|
||||||
|
index = 0;
|
||||||
|
sToken = tStrGetToken(sql, &index, false);
|
||||||
|
sql += index;
|
||||||
|
int numOfColsAfterTags = 0;
|
||||||
|
if (sToken.type == TK_LP) {
|
||||||
|
if (*boundColumn != NULL) {
|
||||||
|
return tscSQLSyntaxErrMsg(pCmd->payload, "bind columns again", sToken.z);
|
||||||
|
} else {
|
||||||
|
*boundColumn = &sToken.z[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
index = 0;
|
||||||
|
sToken = tStrGetToken(sql, &index, false);
|
||||||
|
|
||||||
|
if (sToken.type == TK_RP) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
sql += index;
|
||||||
|
++numOfColsAfterTags;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numOfColsAfterTags == 0 && (*boundColumn) != NULL) {
|
||||||
|
return TSDB_CODE_TSC_INVALID_SQL;
|
||||||
|
}
|
||||||
|
|
||||||
|
sToken = tStrGetToken(sql, &index, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
sql = sToken.z;
|
||||||
|
|
||||||
if (tscValidateName(&tableToken) != TSDB_CODE_SUCCESS) {
|
if (tscValidateName(&tableToken) != TSDB_CODE_SUCCESS) {
|
||||||
return tscInvalidSQLErrMsg(pCmd->payload, "invalid table name", *sqlstr);
|
return tscInvalidSQLErrMsg(pCmd->payload, "invalid table name", *sqlstr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,6 +393,19 @@ if $rows != 24 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
print ========================> TD-3948
|
||||||
|
sql drop table if exists meters
|
||||||
|
sql create stable meters (ts timestamp, current float, voltage int, phase float) tags (location binary(64), groupId int);
|
||||||
|
sql_error insert into td3948Err1(phase) using meters tags ("Beijng.Chaoyang", 2) (ts, current) values (now, 10.2);
|
||||||
|
sql_error insert into td3948Err2(phase, voltage) using meters tags ("Beijng.Chaoyang", 2) (ts, current) values (now, 10.2);
|
||||||
|
sql_error insert into td3948Err3(phase, current) using meters tags ("Beijng.Chaoyang", 2) (ts, current) values (now, 10.2);
|
||||||
|
sql insert into td3948 using meters tags ("Beijng.Chaoyang", 2) (ts, current) values (now, 10.2);
|
||||||
|
sql select count(ts) from td3948;
|
||||||
|
if $rows != 1 then
|
||||||
|
print expect 1, actual:$rows
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
print ========================> TD-2740
|
print ========================> TD-2740
|
||||||
sql drop table if exists m1;
|
sql drop table if exists m1;
|
||||||
sql create table m1(ts timestamp, k int) tags(a int);
|
sql create table m1(ts timestamp, k int) tags(a int);
|
||||||
|
|
Loading…
Reference in New Issue