]> git.sur5r.net Git - openldap/commitdiff
VERY PRELIMINARY support for PostgreSQL and IBM db2
authorPierangelo Masarati <ando@openldap.org>
Tue, 13 Aug 2002 17:07:40 +0000 (17:07 +0000)
committerPierangelo Masarati <ando@openldap.org>
Tue, 13 Aug 2002 17:07:40 +0000 (17:07 +0000)
14 files changed:
servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_create.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_drop.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/ibmdb2/slapd.conf [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_create.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_data.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_drop.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_metadata.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/backsql_create.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/backsql_drop.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/slapd.conf [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/testdb_create.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/testdb_data.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/testdb_drop.sql [new file with mode: 0644]
servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql [new file with mode: 0644]

diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_create.sql b/servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_create.sql
new file mode 100644 (file)
index 0000000..ca19bb1
--- /dev/null
@@ -0,0 +1,65 @@
+drop table ldap_oc_mappings;
+create table ldap_oc_mappings
+ (
+       id integer not null primary key,
+       name varchar(64) not null,
+       keytbl varchar(64) not null,
+       keycol varchar(64) not null,
+       create_proc varchar(255),
+       delete_proc varchar(255),
+       expect_return integer not null
+);
+
+drop table ldap_attr_mappings;
+create table ldap_attr_mappings
+ (
+       id integer not null primary key,
+       oc_map_id integer not null references ldap_oc_mappings(id),
+       name varchar(255) not null,
+       sel_expr varchar(255) not null,
+       sel_expr_u varchar(255),
+       from_tbls varchar(255) not null,
+       join_where varchar(255),
+       add_proc varchar(255),
+       delete_proc varchar(255),
+       param_order integer not null,
+       expect_return integer not null
+);
+
+drop table ldap_entries;
+create table ldap_entries
+ (
+       id integer not null primary key,
+       dn varchar(255) not null,
+       oc_map_id integer not null references ldap_oc_mappings(id),
+       parent int NOT NULL ,
+       keyval int NOT NULL 
+);
+
+alter table ldap_entries add 
+       constraint unq1_ldap_entries unique
+       (
+               oc_map_id,
+               keyval
+       );  
+
+alter table ldap_entries add
+       constraint unq2_ldap_entries unique
+       (
+               dn
+       );  
+
+drop table ldap_referrals;
+create table ldap_referrals
+ (
+       entry_id integer not null references ldap_entries(id),
+       url varchar(256) not null
+);
+
+drop table ldap_entry_objclasses;
+create table ldap_entry_objclasses
+ (
+       entry_id integer not null references ldap_entries(id),
+       oc_name varchar(64)
+ );
+
diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_drop.sql b/servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_drop.sql
new file mode 100644 (file)
index 0000000..49e7e3a
--- /dev/null
@@ -0,0 +1,5 @@
+DROP TABLE ldap_referrals;
+DROP TABLE ldap_entry_objclasses;
+DROP TABLE ldap_attr_mappings;
+DROP TABLE ldap_entries;
+DROP TABLE ldap_oc_mappings;
diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/slapd.conf b/servers/slapd/back-sql/rdbms_depend/ibmdb2/slapd.conf
new file mode 100644 (file)
index 0000000..86661da
--- /dev/null
@@ -0,0 +1,33 @@
+# $OpenLDAP$
+#
+# See slapd.conf(5) for details on configuration options.
+# This file should NOT be world readable.
+#
+include                /usr/local/etc/openldap/schema/core.schema
+include                /usr/local/etc/openldap/schema/cosine.schema
+include                /usr/local/etc/openldap/schema/inetorgperson.schema
+
+# Define global ACLs to disable default read access.
+
+# Do not enable referrals until AFTER you have a working directory
+# service AND an understanding of referrals.
+#referral      ldap://root.openldap.org
+
+pidfile                /usr/local/var/slapd.pid
+argsfile       /usr/local/var/slapd.args
+
+#######################################################################
+# sql database definitions
+#######################################################################
+
+database       sql
+suffix         "o=sql,c=RU"
+rootdn         "cn=root,o=sql,c=RU"
+rootpw         secret
+dbname         ldap_db2
+dbuser         db2inst1
+dbpasswd       ibmdb2
+subtree_cond   "upper(ldap_entries.dn) LIKE CONCAT('%',?)"
+insentry_query "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select max(id)+1 from ldap_entries),?,?,?,?)"
+upper_func     "upper"
+
diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_create.sql b/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_create.sql
new file mode 100644 (file)
index 0000000..a1da4a1
--- /dev/null
@@ -0,0 +1,66 @@
+drop table persons;
+CREATE TABLE persons (
+       id int NOT NULL,
+       name varchar(255) NOT NULL
+);
+
+drop table institutes;
+CREATE TABLE institutes (
+       id int NOT NULL,
+       name varchar(255)
+);
+
+drop table documents;
+CREATE TABLE documents (
+       id int NOT NULL,
+       title varchar(255) NOT NULL,
+       abstract varchar(255)
+);
+
+drop table authors_docs;
+CREATE TABLE authors_docs (
+       pers_id int NOT NULL,
+       doc_id int NOT NULL
+);
+
+drop table phones;
+CREATE TABLE phones (
+       id int NOT NULL ,
+       phone varchar(255) NOT NULL ,
+       pers_id int NOT NULL 
+);
+
+
+
+ALTER TABLE authors_docs  ADD 
+       CONSTRAINT PK_authors_docs PRIMARY KEY  
+       (
+               pers_id,
+               doc_id
+       );
+
+ALTER TABLE documents  ADD 
+       CONSTRAINT PK_documents PRIMARY KEY  
+       (
+               id
+       ); 
+
+ALTER TABLE institutes  ADD 
+       CONSTRAINT PK_institutes PRIMARY KEY  
+       (
+               id
+       );  
+
+
+ALTER TABLE persons  ADD 
+       CONSTRAINT PK_persons PRIMARY KEY  
+       (
+               id
+       ); 
+
+ALTER TABLE phones  ADD 
+       CONSTRAINT PK_phones PRIMARY KEY  
+       (
+               id
+       ); 
+
diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_data.sql b/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_data.sql
new file mode 100644 (file)
index 0000000..f141f41
--- /dev/null
@@ -0,0 +1,16 @@
+insert into institutes (id,name) values (1,'sql');
+
+insert into persons (id,name) values (1,'Mitya Kovalev');
+insert into persons (id,name) values (2,'Torvlobnor Puzdoy');
+insert into persons (id,name) values (3,'Akakiy Zinberstein');
+
+insert into phones (id,phone,pers_id) values (1,'332-2334',1);
+insert into phones (id,phone,pers_id) values (2,'222-3234',1);
+insert into phones (id,phone,pers_id) values (3,'545-4563',2);
+
+insert into documents (id,abstract,title) values (1,'abstract1','book1');
+insert into documents (id,abstract,title) values (2,'abstract2','book2');
+
+insert into authors_docs (pers_id,doc_id) values (1,1);
+insert into authors_docs (pers_id,doc_id) values (1,2);
+insert into authors_docs (pers_id,doc_id) values (2,1);
diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_drop.sql b/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_drop.sql
new file mode 100644 (file)
index 0000000..17b12af
--- /dev/null
@@ -0,0 +1,5 @@
+DROP TABLE persons;
+DROP TABLE institutes;
+DROP TABLE documents;
+DROP TABLE authors_docs;
+DROP TABLE phones;
diff --git a/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_metadata.sql b/servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_metadata.sql
new file mode 100644 (file)
index 0000000..c38036b
--- /dev/null
@@ -0,0 +1,74 @@
+--mappings 
+
+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);
+
+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);
+
+
+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);
+
+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',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 (3,1,'sn','persons.name','persons',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 (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 (7,3,'o','institutes.name','institutes',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 (8,1,'documentDN','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);
+
+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
+       
+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);
+
+insert into ldap_entries (id,dn,oc_map_id,parent,keyval)
+values (3,'cn=Torvlobnor Puzdoy,o=sql,c=RU',1,1,2);
+
+insert into ldap_entries (id,dn,oc_map_id,parent,keyval)
+values (4,'cn=Akakiy Zinberstein,o=sql,c=RU',1,1,3);
+
+insert into ldap_entries (id,dn,oc_map_id,parent,keyval)
+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
+
+insert into ldap_entry_objclasses (entry_id,oc_name)
+values (4,'referral');
+
+insert into ldap_referrals (entry_id,url)
+values (4,'http://localhost');
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/backsql_create.sql b/servers/slapd/back-sql/rdbms_depend/pgsql/backsql_create.sql
new file mode 100644 (file)
index 0000000..22f6acc
--- /dev/null
@@ -0,0 +1,60 @@
+drop table ldap_oc_mappings;
+create table ldap_oc_mappings
+ (
+       id integer not null primary key,
+       name varchar(64) not null,
+       keytbl varchar(64) not null,
+       keycol varchar(64) not null,
+       create_proc varchar(255),
+       delete_proc varchar(255),
+       expect_return int not null
+);
+
+drop table ldap_attr_mappings;
+create table ldap_attr_mappings
+ (
+       id integer not null primary key,
+       oc_map_id integer not null references ldap_oc_mappings(id),
+       name varchar(255) not null,
+       sel_expr varchar(255) not null,
+       sel_expr_u varchar(255),
+       from_tbls varchar(255) not null,
+       join_where varchar(255),
+       add_proc varchar(255),
+       delete_proc varchar(255),
+       param_order int not null,
+       expect_return int not null
+);
+
+drop table ldap_entries;
+create table ldap_entries
+ (
+       id integer not null primary key,
+       dn varchar(255) not null,
+       oc_map_id integer not null references ldap_oc_mappings(id),
+       parent int NOT NULL,
+       keyval int NOT NULL,
+       UNIQUE ( oc_map_id, keyval ),
+       UNIQUE ( dn )
+);
+
+drop table ldap_referrals;
+create table ldap_referrals
+ (
+       entry_id integer not null references ldap_entries(id),
+       url text not null
+);
+
+drop table ldap_entry_objclasses;
+create table ldap_entry_objclasses
+ (
+       entry_id integer not null references ldap_entries(id),
+       oc_name varchar(64)
+ );
+
+----- Apparently PostgreSQL 7.0 does not know concat(); however,
+----- back-sql can be configured to use '||' for string concatenation.
+----- Those who can't live without concat() can uncomment this:
+-- drop function concat(text, text);
+-- create function concat(text, text) returns text as 'select $1 || $2;' language 'sql';
+
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/backsql_drop.sql b/servers/slapd/back-sql/rdbms_depend/pgsql/backsql_drop.sql
new file mode 100644 (file)
index 0000000..b497eb9
--- /dev/null
@@ -0,0 +1,9 @@
+DROP TABLE IF EXISTS ldap_referrals;
+
+DROP TABLE IF EXISTS ldap_entry_objclasses;
+
+DROP TABLE IF EXISTS ldap_attr_mappings;
+
+DROP TABLE IF EXISTS ldap_entries;
+
+DROP TABLE IF EXISTS ldap_oc_mappings;
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/slapd.conf b/servers/slapd/back-sql/rdbms_depend/pgsql/slapd.conf
new file mode 100644 (file)
index 0000000..3a5dbb5
--- /dev/null
@@ -0,0 +1,35 @@
+# $OpenLDAP$
+#
+# See slapd.conf(5) for details on configuration options.
+# This file should NOT be world readable.
+#
+include                /usr/local/etc/openldap/schema/core.schema
+include                /usr/local/etc/openldap/schema/cosine.schema
+include                /usr/local/etc/openldap/schema/inetorgperson.schema
+
+# Define global ACLs to disable default read access.
+
+# Do not enable referrals until AFTER you have a working directory
+# service AND an understanding of referrals.
+#referral      ldap://root.openldap.org
+
+pidfile                /usr/local/var/slapd.pid
+argsfile       /usr/local/var/slapd.args
+
+#######################################################################
+# sql database definitions
+#######################################################################
+
+database       sql
+suffix         "o=sql,c=RU"
+rootdn         "cn=root,o=sql,c=RU"
+rootpw         secret
+dbname         PostgreSQL
+dbuser         postgres
+dbpasswd       postgres
+subtree_cond   "upper(ldap_entries.dn) LIKE '%'||?"
+insentry_query "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select max(id)+1 from ldap_entries),?,?,?,?)"
+upper_func     "upper"
+strcast_func   "text"
+has_ldapinfo_dn_ru     no
+
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_create.sql b/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_create.sql
new file mode 100644 (file)
index 0000000..904d51b
--- /dev/null
@@ -0,0 +1,37 @@
+drop table persons;
+CREATE TABLE persons (
+       id int NOT NULL,
+       name varchar(255) NOT NULL,
+       PRIMARY KEY ( id )
+);
+
+drop table institutes;
+CREATE TABLE institutes (
+       id int NOT NULL,
+       name varchar(255),
+       PRIMARY KEY ( id )
+);
+
+drop table documents;
+CREATE TABLE documents (
+       id int NOT NULL,
+       title varchar(255) NOT NULL,
+       abstract varchar(255),
+       PRIMARY KEY ( id )
+);
+
+drop table authors_docs;
+CREATE TABLE authors_docs (
+       pers_id int NOT NULL,
+       doc_id int NOT NULL,
+       PRIMARY KEY ( pers_id, doc_id )
+);
+
+drop table phones;
+CREATE TABLE phones (
+       id int NOT NULL ,
+       phone varchar(255) NOT NULL ,
+       pers_id int NOT NULL,
+       PRIMARY KEY ( id )
+);
+
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_data.sql b/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_data.sql
new file mode 100644 (file)
index 0000000..f141f41
--- /dev/null
@@ -0,0 +1,16 @@
+insert into institutes (id,name) values (1,'sql');
+
+insert into persons (id,name) values (1,'Mitya Kovalev');
+insert into persons (id,name) values (2,'Torvlobnor Puzdoy');
+insert into persons (id,name) values (3,'Akakiy Zinberstein');
+
+insert into phones (id,phone,pers_id) values (1,'332-2334',1);
+insert into phones (id,phone,pers_id) values (2,'222-3234',1);
+insert into phones (id,phone,pers_id) values (3,'545-4563',2);
+
+insert into documents (id,abstract,title) values (1,'abstract1','book1');
+insert into documents (id,abstract,title) values (2,'abstract2','book2');
+
+insert into authors_docs (pers_id,doc_id) values (1,1);
+insert into authors_docs (pers_id,doc_id) values (1,2);
+insert into authors_docs (pers_id,doc_id) values (2,1);
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_drop.sql b/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_drop.sql
new file mode 100644 (file)
index 0000000..7c5e9e7
--- /dev/null
@@ -0,0 +1,5 @@
+DROP TABLE IF EXISTS persons;
+DROP TABLE IF EXISTS institutes;
+DROP TABLE IF EXISTS documents;
+DROP TABLE IF EXISTS authors_docs;
+DROP TABLE IF EXISTS phones;
diff --git a/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql b/servers/slapd/back-sql/rdbms_depend/pgsql/testdb_metadata.sql
new file mode 100644 (file)
index 0000000..11e9b63
--- /dev/null
@@ -0,0 +1,58 @@
+--mappings 
+
+insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return) values (1,'inetOrgPerson','persons','id','select create_person()',NULL,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);
+
+
+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,'update persons set name=? where id=?',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',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 (3,1,'sn','persons.name','persons',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 (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 (7,3,'o','institutes.name','institutes',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 (8,1,'documentDN','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);
+
+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
+       
+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);
+
+insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (3,'cn=Torvlobnor Puzdoy,o=sql,c=RU',1,1,2);
+
+insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values (4,'cn=Akakiy Zinberstein,o=sql,c=RU',1,1,3);
+
+insert into ldap_entries (id,dn,oc_map_id,parent,keyval) 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
+
+insert into ldap_entry_objclasses (entry_id,oc_name) values (4,'referral');
+
+insert into ldap_referrals (entry_id,url) values (4,'http://localhost');
+
+-- procedures
+
+create function create_person () returns int
+       as 'insert into persons (id,name) values ((select max(id)+1 from persons),'''');
+       select max(id) from persons'
+language 'sql';
+