提交 fcba7e32 编写于 作者: wmmhello's avatar wmmhello

feat:add privilege for schemaless

上级 fb9b0a3e
...@@ -106,7 +106,7 @@ static int32_t smlCheckAuth(SSmlHandle *info, SRequestConnInfo* conn, const cha ...@@ -106,7 +106,7 @@ static int32_t smlCheckAuth(SSmlHandle *info, SRequestConnInfo* conn, const cha
code = catalogChkAuth(info->pCatalog, conn, &pAuth, &authRes); code = catalogChkAuth(info->pCatalog, conn, &pAuth, &authRes);
return code ? (authRes.pass ? TSDB_CODE_SUCCESS : TSDB_CODE_PAR_PERMISSION_DENIED) : code; return (code == TSDB_CODE_SUCCESS) ? (authRes.pass ? TSDB_CODE_SUCCESS : TSDB_CODE_PAR_PERMISSION_DENIED) : code;
} }
inline bool smlDoubleToInt64OverFlow(double num) { inline bool smlDoubleToInt64OverFlow(double num) {
......
...@@ -1135,18 +1135,34 @@ int sml_td22900_Test() { ...@@ -1135,18 +1135,34 @@ int sml_td22900_Test() {
int sml_td24070_Test() { int sml_td24070_Test() {
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0); TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
TAOS_RES *pRes = taos_query(taos, "CREATE user test pass 'test'"); TAOS_RES *pRes = taos_query(taos, "CREATE user test_db pass 'test'");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes); taos_free_result(pRes);
pRes = taos_query(taos, "CREATE DATABASE IF NOT EXISTS td24070"); pRes = taos_query(taos, "CREATE DATABASE IF NOT EXISTS td24070_read");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "grant read on td24070_read to test_db");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "CREATE DATABASE IF NOT EXISTS td24070_write");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "grant write on td24070_write to test_db");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes); taos_free_result(pRes);
taos_close(taos); taos_close(taos);
taos = taos_connect("localhost", "test", "test", NULL, 0);
// test db privilege
taos = taos_connect("localhost", "test_db", "test", NULL, 0);
const char* sql[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299372000"}; const char* sql[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299372000"};
pRes = taos_query(taos, "use td24070"); pRes = taos_query(taos, "use td24070_read");
taos_free_result(pRes); taos_free_result(pRes);
pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_LINE_PROTOCOL, pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_LINE_PROTOCOL,
...@@ -1154,8 +1170,113 @@ int sml_td24070_Test() { ...@@ -1154,8 +1170,113 @@ int sml_td24070_Test() {
printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes)); printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes));
int code = taos_errno(pRes); int code = taos_errno(pRes);
ASSERT(code != 0);
taos_free_result(pRes);
pRes = taos_query(taos, "use td24070_write");
taos_free_result(pRes);
pRes = taos_schemaless_insert(taos, (char **)sql, sizeof(sql) / sizeof(sql[0]), TSDB_SML_LINE_PROTOCOL,
TSDB_SML_TIMESTAMP_MILLI_SECONDS);
printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes));
code = taos_errno(pRes);
ASSERT(code == 0);
taos_free_result(pRes);
taos_close(taos);
// test db privilege end
// test stable privilege
taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
pRes = taos_query(taos, "CREATE user test_stb_read pass 'test'");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "CREATE user test_stb_write pass 'test'");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "grant read on td24070_write.stb2 to test_stb_read");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "grant write on td24070_write.stb2 to test_stb_write");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
taos_close(taos);
taos = taos_connect("localhost", "test_stb_read", "test", "td24070_write", 0);
const char* sql1[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299373000"};
pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_LINE_PROTOCOL,
TSDB_SML_TIMESTAMP_MILLI_SECONDS);
printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes));
code = taos_errno(pRes);
ASSERT(code != 0);
taos_free_result(pRes);
taos_close(taos);
taos = taos_connect("localhost", "test_stb_write", "test", "td24070_write", 0);
const char* sql2[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299373000"};
pRes = taos_schemaless_insert(taos, (char **)sql2, sizeof(sql2) / sizeof(sql2[0]), TSDB_SML_LINE_PROTOCOL,
TSDB_SML_TIMESTAMP_MILLI_SECONDS);
printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes));
code = taos_errno(pRes);
ASSERT(code == 0);
taos_free_result(pRes);
taos_close(taos);
// test stable privilege
// test table privilege
taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
pRes = taos_query(taos, "CREATE user test_tb_read pass 'test'");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "CREATE user test_tb_write pass 'test'");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "grant read on td24070_write.t_035c845c1a3df238c54d9b8f1a8844bd to test_tb_read");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
pRes = taos_query(taos, "grant write on td24070_write.t_035c845c1a3df238c54d9b8f1a8844bd to test_tb_write");
ASSERT(taos_errno(pRes) == 0);
taos_free_result(pRes);
taos_close(taos);
taos = taos_connect("localhost", "test_tb_read", "test", "td24070_write", 0);
const char* sql3[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299374000"};
pRes = taos_schemaless_insert(taos, (char **)sql3, sizeof(sql3) / sizeof(sql3[0]), TSDB_SML_LINE_PROTOCOL,
TSDB_SML_TIMESTAMP_MILLI_SECONDS);
printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes));
code = taos_errno(pRes);
ASSERT(code != 0);
taos_free_result(pRes);
taos_close(taos);
taos = taos_connect("localhost", "test_tb_write", "test", "td24070_write", 0);
const char* sql4[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299374000"};
pRes = taos_schemaless_insert(taos, (char **)sql4, sizeof(sql4) / sizeof(sql4[0]), TSDB_SML_LINE_PROTOCOL,
TSDB_SML_TIMESTAMP_MILLI_SECONDS);
printf("%s result:%s\n", __FUNCTION__, taos_errstr(pRes));
code = taos_errno(pRes);
ASSERT(code == 0);
taos_free_result(pRes); taos_free_result(pRes);
taos_close(taos); taos_close(taos);
// test table privilege
return code; return code;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册