]> git.sur5r.net Git - openldap/blob - servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql
Converted ch_malloc, ch_calloc and ch_realloc calls to SLAP_MALLOC,
[openldap] / servers / slapd / back-sql / rdbms_depend / pgsql / testdb_metadata.sql
1 --mappings 
2
3 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);
4
5 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (2,'document','documents','id',NULL,NULL,0);
6
7 insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (3,'organization','institutes','id',NULL,NULL,0);
8
9
10 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);
11
12 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);
13
14 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 (3,1,'givenName','persons.name','persons',NULL,'update persons set name=? where id=?',NULL,3,0);
15 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,1,'sn','persons.surname','persons',NULL,'update persons set surname=? where id=?',NULL,3,0);
16
17 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 (4,2,'description','documents.abstract','documents',NULL,NULL,NULL,3,0);
18
19 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);
20
21 -- insert into ldap_attr_mappings (id,oc_map_id,name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return)
22 -- values (6,2,'documentAuthor','persons.name','persons,documents,authors_docs',
23 --         'persons.id=authors_docs.pers_id AND documents.id=authors_docs.doc_id',
24 --      NULL,NULL,3,0);
25
26 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);
27
28 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','ldap_entries.dn','ldap_entries,documents,authors_docs,persons','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);
29
30 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);
31         
32 -- entries
33         
34 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (1,'o=sql,c=RU',3,0,1);
35
36 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (2,'cn=Mitya Kovalev,o=sql,c=RU',1,1,1);
37
38 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (3,'cn=Torvlobnor Puzdoy,o=sql,c=RU',1,1,2);
39
40 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (4,'cn=Akakiy Zinberstein,o=sql,c=RU',1,1,3);
41
42 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (5,'documentTitle=book1,o=sql,c=RU',2,1,1);
43
44 insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (6,'documentTitle=book2,o=sql,c=RU',2,1,2);
45         
46         
47 -- referrals
48
49 insert into ldap_entry_objclasses (entry_id,oc_name) values (4,'referral');
50
51 insert into ldap_referrals (entry_id,url) values (4,'ldap://localhost/');
52
53 -- procedures
54
55 create function create_person () returns int
56 as '
57         select setval (''persons_id_seq'', (select max(id) from persons));
58         insert into persons (id,name,surname) 
59                 values (nextval(''persons_id_seq''),'''','''');
60         select max(id) from persons
61 ' language 'sql';
62
63 create function update_person_cn (varchar, int) returns int
64 as '
65         update persons set name = (
66                 select case 
67                         when position('' '' in $1) = 0 then $1 
68                         else substr($1, 1, position('' '' in $1) - 1)
69                 end
70         ),surname = (
71                 select case 
72                         when position('' '' in $1) = 0 then ''''
73                         else substr($1, position('' '' in $1) + 1) 
74                 end
75         ) where id = $2;
76         select $2 as return
77 ' language 'sql';
78
79 create function delete_person (int) returns int
80 as '
81         delete from phones where pers_id = $1;
82         delete from authors_docs where pers_id = $1;
83         delete from persons where id = $1;
84         select $1 as return
85 ' language 'sql';
86
87 create function add_phone (varchar, int) returns int
88 as '
89         select setval (''phones_id_seq'', (select max(id) from phones));
90         insert into phones (id,phone,pers_id)
91                 values (nextval(''phones_id_seq''),$1,$2);
92         select max(id) from phones
93 ' language 'sql';
94
95 create function delete_phone (varchar, int) returns int
96 as '
97         delete from phones where phone = $1 and pers_id = $2;
98         select $2 as result
99 ' language 'sql';
100