[
https://issues.jboss.org/browse/TEIID-3411?page=com.atlassian.jira.plugin...
]
Steven Hawkins commented on TEIID-3411:
---------------------------------------
Each multi-valued representation is somewhat problematic. Multivalue concat interprets
predicates differently between pushdown and non-pushdown. The array representation is
effectively unsearchable.
A possible definition using a bridge/junction table would look like:
create foreign table users (dn string primary key, uid string, title string) options
(nameinsource 'ou=people,dc=example,dc=com')
create foreign table groups (dn string primary key, description string) options
(nameinsource 'ou=groups,dc=example,dc=com')
create foreign table user_group (user_dn string options (nameinsource 'dn'),
group_dn string options (nameinsource 'memberOf' "teiid_ldap:unnest"
true), FOREIGN KEY (user_dn) REFERENCES users (dn), FOREIGN KEY (group_dn) REFERENCES
groups (dn) ) options (nameinsource 'ou=people,dc=example,dc=com')
Such that the unnest is specified as etension metadata (the initial checkin of this issue
is sufficient as well). However this would require two queries to get information
spanning users/user_group rather than just 1 - unless the ldap translator were enhanced to
support join pushdown (but that would require additional restrictions).
It also has the issue that projection of user_group.group_dn is problematic as any
pushdown predicates would need to be re-evaluated in the engine to filter non-matching
values.
A workaround that's worth mentioning is that a non-selectable column addresses some of
the querying/consistency needs:
create foreign table users (dn string primary key, uid string, title string, memeberOf
string options (selectable 'false')) options (nameinsource
'ou=people,dc=example,dc=com')
create foreign table groups (dn string primary key, description string, memeber string
options (selectable 'false')) options (nameinsource
'ou=groups,dc=example,dc=com')
This allows for querying users or groups, but doesn't attempt to return the
member/memberOf attributes. This works in situations where any predicates against the
member/memberOf column can be pushed down. It also doesn't allow for relating
users/groups directly.
LDAP translator and multi-valued arrays
---------------------------------------
Key: TEIID-3411
URL:
https://issues.jboss.org/browse/TEIID-3411
Project: Teiid
Issue Type: Feature Request
Components: LDAP Connector
Reporter: Debbie Steigner
Assignee: Steven Hawkins
Fix For: 8.11
The problem is with how multi-valued attribute from the LDAP response is handled. They
don't want to have the data mapped to an array or multivalued-concat and then
transformed into another table to get the unique values. There is an issue with the
translator as it should handle multivalued attribute, by simply creating multiple rows for
each value of the multivalued attribute.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)