[erlang-questions] MySQL driver

Pablo Polvorin <>
Wed Apr 17 04:31:23 CEST 2013


looks good,  I'll try it,  thanks!

On 16 April 2013 17:43, Loïc Hoguin <> wrote:

> bank_mysql has binary prepared statements: https://github.com/extend/**
> bank_mysql <https://github.com/extend/bank_mysql>
>
> You can use it with the bank pool (https://github.com/extend/**bank<https://github.com/extend/bank>)
> or without, whichever you prefer.
>
> No user guide at this time but it should be pretty easy to read.
>
>
> On 04/16/2013 10:07 PM, Pablo Polvorin wrote:
>
>> Is there a driver that supports the binary mysql protocol (not the
>> textual, sql one)  for  prepared statements?.
>>
>> I come in a situation recently on a query where we have  to bind lots of
>> parameters into a prepared statement,  and the time to escape all of
>> them by the driver and send the corresponding  SET @N = ..   was
>> substantial,  actually larger than the time it takes mysql to run the
>> query.  Using the binary protocol in this situation would help.
>>
>> I found http://erlmysql.sourceforge.**net/<http://erlmysql.sourceforge.net/> that do support the binary
>> protocol, and although it was much faster on this particular query
>> (order of magnitudes faster)  it sometimes crashed and I found the code
>> more complex than other mysql drivers I've worked with,  both reason to
>> make me nervous about using it.  Is anyone using it on production?,  do
>> you know alternatives?
>>
>>
>> *|
>>
>> |*
>>
>>
>>
>>
>> On 16 April 2013 07:06, Jesper Louis Andersen
>> <**solutions.com<>
>> <mailto:jesper.louis.andersen@**erlang-solutions.com<>>>
>> wrote:
>>
>>     I may be interested in helping out on this thing as well. I have
>>     some work to do changing driver infrastructure to Emysql and when
>>     that comes around (in a couple of days/weeks), i'll probably also
>>     try to look into some merging of patches if possible.
>>
>>     Please keep me in the loop :)
>>
>>     Jesper Louis Andersen
>>        Erlang Solutions Ltd., Copenhagen
>>
>>
>>
>>     On Apr 11, 2013, at 12:41 AM, Henning Diedrich <
>>     <mailto:>> wrote:
>>
>>      > Hi Garrett,
>>      >
>>      > great, I'll check out your connection time outs, thanks a lot!
>>      >
>>      > It was quite fun to find Jacob, Nick and Fredrik to write this
>>     [1] up. It certainly felt more like historical forensics from some
>>     point on although I was throughout only trying to find out which
>>     driver version made most sense. Which in the end came to light in a
>>     way I could not read out of the source.
>>      >
>>      > If someone would like to share the story of his fork I'll be
>>     happy to include it, for the fun of it. Somehow, this all fits MySQL.
>>      >
>>      > Henning
>>      >
>>      > [1] https://github.com/eonblast/**Emysql#History<https://github.com/eonblast/Emysql#History>
>>      >
>>      >
>>      > On Apr 11, 2013, at 12:25 AM, Garrett Smith <
>>     <mailto:>> wrote:
>>      >
>>      >> Someday someone will write a book on the history of the Erlang
>> MySQL
>>      >> libraries. Not a great read, but it'd have to be scholarly.
>>      >>
>>      >> I've modified the Eonblast library with some connection timeout
>>     tweaks
>>      >> (as in, supporting them):
>>      >>
>>      >> https://github.com/gar1t/**Emysql<https://github.com/gar1t/Emysql>
>>      >>
>>      >>
>>      >>
>>      >> On Wed, Apr 10, 2013 at 4:59 PM, Dave Smith <
>>     <mailto:>> wrote:
>>      >>> Hi Henning,
>>      >>>
>>      >>> Thanks for the pointers. I must admit that I find the level of
>>     snark in the
>>      >>> emysql history delightful, considering that it's at least as
>>     forked as
>>      >>> erlang-mysql-driver now. :)
>>      >>>
>>      >>> There are a number of good fixes for the emysql driver, but
>>     they are on 20
>>      >>> different forks across Github. Looking over csrl's, fixes, I'm
>>     pretty
>>      >>> concerned those aren't in mainline since there are some
>>     non-trivial pooling
>>      >>> problems he's addressed (would you like some irony with that
>>     irony? :)).
>>      >>>
>>      >>> Do you know if eonblast is planning to incorporate all the work
>>     from those
>>      >>> different forks? I think we need to build some momentum behind
>>     a driver and
>>      >>> I'm certainly happy to direct people towards a maintained one.
>>      >>>
>>      >>> IMO, it would also be handy if the driver wasn't pooled, but
>>     used poolboy
>>      >>> since getting the pooling right is rather difficult. (I know
>>     that poolboy
>>      >>> has been tested with some of Quviq's concurrent checking stuff
>>     and a number
>>      >>> of race conditions addressed).
>>      >>>
>>      >>> Thanks!
>>      >>>
>>      >>> D.
>>      >>>
>>      >>>
>>      >>> On Wed, Apr 10, 2013 at 3:00 PM, Henning Diedrich
>>     < <mailto:>>
>>
>>      >>> wrote:
>>      >>>>
>>      >>>> Hi Dave,
>>      >>>>
>>      >>>> if I remember right, you were using the driver that came from
>>     Yxa via
>>      >>>> Yarif's erlang-emysql-driver
>>     https://github.com/dizzyd/**erlang-mysql-driver<https://github.com/dizzyd/erlang-mysql-driver>?
>>      >>>> (Here is the history of that.
>>     https://github.com/eonblast/**Emysql#History<https://github.com/eonblast/Emysql#History>
>> )
>>      >>>>
>>      >>>> It was found less than perfect when Nick and Jacob gave it
>>     something to
>>      >>>> chew building Rupture. I never spotted the problems myself I
>>     should add.
>>      >>>> That's purely from Nick Gerakine's and Jacob Vorreuter's words.
>>      >>>>
>>      >>>> But they report that with much effort they could not get the
>>     races out of
>>      >>>> it. That's why they started emysql, which I later started
>>     maintaining, and
>>      >>>> which Jeremy just mentioned, https://github.com/eonblast/**
>> Emysql <https://github.com/eonblast/Emysql>
>>      >>>>
>>      >>>> Considerable work went into getting the pooling system of
>>     Emysql right.
>>      >>>> (What I don't know is when exactly it got buggy, it may have
>>     been after
>>      >>>> Jacob's Emysql fork that now lies dormant.) But I worked a
>>     while, with help
>>      >>>> from others to get all races out of the queuing.
>>      >>>>
>>      >>>> However, the best fork of Emysql, I *think* is currently that
>>     of Chris
>>      >>>> Rempel at https://github.com/csrl/emysql as I got behind while
>>     making
>>      >>>> Erlvolt, the VoltDB driver, modeled in parts on Emysql. Chris
>>     did some
>>      >>>> impressive clean up. Now that Erlvolt is out, I'll turn around
>>     and catch up
>>      >>>> asap. But that's not a New York asap.
>>      >>>>
>>      >>>> An alternative may be to go back to a more original Yxa
>>     version, like the
>>      >>>> one possibly still to be found in ejabberd. That may be more
>>     stable than
>>      >>>> Yariv's branch that you started out with. The "history" I
>>     linked to above
>>      >>>> has the reasons, why that branch may be not quite clean and
>>     hard to debug.
>>      >>>>
>>      >>>> Best,
>>      >>>>
>>      >>>> Henning
>>      >>>>
>>      >>>> On Apr 10, 2013, at 10:43 PM, Dave Smith <
>>     <mailto:>> wrote:
>>      >>>>
>>      >>>>> Hello list,
>>      >>>>>
>>      >>>>> I'm curious what libraries people are currently using for
>>     MySQL access
>>      >>>>> in Erlang. I have an old library on my github that I've kept
>>     basically
>>      >>>>> working, but am wondering if there are any
>>     preferred/production libraries
>>      >>>>> out there that people like better.
>>      >>>>>
>>      >>>>> I ask because I'm considering retrofitting the pooling system
>>     in the
>>      >>>>> driver I maintain to use poolboy, but figure it was worth
>>     checking if there
>>      >>>>> are better alternatives out there. :)
>>      >>>>>
>>      >>>>> After all, the best code to maintain is the code you don't
>>     maintain.
>>      >>>>>
>>      >>>>> D.
>>      >>>>> ______________________________**_________________
>>      >>>>> erlang-questions mailing list
>>      >>>>>  <mailto:erlang-questions@**
>> erlang.org <>>
>>
>>      >>>>> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>      >>>>
>>      >>>
>>      >>>
>>      >>> ______________________________**_________________
>>      >>> erlang-questions mailing list
>>      >>>  <mailto:erlang-questions@**
>> erlang.org <>>
>>
>>      >>> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>      >>>
>>      >
>>      > ______________________________**_________________
>>      > erlang-questions mailing list
>>      >  <mailto:erlang-questions@**erlang.org<>
>> >
>>
>>      > http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>
>>     ______________________________**_________________
>>     erlang-questions mailing list
>>      <mailto:erlang-questions@**erlang.org<>
>> >
>>
>>     http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>
>>
>>
>>
>> --
>> Pablo Polvorin
>> ProcessOne
>>
>>
>> ______________________________**_________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>
>>
>
> --
> Loďc Hoguin
> Erlang Cowboy
> Nine Nines
> http://ninenines.eu
>



-- 
Pablo Polvorin
ProcessOne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130416/0946d0ff/attachment.html>


More information about the erlang-questions mailing list