Thread: Trap in copy_statement_with_parameters with latest sources

Trap in copy_statement_with_parameters with latest sources

From
Chris Lee
Date:

With the 07_01_006 driver I had problems with the abort caused by doing SQLPrepare - SQLDescribeCol - SQLBindParameter - SQLExecute. Rows inserted into a temp data were getting rolled back by the internal abort caused by this sequence of calls. The Disallow Premature option in the 007 driver cures this problem. I initially downloaded the driver installer and did a 'binary' install, but this didn't cure the problem, so I took a copy of the latest sources from CVS and built the driver DLL myself and the problem went away. However, I now have a problem with crashes in the driver with queries that were OK with the 006 driver. I'm working with a large scale app and so far haven't got a theory about which types of queries cause the problem. It's not a trivial problem as quite a lot of fairly complex queries run OK with the new driver. The crashes are happening at the following location:

        /* make sure new_statement is always null-terminated */
        CVT_TERMINATE

====>   if (conn->DriverToDataSource != NULL)
        {
                int                     length = strlen(new_statement);

                conn->DriverToDataSource(conn->translation_option,
                                                                           SQL_CHAR,
                                                                           new_statement, length,
                                                                           new_statement, length, NULL,
                                                                           NULL, 0, NULL);
        }

Has anyone else seen this problem?

Chris Lee

Re: Trap in copy_statement_with_parameters with latest sources

From
Hiroshi Inoue
Date:
> Chris Lee wrote:
>
> With the 07_01_006 driver I had problems with the abort caused by
> doing SQLPrepare - SQLDescribeCol - SQLBindParameter - SQLExecute.
> Rows inserted into a temp data were getting rolled back by the
> internal abort caused by this sequence of calls. The Disallow
> Premature option in the 007 driver cures this problem. I initially
> downloaded the driver installer and did a 'binary' install, but this
> didn't cure the problem, so I took a copy of the latest sources from
> CVS and built the driver DLL myself and the problem went away.
> However, I now have a problem with crashes in the driver with queries
> that were OK with the 006 driver. I'm working with a large scale app
> and so far haven't got a theory about which types of queries cause the
> problem. It's not a trivial problem as quite a lot of fairly complex
> queries run OK with the new driver. The crashes are happening at the
> following location:
>
>         /* make sure new_statement is always null-terminated */
>         CVT_TERMINATE
>
> ====>   if (conn->DriverToDataSource != NULL)

Are you using tranlation dll ?

regards,
Hiroshi Inoue