-
Bug
-
Resolution: Done
-
Major
-
7.8
-
None
Description of problem:
When user creates a data role for a VDB, only read permission will be added to sysadmin. Thus, user cannot execute SYSADMIN.refreshMatView() by the lucking of the execute permission.
Version-Release number of selected component (if applicable):
JBDS 5.0.2.GA
Teiid Designer 7.7.4.v20130801-1634-H7-Final
Steps to Reproduce:
1. create a VDB
2. add a new Data Role and save
3. deploy it
4. send query to execute SYSADMIN.refreshMatView()
I modified $JBOSS_HOME/sample/quickstarts/eds_simple_jdbc_client/src/JDBCClient.java to send a query. as follows.
boolean result = statement.execute(sql);
System.out.println("result:"+result);
Actual results:
*server log*
15:23:32,307 WARN [PROCESSOR] Processing exception 'User <user@teiid-security> is not entitled to action <EXECUTE> for 1 or more of the groups/elements/procedures.' for request ZGnGSBd7pxlU.0. Exception type org.teiid.api.exception.query.QueryValidatorException thrown from org.teiid.dqp.internal.process.Request.validateWithVisitor(Request.java:342). Enable more detailed logging to see the entire stacktrace.
15:23:32,363 WARN [PROCESSOR] Processing exception 'User <user@teiid-security> is not entitled to action <EXECUTE> for 1 or more of the groups/elements/procedures.' for request RABFD6OPr5UQ.0. Exception type org.teiid.api.exception.query.QueryValidatorException thrown from org.teiid.dqp.internal.process.Request.validateWithVisitor(Request.java:342). Enable more detailed logging to see the entire stacktrace.
*client console*
[hfuruich@dhcp-217-119 eds_simple_jdbc_client]$ ant runtest -Dprompt=true
Buildfile: /home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as/samples/quickstarts/eds_simple_jdbc_client/build.xml
[echo] product.dir=/home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as
[echo] default
jbossesb-quickstart-override:
jbossesb-source-dependencies:
compile.simpleclient:
[javac] /home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as/samples/quickstarts/eds_simple_jdbc_client/build.xml:79: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
prompt:
[input] Enter server name or x [exit]: [localhost]
[echo] product.dir=/home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as
[echo] default
validate.parm:
[input] Enter Teiid port or x [exit]: [31000]
[echo] product.dir=/home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as
[echo] default
validate.parm:
[input] Enter Teiid VDB or x [exit]: [MarketData]
SampleVDB
[echo] product.dir=/home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as
[echo] default
validate.parm:
[input] Enter sql command x [exit]: [select stock.* from (call MarketData.getTextFiles('*.txt')) f, TEXTTABLE(f.file COLUMNS symbol string, price bigdecimal HEADER) stock]
EXEC SYSADMIN.refreshMatView(viewname=>'TestMySQLView.sample.odatatest', invalidate=>true)
[echo] product.dir=/home/hfuruich/product/eds-531/jboss-soa-p-5/jboss-as
[echo] default
validate.parm:
setdefaults:
runtest:
[echo] Running Test Query: EXEC SYSADMIN.refreshMatView(viewname=>'TestMySQLView.sample.odatatest', invalidate=>true)
[java] HOST:PORT:VDB - localhost:31000:SampleVDB
[java] Executing using the TeiidDriver against VDB: SampleVDB
[java] org.teiid.jdbc.TeiidSQLException: Remote org.teiid.api.exception.query.QueryValidatorException: User <user@teiid-security> is not entitled to action <EXECUTE> for 1 or more of the groups/elements/procedures.
[java] -----------------------------------
[java] at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:113)Executing using the TeiidDataSource against VDB: SampleVDB
[java]
[java] at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:70)
[java] at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:636)
[java] at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:62)
[java] at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:547)
[java] at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:130)
[java] at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:37)
[java] at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:75)
[java] at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:222)
[java] at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:257)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:101)
[java] at com.sun.proxy.$Proxy1.read(Unknown Source)
[java] at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:356)
[java] at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:556)
[java] at org.teiid.jdbc.StatementImpl.execute(StatementImpl.java:318)
[java] at JDBCClient.execute(JDBCClient.java:75)
[java] at JDBCClient.main(JDBCClient.java:43)
[java] Caused by: org.teiid.core.TeiidProcessingException: Remote org.teiid.api.exception.query.QueryValidatorException: User <user@teiid-security> is not entitled to action <EXECUTE> for 1 or more of the groups/elements/procedures.
[java] at org.teiid.dqp.internal.process.Request.validateWithVisitor(Request.java:342)
[java] at org.teiid.dqp.internal.process.DefaultAuthorizationValidator.validate(DefaultAuthorizationValidator.java:50)
[java] at org.teiid.dqp.internal.process.Request.validateAccess(Request.java:488)
[java] at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:402)
[java] at org.teiid.dqp.internal.process.Request.processRequest(Request.java:469)
[java] at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:520)
[java] at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:277)
[java] at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
[java] at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:216)
[java] at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:244)
[java] at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:122)
[java] at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:292)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
[java] at java.lang.Thread.run(Thread.java:662)
[java] org.teiid.jdbc.TeiidSQLException: Remote org.teiid.api.exception.query.QueryValidatorException: User <user@teiid-security> is not entitled to action <EXECUTE> for 1 or more of the groups/elements/procedures.
[java] at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:113)
[java] at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:70)
[java] at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:636)
[java] at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:62)
[java] at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:547)
[java] at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:130)
[java] at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:37)
[java] at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:75)
[java] at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:222)
[java] at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:257)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:101)
[java] at com.sun.proxy.$Proxy1.read(Unknown Source)
[java] at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:356)
[java] at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:556)
[java] at org.teiid.jdbc.StatementImpl.execute(StatementImpl.java:318)
[java] at JDBCClient.execute(JDBCClient.java:75)
[java] at JDBCClient.main(JDBCClient.java:48)
[java] Caused by: org.teiid.core.TeiidProcessingException: Remote org.teiid.api.exception.query.QueryValidatorException: User <user@teiid-security> is not entitled to action <EXECUTE> for 1 or more of the groups/elements/procedures.
[java] at org.teiid.dqp.internal.process.Request.validateWithVisitor(Request.java:342)
[java] at org.teiid.dqp.internal.process.DefaultAuthorizationValidator.validate(DefaultAuthorizationValidator.java:50)
[java] at org.teiid.dqp.internal.process.Request.validateAccess(Request.java:488)
[java] at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:402)
[java] at org.teiid.dqp.internal.process.Request.processRequest(Request.java:469)
[java] at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:520)
[java] at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:277)
[java] at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:49)
[java] at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:216)
[java] at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:244)
[java] at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:122)
[java] at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:292)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
[java] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
[java] at java.lang.Thread.run(Thread.java:662)
BUILD SUCCESSFUL
Total time: 47 seconds
Expected results:
User can edit permission for sysadmin by JBDS, so that SYSADMIN.refreshMatView() can be executed as expected
Additional info:
I tried to edit a vdb.xml directly, but there is no file under a teiid project