[teiid-issues] [JBoss JIRA] (TEIID-3411) LDAP translator and multi-valued arrays

Steven Hawkins (JIRA) issues at jboss.org
Tue May 26 14:03:02 EDT 2015


    [ https://issues.jboss.org/browse/TEIID-3411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13071209#comment-13071209 ] 

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)


More information about the teiid-issues mailing list