Page 1 of 1

ORA-01003: no statement parsed error on executing REVOKE SELECT statement

Posted: Tue 14 Apr 2020 20:59
by anatoli
There seems to be a bug in Devart.Data.Universal.Oracle provider (direct mode). The problem occurs when executing REVOKE SELECT statement, as for instance, in the following sample script:

Code: Select all

CREATE USER PDUSER IDENTIFIED BY secret123;
CREATE TABLE PDTABLE (i int);
GRANT SELECT ON PDTABLE TO PDUSER;
REVOKE SELECT ON PDTABLE FROM PDUSER;   --< ORA-01003: no statement 
DROP USER PDUSER CASCADE;               -- cleanup statements
DROP TABLE PDTABLE;
This script can be successfully executed with some Oracle client application, such as Oracle SQL Developer. But executing this sequence of SQL commands with Oracle provider for dotConnect universal results in the following exception thrown after “REVOKE SELECT ON PDTABLE FROM PDUSER” command:

Code: Select all

---> Devart.Data.Universal.UniException (0x80004005): ORA-01003: no statement parsed 
---> Devart.Data.Oracle.OracleException (0x80004005): ORA-01003: no statement parsed
   at Devart.Data.Oracle.dh.a(em A_0, Int32 A_1)
   at Devart.Data.Oracle.dh.Execute(Int32 OQQ0OCQOQ0, c6 OQ00QCQOQ0)
   at Devart.Data.Oracle.cu.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3, Boolean A_4)
   at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
   at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at Devart.Data.Universal.UniCommand.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3, Boolean A_4)
   at Devart.Data.Universal.UniCommand.a(CommandBehavior A_0, IDisposable A_1, Int32 A_2, Int32 A_3, Boolean A_4)
   at Devart.Data.Universal.UniCommand.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords)
   at Devart.Common.DbCommandBase.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords, Boolean nonQuery)
   at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
   at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
Currently, we are using dotConnect universal 3.80.1967, but I have also tried 3.80.2109, which seems to be having the same problem.

Re: ORA-01003: no statement parsed error on executing REVOKE SELECT statement

Posted: Wed 15 Apr 2020 19:36
by Shalex
We have reproduced the issue and are investigating it. We will notify you about the result.

Re: ORA-01003: no statement parsed error on executing REVOKE SELECT statement

Posted: Sat 20 Jun 2020 18:57
by Shalex
The bug with executing REVOKE statement via UniScript in the Direct mode is fixed (Oracle) in v3.80.2163: viewtopic.php?f=4&t=41281.