--- servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql 2005/01/18 00:10:02 1.13 +++ servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql 2005/01/18 22:21:48 1.14 @@ -14,6 +14,8 @@ insert into ldap_oc_mappings (id,name,ke insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (3,'organization','institutes','id','SELECT create_o()','DELETE FROM institutes WHERE id=?',0); +insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (4,'referral','referrals','id','SELECT create_referral()','DELETE FROM referrals WHERE id=?',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 @@ -49,6 +51,8 @@ insert into ldap_attr_mappings (id,oc_ma 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 (12,3,'dc','lower(institutes.name)','institutes,ldap_entries AS dcObject,ldap_entry_objclasses AS auxObjectClass','institutes.id=dcObject.keyval AND dcObject.oc_map_id=3 AND dcObject.id=auxObjectClass.entry_id AND auxObjectClass.oc_name=''dcObject''',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 (13,4,'ou','referrals.name','referrals',NULL,'UPDATE referrals SET name=? WHERE id=?',NULL,3,0); + -- 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 @@ -68,18 +72,21 @@ insert into ldap_entries (id,dn,oc_map_i insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (6,'documentTitle=book2,dc=example,dc=com',2,1,2); +insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (7,'ou=Referral,dc=example,dc=com',4,1,1); + -- 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 (1,'dcObject'); -insert into ldap_entry_objclasses (entry_id,oc_name) values (4,'referral'); +insert into ldap_entry_objclasses (entry_id,oc_name) values (7,'extensibleObject'); + -- 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:9010/'); +insert into ldap_referrals (entry_id,url) values (7,'ldap://localhost:9010/'); -- procedures -- these procedures are specific for this RDBMS and are used in mapping objectClass and attributeType creation/modify/deletion @@ -131,3 +138,11 @@ as ' select max(id) from institutes ' language 'sql'; +create function create_referral () returns int +as ' + select setval (''referrals_id_seq'', (select case when max(id) is null then 1 else max(id) end from referrals)); + insert into referrals (id,name,surname) + values ((select case when max(id) is null then 1 else nextval(''referrals_id_seq'') end from referrals),'''',''''); + select max(id) from referrals +' language 'sql'; +