Uploaded image for project: 'Teiid Designer'
  1. Teiid Designer
  2. TEIIDDES-1990

There is no way to edit a vdb's data role for sysadmin by Teiid Desginer

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 8.4, 8.3.2
    • 7.8
    • Dialogs
    • 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

              rhn-support-jolee Johnathon Lee
              van.halbert Van Halbert (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: