[erlang-bugs] [Fwd: Re: odbc:param_query]

Anders Nygren anders.nygren@REDACTED
Wed May 7 18:07:51 CEST 2008


On Wed, May 7, 2008 at 2:34 AM, Ingela Anderton Andin
<ingela@REDACTED> wrote:
> Anders Nygren wrote:
>
> > On Mon, May 5, 2008 at 8:01 AM, Anders Nygren <anders.nygren@REDACTED>
> wrote:
> >
> >
> > > 2008/5/5 Ingela Anderton Andin <ingela@REDACTED>:
> > >
> > >     >
> > >  > Hi!
> > >  >
> > >  >  As a part of bigger patch (for 64 bit-odbc) I got the following
> change to
> > >  > param-queries in odbcserver.c. This might help your case, it would
> > >  >  be great if you could try that out for me.  I am not very found of
> the ODBC
> > >  > API (or the implementations of it anyway) it does surprising things
> > >  >  at times.
> > >  >
> > >
> > >  Hi Ingela
> > >  After a quick test, it looks like it is working fine with the patch.
> > >  Thanks a lot.
> > >
> > >  /Anders
> > >
> > >
> >
> > After some more testing I have seen that the problem remains.
> >
> >
> >
>
>  Humm... could you be a little more specific?  I guess that the problem
> still occurs but
>  not as often?! (As you seemed to think that it helped at first.)

At first it failed most of the time, maybe 75%, but apparently randomly.
After the patch I tested doing maybe 10 insert of one row each and
all were successful. That was when I reported that the patch seemed
to work.
But later when I was testing another param_query it failed again. And
also the original query started to fail again.
I had originally said that even when I got the error the data was inserted.
But that was not completely correct. If I try to insert one row it
gets inserted.
But if I try to INSERT several rows with one param_query and it gives the error
only the first row is inserted.

Unfortunately I do not have time right now to look into this in more detail,
so I have just switched to using sql_query instead.
Maybe I will be able to do some more tests in the beginning of June.

/Anders

> Maybe there are more special
>  cases that occur with the use of some drivers but not others.  Alas we can
> not test with all existing
>  drivers and all existing backends.  We test with the databases
>  SQLServer on windows systems and Postgress on unix systems.  When I get
>  time I will try to test with the table you supplied below in our
> environment.  But if the problem
>  is driver specific it might work just fine. (Our existing test on
> param-queries does.)
>  Just a few questions, does it fail in a predictably way? Always the n:th
> time you try or after you did something
>  elese or does it seem to be random? It would be good to have a minimal test
> case to provoke the error.
>  Setting up a mysql-environment will however not be a top priority for us.
>  In the meantime if you  should  stumble on some solution  yourself we will
> of course accept patches a as long as they do not
>  break anything else and seem reasonable.
>
>  Regards Ingela, Erlang/OTP Ericsson
>
>
>
> >
> > >
> > >  >  @@ -760,6 +758,7 @@ static db_result_msg db_param_query(byte
> *buffer,
> > >  > db_state *state)
> > >  >         switch (param_status.param_status_array[i]) {
> > >  >         case SQL_PARAM_SUCCESS:
> > >  >         case SQL_PARAM_SUCCESS_WITH_INFO:
> > >  >  +        case SQL_PARAM_DIAG_UNAVAILABLE:
> > >  >         break;
> > >  >         default:
> > >  >             diagnos =
> > >  >
> > >  >
> > >  >  Regards Ingela - OTP team
> > >  >
> > >  >  Anders Nygren wrote:
> > >  >
> > >  > > I am having a problem with parameterized queries
> > >  > > Erlang R12B-2 on Linux (SuSE 10.3)
> > >  > > MySQL 5.0.45
> > >  > > myodbc 3.51
> > >  > > unixODBC 2.2.12
> > >  > >
> > >  > >
> > >  > > Reply = odbc:param_query(State#state.cref,
> > >  > >                             "insert into Users (userId, password, "
> > >  > >                             "userType, name) values (?,?,?,?)",
> > >  > >                             [{{sql_varchar,20},[UserId]},
> > >  > >                              {{sql_varchar,20},[Passwd]},
> > >  > >                              {{sql_char,6},[Type]},
> > >  > >                              {{sql_varchar,100},[Name]}]),
> > >  > >
> > >  > >
> > >  > > Sometimes I get {updated, 1}, but most of the time I get the
> following
> > >  > error
> > >  > > {error,"No SQL-driver information available."} but the data has
> been
> > >  > inserted.
> > >  > >
> > >  > > The table is created with
> > >  > > CREATE  TABLE IF NOT EXISTS `npas`.`Users` (
> > >  > >  `userId` VARCHAR(20) NOT NULL ,
> > >  > >  `password` VARCHAR(20) NOT NULL ,
> > >  > >  `userType` ENUM('admin','normal','read') NOT NULL ,
> > >  > >  `name` VARCHAR(100) NOT NULL ,
> > >  > >  PRIMARY KEY (`userId`) )
> > >  > > ENGINE = InnoDB
> > >  > > PACK_KEYS = 0
> > >  > > ROW_FORMAT = DEFAULT;
> > >  > > _______________________________________________
> > >  > > erlang-bugs mailing list
> > >  > > erlang-bugs@REDACTED
> > >  > > http://www.erlang.org/mailman/listinfo/erlang-bugs
> > >  > >
> > >  > >
> > >  > >
> > >  >
> > >  >
> > >  >
> > >  > _______________________________________________
> > >  >  erlang-bugs mailing list
> > >  >  erlang-bugs@REDACTED
> > >  >  http://www.erlang.org/mailman/listinfo/erlang-bugs
> > >  >
> > >
> > >
> > >
> >
> >
> >
>
>



More information about the erlang-bugs mailing list