-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74616/
-----------------------------------------------------------
Review request for ranger, Abhishek Kumar, bhavik patel, Dhaval Shah,
Dineshkumar Yadav, Kishor Gollapalliwar, Abhay Kulkarni, Madhan Neethiraj,
Mehul Parikh, Ramesh Mani, Sailaja Polavarapu, and Velmurugan Periasamy.
Bugs: RANGER-4422
https://issues.apache.org/jira/browse/RANGER-4422
Repository: ranger
Description
-------
**Problem Statement:** While searching for users / groups using the "Sync
Source" filter on the Users/Groups page, it leads to an error page. This issue
is present only on Oracle DB
``Error Message:``
2023-09-19 17:10:19,701 ERROR org.apache.ranger.biz.XUserMgr:
[https-jsse-nio-6182-exec-9]: Error getting the exact match of group
=>javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse
Persistence Services - 2.7.12.v20230209-e5c4074ef3):
org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00932: inconsistent
datatypes: expected - got CLOB
Error Code: 932
Call: SELECT COUNT(ID) FROM x_group WHERE (((? = ?) AND LOWER(GROUP_NAME) LIKE
?) AND (LOWER(SYNC_SOURCE) = ?))
bind => [4 parameters bound]
Query: ReportQuery(referenceClass=XXGroup sql="SELECT COUNT(ID) FROM x_group
WHERE (((? = ?) AND LOWER(GROUP_NAME) LIKE ?) AND (LOWER(SYNC_SOURCE) = ?))")
2023-09-19 17:10:21,654 WARN org.apache.ranger.biz.XUserMgr:
[https-jsse-nio-6182-exec-5]: XUserMgr.searchXGroups: unexpected
searchCriteriaParam:name
**Proposed solution:** The above error is due to SYNC_SOURCE column being used
in where clause which is of clob type in oracle and can not be used directly.
According to oracle documents type casting need to be done but since type
casting functions are different in different db flavor using them and
customizing the code for each flavor seems messy. The other possible approach
is we can use 'partial search approach' (rather 'full') in the code which shall
be converted to like query as per underlying db flavor. like clause shall take
care of type casting as well. since 'sync_source' column values are restricted
to 4 distinct possible values, choosing one values in the filter will not bring
the result of another 'sync_source'.
Diffs
-----
security-admin/src/main/java/org/apache/ranger/service/XGroupService.java
650760304
security-admin/src/main/java/org/apache/ranger/service/XUserService.java
d7c011ca3
Diff: https://reviews.apache.org/r/74616/diff/1/
Testing
-------
Tried Ranger installation with the proposed patch and the behaviour is as per
the expectation. Search request with sync_source filter completed successfully
and page was loaded with records.
Thanks,
Pradeep Agrawal