未验证 提交 454261d5 编写于 作者: Y Yifu Zhou 提交者: GitHub

[IOTDB-4157]read_timeseries privilege cannot use for show operation (#7029)

[IOTDB-4157]read_timeseries privilege cannot use for show operation (#7029)
上级 16a5f7ab
......@@ -372,7 +372,7 @@ At the same time, changes to roles are immediately reflected on all users who ow
|CREATE\_TIMESERIES|create timeseries; path dependent|Eg1: create timeseries<br />`create timeseries root.ln.wf02.status with datatype=BOOLEAN,encoding=PLAIN;`<br />Eg2: create aligned timeseries<br />`create aligned timeseries root.ln.device1(latitude FLOAT encoding=PLAIN compressor=SNAPPY, longitude FLOAT encoding=PLAIN compressor=SNAPPY);`|
|INSERT\_TIMESERIES|insert data; path dependent|Eg1: `insert into root.ln.wf02(timestamp,status) values(1,true);`<br />Eg2: `insert into root.sg1.d1(time, s1, s2) aligned values(1, 1, 1)`|
|ALTER\_TIMESERIES|alter timeseries; path dependent|Eg1: `alter timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4;`<br />Eg2: `ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=newAlias TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=v3, attr4=v4);`|
|READ\_TIMESERIES|query data; path dependent|Eg1: `show storage group;` <br />Eg2: `show child paths root.ln, show child nodes root.ln;`<br />Eg3: `show devices;`<br />Eg4: `show timeseries root.**;`<br />Eg5: `show schema templates;`<br />Eg6: `show all ttl`<br />Eg7: [Query-Data](../Query-Data/Overview.md)(The query statements under this section all use this permission)<br />Eg8: CVS format data export<br />`./export-csv.bat -h 127.0.0.1 -p 6667 -u tempuser -pw root -td ./`<br />Eg9: Performance Tracing Tool<br />`tracing select * from root.**`<br />Eg10: UDF-Query<br />`select example(*) from root.sg.d1`<br />Eg11: Triggers-Query<br />`show triggers`|
|READ\_TIMESERIES|query data; path dependent|Eg1: `show storage group;` <br />Eg2: `show child paths root.ln, show child nodes root.ln;`<br />Eg3: `show devices;`<br />Eg4: `show timeseries root.**;`<br />Eg5: `show schema templates;`<br />Eg6: `show all ttl`<br />Eg7: [Query-Data](../Query-Data/Overview.md)(The query statements under this section all use this permission)<br />Eg8: CVS format data export<br />`./export-csv.bat -h 127.0.0.1 -p 6667 -u tempuser -pw root -td ./`<br />Eg9: Performance Tracing Tool<br />`tracing select * from root.**`<br />Eg10: UDF-Query<br />`select example(*) from root.sg.d1`<br />Eg11: Triggers-Query<br />`show triggers`<br />Eg12: Count-Query<br />`count devices`|
|DELETE\_TIMESERIES|delete data or timeseries; path dependent|Eg1: delete timeseries<br />`delete timeseries root.ln.wf01.wt01.status`<br />Eg2: delete data<br />`delete from root.ln.wf02.wt02.status where time < 10`|
|CREATE\_USER|create users; path independent|Eg: `create user thulab 'passwd';`|
|DELETE\_USER|delete users; path independent|Eg: `drop user xiaoming;`|
......
......@@ -371,7 +371,7 @@ Eg: IoTDB > ALTER USER `tempuser` SET PASSWORD 'newpwd';
|CREATE\_TIMESERIES|创建时间序列。路径相关|Eg1: 创建时间序列<br />`create timeseries root.ln.wf02.status with datatype=BOOLEAN,encoding=PLAIN;`<br />Eg2: 创建对齐时间序列<br />`create aligned timeseries root.ln.device1(latitude FLOAT encoding=PLAIN compressor=SNAPPY, longitude FLOAT encoding=PLAIN compressor=SNAPPY);`|
|INSERT\_TIMESERIES|插入数据。路径相关|Eg1: `insert into root.ln.wf02(timestamp,status) values(1,true);`<br />Eg2: `insert into root.sg1.d1(time, s1, s2) aligned values(1, 1, 1)`|
|ALTER\_TIMESERIES|修改时间序列标签。路径相关|Eg1: `alter timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4;`<br />Eg2: `ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=newAlias TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=v3, attr4=v4);`|
|READ\_TIMESERIES|查询数据。路径相关|Eg1: `show storage group;` <br />Eg2: `show child paths root.ln, show child nodes root.ln;`<br />Eg3: `show devices;`<br />Eg4: `show timeseries root.**;`<br />Eg5: `show schema templates;`<br />Eg6: `show all ttl`<br />Eg7: [数据查询](../Query-Data/Overview.md)(这一节之下的查询语句均使用该权限)<br />Eg8: CVS格式数据导出<br />`./export-csv.bat -h 127.0.0.1 -p 6667 -u tempuser -pw root -td ./`<br />Eg9: 查询性能追踪<br />`tracing select * from root.**`<br />Eg10: UDF查询<br />`select example(*) from root.sg.d1`<br />Eg11: 查询触发器<br />`show triggers`|
|READ\_TIMESERIES|查询数据。路径相关|Eg1: `show storage group;` <br />Eg2: `show child paths root.ln, show child nodes root.ln;`<br />Eg3: `show devices;`<br />Eg4: `show timeseries root.**;`<br />Eg5: `show schema templates;`<br />Eg6: `show all ttl`<br />Eg7: [数据查询](../Query-Data/Overview.md)(这一节之下的查询语句均使用该权限)<br />Eg8: CVS格式数据导出<br />`./export-csv.bat -h 127.0.0.1 -p 6667 -u tempuser -pw root -td ./`<br />Eg9: 查询性能追踪<br />`tracing select * from root.**`<br />Eg10: UDF查询<br />`select example(*) from root.sg.d1`<br />Eg11: 查询触发器<br />`show triggers`<br />Eg12: 统计查询<br />`count devices`|
|DELETE\_TIMESERIES|删除数据或时间序列。路径相关|Eg1: 删除时间序列<br />`delete timeseries root.ln.wf01.wt01.status`<br />Eg2: 删除数据<br />`delete from root.ln.wf02.wt02.status where time < 10`|
|CREATE\_USER|创建用户。路径无关|Eg: `create user thulab 'passwd';`|
|DELETE\_USER|删除用户。路径无关|Eg: `drop user xiaoming;`|
......
......@@ -269,26 +269,26 @@ public class AuthorityChecker {
private static int translateToPermissionId(StatementType type) {
switch (type) {
case GRANT_ROLE_PRIVILEGE:
return PrivilegeType.GRANT_ROLE_PRIVILEGE.ordinal();
case CREATE_ROLE:
return PrivilegeType.CREATE_ROLE.ordinal();
case CREATE_USER:
return PrivilegeType.CREATE_USER.ordinal();
case DELETE_USER:
return PrivilegeType.DELETE_USER.ordinal();
case DELETE_ROLE:
return PrivilegeType.DELETE_ROLE.ordinal();
case MODIFY_PASSWORD:
return PrivilegeType.MODIFY_PASSWORD.ordinal();
case GRANT_USER_PRIVILEGE:
return PrivilegeType.GRANT_USER_PRIVILEGE.ordinal();
case REVOKE_ROLE_PRIVILEGE:
return PrivilegeType.REVOKE_ROLE_PRIVILEGE.ordinal();
case GRANT_ROLE_PRIVILEGE:
return PrivilegeType.GRANT_ROLE_PRIVILEGE.ordinal();
case REVOKE_USER_PRIVILEGE:
return PrivilegeType.REVOKE_USER_PRIVILEGE.ordinal();
case REVOKE_ROLE_PRIVILEGE:
return PrivilegeType.REVOKE_ROLE_PRIVILEGE.ordinal();
case GRANT_USER_ROLE:
return PrivilegeType.GRANT_USER_ROLE.ordinal();
case DELETE_USER:
return PrivilegeType.DELETE_USER.ordinal();
case DELETE_ROLE:
return PrivilegeType.DELETE_ROLE.ordinal();
case REVOKE_USER_ROLE:
return PrivilegeType.REVOKE_USER_ROLE.ordinal();
case SET_STORAGE_GROUP:
......@@ -315,6 +315,7 @@ public class AuthorityChecker {
case FILL:
case GROUP_BY_FILL:
case SELECT_INTO:
case COUNT:
return PrivilegeType.READ_TIMESERIES.ordinal();
case INSERT:
case LOAD_DATA:
......
......@@ -22,6 +22,9 @@ package org.apache.iotdb.db.mpp.plan.statement.metadata;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
import java.util.Collections;
import java.util.List;
public class ShowChildNodesStatement extends ShowStatement {
private final PartialPath partialPath;
......@@ -34,6 +37,11 @@ public class ShowChildNodesStatement extends ShowStatement {
return partialPath;
}
@Override
public List<PartialPath> getPaths() {
return Collections.singletonList(partialPath);
}
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowChildNodes(this, context);
......
......@@ -22,6 +22,9 @@ package org.apache.iotdb.db.mpp.plan.statement.metadata;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
import java.util.Collections;
import java.util.List;
public class ShowChildPathsStatement extends ShowStatement {
private final PartialPath partialPath;
......@@ -30,6 +33,11 @@ public class ShowChildPathsStatement extends ShowStatement {
this.partialPath = partialPath;
}
@Override
public List<PartialPath> getPaths() {
return Collections.singletonList(partialPath);
}
public PartialPath getPartialPath() {
return partialPath;
}
......
......@@ -22,6 +22,9 @@ package org.apache.iotdb.db.mpp.plan.statement.metadata;
import org.apache.iotdb.commons.path.PartialPath;
import org.apache.iotdb.db.mpp.plan.statement.StatementVisitor;
import java.util.Collections;
import java.util.List;
/**
* SHOW TIMESERIES statement.
*
......@@ -80,6 +83,11 @@ public class ShowTimeSeriesStatement extends ShowStatement {
return orderByHeat;
}
@Override
public List<PartialPath> getPaths() {
return Collections.singletonList(pathPattern);
}
@Override
public <R, C> R accept(StatementVisitor<R, C> visitor, C context) {
return visitor.visitShowTimeSeries(this, context);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册