]> git.sur5r.net Git - openldap/commitdiff
should improve readability and (hopefully) decrease traffic on openldap-software...
authorPierangelo Masarati <ando@openldap.org>
Fri, 16 Jan 2004 18:56:22 +0000 (18:56 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 16 Jan 2004 18:56:22 +0000 (18:56 +0000)
servers/slapd/back-sql/rdbms_depend/mysql/slapd.conf
servers/slapd/back-sql/rdbms_depend/mysql/testdb_metadata.sql
servers/slapd/back-sql/rdbms_depend/pgsql/slapd.conf
servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql

index 3157628b5fb7874eb5d64235d2933b23b0f3d4a9..87f626d0617f6c06885eff1f5f6d8d9421a9706f 100644 (file)
@@ -29,3 +29,4 @@ dbuser                root
 dbpasswd       
 subtree_cond   "ldap_entries.dn LIKE CONCAT('%',?)"
 insentry_query "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
+at_query       "SELECT name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return FROM ldap_attr_mappings WHERE oc_map_id=?"
index 13aef2574e97bc32b9455fd48e7b5190a9bb3632..f119abba799339eb6c4bdb184260d6741e5e6958 100644 (file)
@@ -1,5 +1,13 @@
---mappings 
-
+-- mappings 
+
+-- objectClass mappings: these may be viewed as structuralObjectClass, the ones that are used to decide how to build an entry
+--     id              a unique number identifying the objectClass
+--     name            the name of the objectClass; it MUST match the name of an objectClass that is loaded in slapd's schema
+--     keytbl          the name of the table that is referenced for the primary key of an entry
+--     keycol          the name of the column in "keytbl" that contains the primary key of an entry; the pair "keytbl.keycol" uniquely identifies an entry of objectClass "id"
+--     create_proc     a procedure to create the entry
+--     delete_proc     a procedure to delete the entry; it takes "keytbl.keycol" of the row to be deleted
+--     expect_return   a bitmap that marks whether create_proc (1) and delete_proc (2) return a value or not
 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return)
 values (1,'inetOrgPerson','persons','id',"insert into persons (name) values ('');\n select last_insert_id();",NULL,0);
 
@@ -9,7 +17,17 @@ values (2,'document','documents','id',NULL,NULL,0);
 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return)
 values (3,'organization','institutes','id',NULL,NULL,0);
 
-
+-- attributeType mappings: describe how an attributeType for a certain objectClass maps to the SQL data.
+--     id              a unique number identifying the attribute       
+--     oc_map_id       the value of "ldap_oc_mappings.id" that identifies the objectClass this attributeType is defined for
+--     name            the name of the attributeType; it MUST match the name of an attributeType that is loaded in slapd's schema
+--     sel_expr        the expression that is used to select this attribute (the "select <sel_expr> from ..." portion)
+--     from_tbls       the expression that defines the table(s) this attribute is taken from (the "select ... from <from_tbls> where ..." portion)
+--     join_where      the expression that defines the condition to select this attribute (the "select ... where <join_where> ..." portion)
+--     add_proc        a procedure to insert the attribute; it takes the value of the attribute that is added, and the "keytbl.keycol" of the entry it is associated to
+--     delete_proc     a procedure to delete the attribute; it takes the value of the attribute that is added, and the "keytbl.keycol" of the entry it is associated to
+--     param_order     a mask that marks if the "keytbl.keycol" value comes before or after the value in add_proc (1) and delete_proc (2)
+--     expect_return   a mask that marks whether add_proc (1) and delete_proc(2) are expected to return a value or not
 insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
 values (1,1,'cn','persons.name','persons',NULL,NULL,NULL,3,0);
 
@@ -26,10 +44,10 @@ values (4,2,'description','documents.abstract','documents',NULL,NULL,NULL,3,0);
 insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
 values (5,2,'documentTitle','documents.title','documents',NULL,NULL,NULL,3,0);
 
--- insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
--- values (6,2,'documentAuthor','persons.name','persons,documents,authors_docs',
---         'persons.id=authors_docs.pers_id AND documents.id=authors_docs.doc_id',
---     NULL,NULL,3,0);
+insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
+values (6,2,'documentAuthor','documentAuthor.dn','ldap_entries AS documentAuthor,documents,authors_docs,persons',
+       'documentAuthor.keyval=persons.id AND documentAuthor.oc_map_id=1 AND authors_docs.doc_id=documents.id AND authors_docs.pers_id=persons.id',
+       NULL,NULL,3,0);
 
 insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
 values (7,3,'o','institutes.name','institutes',NULL,NULL,NULL,3,0);
@@ -39,13 +57,12 @@ values (8,1,'documentDN','ldap_entries.dn','ldap_entries,documents,authors_docs,
         'ldap_entries.keyval=documents.id AND ldap_entries.oc_map_id=2 AND authors_docs.doc_id=documents.id AND authors_docs.pers_id=persons.id',
        NULL,NULL,3,0);
 
-insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
-values (9,2,'documentAuthor','ldap_entries.dn','ldap_entries,documents,authors_docs,persons',
-        'ldap_entries.keyval=persons.id AND ldap_entries.oc_map_id=1 AND authors_docs.doc_id=documents.id AND authors_docs.pers_id=persons.id',
-       NULL,NULL,3,0);
-       
--- entries
-       
+-- entries mapping: each entry must appear in this table, with a unique DN rooted at the database naming context
+--     id              a unique number > 0 identifying the entry
+--     dn              the DN of the entry, in "pretty" form
+--     oc_map_id       the "ldap_oc_mappings.id" of the main objectClass of this entry (view it as the structuralObjectClass)
+--     parent          the "ldap_entries.id" of the parent of this objectClass; 0 if it is the "suffix" of the database
+--     keyval          the value of the "keytbl.keycol" defined for this objectClass
 insert into ldap_entries (id,dn,oc_map_id,parent,keyval)
 values (1,'o=sql,c=RU',3,0,1);
 
@@ -64,11 +81,15 @@ values (5,'documentTitle=book1,o=sql,c=RU',2,1,1);
 insert into ldap_entries (id,dn,oc_map_id,parent,keyval)
 values (6,'documentTitle=book2,o=sql,c=RU',2,1,2);
        
-       
--- referrals
 
+-- objectClass mapping: entries that have multiple objectClass instances are listed here with the objectClass name (view them as auxiliary objectClass)
+--     entry_id        the "ldap_entries.id" of the entry this objectClass value must be added
+--     oc_name         the name of the objectClass; it MUST match the name of an objectClass that is loaded in slapd's schema
 insert into ldap_entry_objclasses (entry_id,oc_name)
 values (4,'referral');
 
+-- referrals mapping: entries that should be treated as referrals are stored here
+--     entry_id        the "ldap_entries.id" of the entry that should be treated as a referral
+--     url             the URI of the referral
 insert into ldap_referrals (entry_id,url)
 values (4,'http://localhost');
index aecc890597407c1941e14db58d88c6b27c739f39..241a27c05851d0d91210010b4854db59beaf73ef 100644 (file)
@@ -28,6 +28,7 @@ dbname                PostgreSQL
 dbuser         postgres
 dbpasswd       postgres
 insentry_query "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select max(id)+1 from ldap_entries),?,?,?,?)"
+at_query       "SELECT name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return FROM ldap_attr_mappings WHERE oc_map_id=?"
 upper_func     "upper"
 strcast_func   "text"
 concat_pattern "?||?"
index d42175906e4ef352e8628c128a2151b328751adc..ab9ab045a439d56c314cc0986adf519a97303b31 100644 (file)
@@ -1,12 +1,30 @@
---mappings 
-
+-- mappings 
+
+-- objectClass mappings: these may be viewed as structuralObjectClass, the ones that are used to decide how to build an entry
+--     id              a unique number identifying the objectClass
+--     name            the name of the objectClass; it MUST match the name of an objectClass that is loaded in slapd's schema
+--     keytbl          the name of the table that is referenced for the primary key of an entry
+--     keycol          the name of the column in "keytbl" that contains the primary key of an entry; the pair "keytbl.keycol" uniquely identifies an entry of objectClass "id"
+--     create_proc     a procedure to create the entry
+--     delete_proc     a procedure to delete the entry; it takes "keytbl.keycol" of the row to be deleted
+--     expect_return   a bitmap that marks whether create_proc (1) and delete_proc (2) return a value or not
 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (1,'inetOrgPerson','persons','id','select create_person()','select delete_person(?)',0);
 
 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (2,'document','documents','id',NULL,NULL,0);
 
 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (3,'organization','institutes','id',NULL,NULL,0);
 
-
+-- attributeType mappings: describe how an attributeType for a certain objectClass maps to the SQL data.
+--     id              a unique number identifying the attribute       
+--     oc_map_id       the value of "ldap_oc_mappings.id" that identifies the objectClass this attributeType is defined for
+--     name            the name of the attributeType; it MUST match the name of an attributeType that is loaded in slapd's schema
+--     sel_expr        the expression that is used to select this attribute (the "select <sel_expr> from ..." portion)
+--     from_tbls       the expression that defines the table(s) this attribute is taken from (the "select ... from <from_tbls> where ..." portion)
+--     join_where      the expression that defines the condition to select this attribute (the "select ... where <join_where> ..." portion)
+--     add_proc        a procedure to insert the attribute; it takes the value of the attribute that is added, and the "keytbl.keycol" of the entry it is associated to
+--     delete_proc     a procedure to delete the attribute; it takes the value of the attribute that is added, and the "keytbl.keycol" of the entry it is associated to
+--     param_order     a mask that marks if the "keytbl.keycol" value comes before or after the value in add_proc (1) and delete_proc (2)
+--     expect_return   a mask that marks whether add_proc (1) and delete_proc(2) are expected to return a value or not
 insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return) values (1,1,'cn','text(persons.name||'' ''||persons.surname)','persons',NULL,'select update_person_cn(?,?)',NULL,3,0);
 
 insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return) values (2,1,'telephoneNumber','phones.phone','persons,phones','phones.pers_id=persons.id','select add_phone(?,?)','select delete_phone(?,?)',3,0);
@@ -24,8 +42,13 @@ insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,
 
 insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return) values (8,1,'documentIdentifier','documentIdentifier.dn','ldap_entries AS documentIdentifier,documents,authors_docs,persons','documentIdentifier.keyval=documents.id AND documentIdentifier.oc_map_id=2 AND authors_docs.doc_id=documents.id AND authors_docs.pers_id=persons.id',NULL,NULL,3,0);
 
--- entries
-       
+
+-- entries mapping: each entry must appear in this table, with a unique DN rooted at the database naming context
+--     id              a unique number > 0 identifying the entry
+--     dn              the DN of the entry, in "pretty" form
+--     oc_map_id       the "ldap_oc_mappings.id" of the main objectClass of this entry (view it as the structuralObjectClass)
+--     parent          the "ldap_entries.id" of the parent of this objectClass; 0 if it is the "suffix" of the database
+--     keyval          the value of the "keytbl.keycol" defined for this objectClass
 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (1,'o=sql,c=RU',3,0,1);
 
 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (2,'cn=Mitya Kovalev,o=sql,c=RU',1,1,1);
@@ -39,14 +62,18 @@ insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (5,'documentTitl
 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (6,'documentTitle=book2,o=sql,c=RU',2,1,2);
        
        
--- referrals
-
+-- objectClass mapping: entries that have multiple objectClass instances are listed here with the objectClass name (view them as auxiliary objectClass)
+--     entry_id        the "ldap_entries.id" of the entry this objectClass value must be added
+--     oc_name         the name of the objectClass; it MUST match the name of an objectClass that is loaded in slapd's schema
 insert into ldap_entry_objclasses (entry_id,oc_name) values (4,'referral');
 
+-- referrals mapping: entries that should be treated as referrals are stored here
+--     entry_id        the "ldap_entries.id" of the entry that should be treated as a referral
+--     url             the URI of the referral
 insert into ldap_referrals (entry_id,url) values (4,'ldap://localhost/');
 
 -- procedures
-
+-- these procedures are specific for this RDBMS and are used in mapping objectClass and attributeType creation/modify/deletion
 create function create_person () returns int
 as '
        select setval (''persons_id_seq'', (select max(id) from persons));