-
Bug
-
Resolution: Fixed
-
Major
-
1.1.8
-
None
-
Oracle 10
The exception:
java.sql.SQLException: ORA-00933: la commande SQL ne se termine pas correctement at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745) at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219) at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:813) at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1049) at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:854) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1154) at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3415) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.avalon.excalibur.datasource.AbstractJdbcConnection$ProxiedObject.invoke(AbstractJdbcConnection.java:468) at $Proxy14.executeQuery(Unknown Source) at org.ametys.runtime.plugins.core.right.profile.DefaultProfileBasedRightsManager.hasUserOnlyRight(DefaultProfileBasedRightsManager.java:1076) at org.ametys.runtime.plugins.core.right.profile.DefaultProfileBasedRightsManager.hasRight(DefaultProfileBasedRightsManager.java:355) ...
The SQL executed:
SELECT UR.Context FROM Rights_ProfileRights AS PR, Rights_UserRights AS UR WHERE PR.Right_Id = ? AND UR.Profile_Id = PR.Profile_Id AND UR.Login = ? AND (UR.Context = ? OR UR.Context LIKE ? OR UR.Context = ? OR UR.Context = ? )
This is because the token AS is not supported by Oracle for table references (but supported on column references) even if it is SQL-99 compliant!
As this token is optional in SQL-99, i propose to remove it:
<query specification> ::= SELECT [ <set quantifier> ] <select list> <table expression> ... <table expression> ::= <from clause> [ <where clause> ] [ <group by clause> ] [ <having clause> ] <from clause> ::= FROM <table reference list> <table reference list> ::= <table reference> [ { <comma> <table reference> }... ] <table reference> ::= <table primary> | <joined table> <table primary> ::= <table or query name> [ [ AS ] <correlation name> [ <left paren> <derived column list> <right paren> ] ] | ...