[ 
https://issues.apache.org/jira/browse/DERBY-4295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12727527#action_12727527
 ] 

Mamta A. Satoor commented on DERBY-4295:
----------------------------------------

Kathey, since the user can't see/alter the actual data, it should probably be 
fine to have just the execute privilege for this particular procedure. The only 
other thing I can think of is it will be little confusing for users to need 
table level privileges for other procedures(which involve tables) and not to 
require those privileges for this compress procedure. Maybe we can avoid this 
confusion with proper documentation right under each procedure which will 
provide the necesarry privilege requirement.

> SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE cannot be executed after granting 
> permission for execute. 
> --------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4295
>                 URL: https://issues.apache.org/jira/browse/DERBY-4295
>             Project: Derby
>          Issue Type: Bug
>          Components: Documentation
>    Affects Versions: 10.5.1.1
>         Environment: Windows Vista
>            Reporter: Lily Wei
>            Assignee: Mamta A. Satoor
>            Priority: Minor
>         Attachments: derby4295.diff
>
>
> When using derby.properties file from mailjdbc tests, call 
> SYSCS_UTIL.SYCS_INPLACE_COMPRESs_TABLE is fine user 'BACKUP' with the 
> following operation. Please see below:
> ij version 10.3
> ij> connect 'jdbc:derby:tpri;user=BACKUP;password=Backup';
> ij> create table a (col1 int, col2 clob);
> 0 rows inserted/updated/deleted
> ij> insert into a values (1, '1');
> 1 row inserted/updated/deleted
> ij> insert into a values (2, '2');
> 1 row inserted/updated/deleted
> ij> grant execute on procedure SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE to 
> BACKUP;
> 0 rows inserted/updated/deleted
> ij version 10.3
> ij> connect 'jdbc:derby:tpri;user=BACKUP;password=Backup';
> ij> call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('REFRESH','A',1,1,1);
> 0 rows inserted/updated/deleted              <<<====Operation successful=====
>  
> However, on 10.5, the same operation result ERROR 38000
> ij> connect 'jdbc:derby:tpri;create=true;user=REFRESH;password=Refresh';
> ij> create table a (col1 int, col2 clob);
> 0 rows inserted/updated/deleted
> ij> insert into a values (1, '1');
> 1 row inserted/updated/deleted
> ij> insert into a values (1, '2');
> 1 row inserted/updated/deleted
> ij> grant execute on procedure SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE to 
> BACKUP;
> 0 rows inserted/updated/deleted
> ij> exit;
>  
> ij version 10.5
> ij> connect 'jdbc:derby:tpri;user=BACKUP;password=Backup';
> ij> call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('REFRESH','A',1,1,1);
> ERROR 38000: The exception 'java.sql.SQLException: User 'BACKUP' can not 
> perform
>  the operation in schema 'REFRESH'.' was thrown while evaluating an 
> expression.
> ERROR 42507: User 'BACKUP' can not perform the operation in schema 'REFRESH'. 
>  <<<====Operation result with ERROR 38000
> ERROR 42507: User 'BACKUP' can not perform the operation in schema 
> 'REFRESH'.^M
>         at 
> org.apache.derby.iapi.error.StandardException.newException(StandardEx
> ception.java:303)^M
>         at 
> org.apache.derby.iapi.sql.dictionary.StatementSchemaPermission.check(
> StatementSchemaPermission.java:83)^M
>         at 
> org.apache.derby.impl.sql.conn.GenericAuthorizer.authorize(GenericAut
> horizer.java:186)^M
>         at 
> org.apache.derby.impl.sql.execute.GenericResultSetFactory.getDDLResul
> tSet(GenericResultSetFactory.java:1073)^M
>         at 
> org.apache.derby.impl.sql.execute.ConstantActionActivation.execute(Co
> nstantActionActivation.java:61)^M
>         at 
> org.apache.derby.impl.sql.GenericActivationHolder.execute(GenericActi
> vationHolder.java:352)^M
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Generi
> cPreparedStatement.java:414)^M
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPre
> paredStatement.java:297)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedState
> ment.java:1235)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Em
> bedPreparedStatement.java:1648)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Embed
> PreparedStatement.java:294)^M
>         at 
> org.apache.derby.catalog.SystemProcedures.SYSCS_INPLACE_COMPRESS_TABL
> E(SystemProcedures.java:1145)^M
>         at 
> org.apache.derby.exe.ac83ba410fx0122x159fx9a84x0000004261f80.g0(Unkno
> wn Source)^M
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)^M
>         at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)^M
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)^M
>         at java.lang.reflect.Method.invoke(Unknown Source)^M
>         at 
> org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMe
> thod.java:46)
>         at 
> org.apache.derby.impl.sql.execute.CallStatementResultSet.open(CallSta
> tementResultSet.java:76)^M
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Generi
> cPreparedStatement.java:416)^M
>         at 
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPre
> paredStatement.java:297)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedState
> ment.java:1235)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Em
> bedPreparedStatement.java:1648)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedCallableStatement.executeStatement(Em
> bedCallableStatement.java:117)^M
>         at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPrepar
> edStatement.java:1303)^M
>         at 
> org.apache.derbyTesting.system.mailjdbc.utils.DbTasks.compressTable(D
> bTasks.java:618)^M
>         at 
> org.apache.derbyTesting.system.mailjdbc.tasks.Backup.DoCompress(Backu
> p.java:79)^M
>         at 
> org.apache.derbyTesting.system.mailjdbc.tasks.Backup.doWork(Backup.ja
> va:68)^M
>         at 
> org.apache.derbyTesting.system.mailjdbc.tasks.Backup.run(Backup.java:
> 46)^M
> Cleanup action completed^M
>        I will add the test to test/langGrantRevokeDDLTest.java.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to