]> git.sur5r.net Git - openldap/commitdiff
need to perform a select after adds...
authorPierangelo Masarati <ando@openldap.org>
Tue, 24 Aug 2004 15:37:10 +0000 (15:37 +0000)
committerPierangelo Masarati <ando@openldap.org>
Tue, 24 Aug 2004 15:37:10 +0000 (15:37 +0000)
servers/slapd/back-sql/rdbms_depend/ibmdb2/backsql_create.sql
servers/slapd/back-sql/rdbms_depend/ibmdb2/testdb_metadata.sql
tests/data/slapd-sql.conf
tests/scripts/sql-test900-write

index ca19bb1ed162d76bbb3a086be179107d24103adc..c82e75002e2cbc614a0b52b1d1a6519a8515e39e 100644 (file)
@@ -6,6 +6,7 @@ create table ldap_oc_mappings
        keytbl varchar(64) not null,
        keycol varchar(64) not null,
        create_proc varchar(255),
+       create_keyval varchar(255),
        delete_proc varchar(255),
        expect_return integer not null
 );
index 57f7a4a9265b22d00b851b2e151a1b41d6a15281..ad6708d7825051b63533df9a8959f098efb9ba35 100644 (file)
@@ -6,19 +6,21 @@
 --      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
+--      create_keyval   a query that returns the id of the last inserted 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)
+insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,create_keyval,delete_proc,expect_return)
 values (1,'inetOrgPerson','persons','id','insert into persons (id,name,surname) values ((select max(id)+1 from persons),'''','''')',
+       'select max(id) from persons',
        'delete from persons where id=?',0);
 
-insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return)
+insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,create_keyval,delete_proc,expect_return)
 values (2,'document','documents','id','insert into documents (id,title,abstract) values ((select max(id)+1 from documents),'''','''')',
-       'delete from documents where id=?',0);
+       'select max(id) from documents','delete from documents where id=?',0);
 
-insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,delete_proc,expect_return)
+insert into ldap_oc_mappings (id,name,keytbl,keycol,create_proc,create_keyval,delete_proc,expect_return)
 values (3,'organization','institutes','id','insert into institutes (id,name) values ((select max(id)+1 from institutes),'''')',
-       'delete from institutes where id=?',0);
+       'select max(id) from institutes','delete from institutes 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       
index 6c2d6136600f5c723778e5a3099acb6588f03906..baa7afe83dc1133c12724c79a9351a18ec972844 100644 (file)
@@ -59,6 +59,8 @@ dbpasswd        secret
 #ibmdb2#upper_needs_cast       "yes"
 #ibmdb2#concat_pattern         "?||?"
 #ibmdb2#children_cond          "ucase(ldap_entries.dn)=ucase(cast(? as varchar(255)))"
+#ibmdb2#create_needs_select    "yes"
+#ibmdb2#insentry_query         "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select case when max(id) is null then 1 else max(id) + 1 end from ldap_entries),?,?,?,?)"
 #
 # PostgreSQL
 #postgres#insentry_query  "insert into ldap_entries (id,dn,oc_map_id,parent,keyval) values ((select case when max(id) is null then 1 else max(id) + 1 end from ldap_entries),?,?,?,?)"
index b9b24d27d2fa9fc9c653b1ef435657d19b830b01..0d1eee4c92e712260d3eb760a7b705972f6671b3 100755 (executable)
@@ -64,7 +64,7 @@ fi
 BASEDN="dc=example,dc=com"
 case ${RDBMS} in
        # list here the RDBMSes whose mapping allows writes
-postgres)
+postgres|ibmdb2)
        MANAGERDN="cn=Manager,${BASEDN}"
        echo "Testing add..."
        $LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \