Yes as I thought.
Again thanks for help.
Goyman Pierangelo Masarati wrote:
I use Sybase 12.5.1 with last last openldap with last unixodbc with last freetds driver. (with last I mean the stable release of 1.04.04)
I don't know other free odbc driver to try.
libiodbc, for instance; that's what I'm using (not last, though), and PostgreSQL.
It definitely looks like an issue not related to back-sql, unless an improper use of the ODBC API can be clearly identified. I don't see any, but I'm not an ODBC expert.
Regards and thanks for help
Pierangelo Masarati wrote:
I thinkl it's finally time that you tell us what version of OpenLDAP software you're using, and what ODBC and what RDBMS, just for the records. I note that there's plenty of error messaging in back-sql; you get none because the ODBC is returning none to the client. Apparently, at_query is failing, but the ODBC can't tell why. It logs this obscure line,
IF @@TRANCOUNT > 0 ROLLBACK BEGIN TRANSACTION
which looks like the ODBC issued a rollback, and the RDBMS didn't like it. I know some RDBMS need a commit/rollback before closing a transaction, even when only read operations were performed. Others don't tolerate it on read operations. AFAIK back-sql does the rollback after reads, but I don't see any between the oc_ and the at_ queries, so it might be something internal to the ODBC. I suggest you try another one.
Pierangelo Masarati wrote:
thanks for the answer, but I was executing slapd with -d 1 since I begun to work with.
There is a little thing I do not understand, I got this output from slapd:
backsql_get_db_conn(): first call -- reading schema map ==>backsql_load_schema_map() backsql_load_schema_map(): 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=?' backsql_load_schema_map(): objectClass 'organizationalUnit': keytbl='orgunit' keycol='id' expect_return: add=0, del=0; attributes: backsql_load_schema_map(): autoadding 'objectClass' and 'ref' mappings backsql_load_schema_map(): error executing at_query: Return code: -1 ==>backsql_free_db_conn()
But where I do not understand is that the real sql executed in the db is:
00:00000:00019:2004/04/11 17:59:34.75 server TDS_LANG, spid 19: command text: set textsize 64512 use GAddress 00:00000:00019:2004/04/11 17:59:34.76 server TDS_LANG, spid 19: command text: BEGIN TRANSACTION 00:00000:00019:2004/04/11 17:59:34.77 server TDS_DYNP, spid 19: command text: create proc wlkz006000 as SELECT id,name,keytbl,keycol,create_proc,delete_proc,expect_return FROM ldap_oc_mappings 00:00000:00019:2004/04/11 17:59:34.81 server TDS_LANG, spid 19: command text: IF @@TRANCOUNT > 0 ROLLBACK BEGIN TRANSACTION
The query is above:
SELECT id,name,keytbl,keycol,create_proc,delete_proc,expect_return FROM ldap_oc_mappings
Do yu have ldap_oc_mappings? Does it have the requested columns? This output looks really obscure to me. You may want to add a few printf in back-sql before the queries are executed.
this query work, the query that don't work, and that's not executed is the 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=?).
I checked the source code, and this error is printed if the execution of the query fail, but the query is not executed (as you can see in the sql output).
So I do not understand why.