[erlang-questions] MySQL driver

Pablo Polvorin <>
Tue Apr 16 22:07:43 CEST 2013


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/  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 <
> 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 <>
> 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
> >
> >
> > On Apr 11, 2013, at 12:25 AM, Garrett Smith <> 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
> >>
> >>
> >>
> >> On Wed, Apr 10, 2013 at 4:59 PM, Dave Smith <> 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 <
> >
> >>> 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 ?
> >>>> (Here is the history of that.
> 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
> >>>>
> >>>> 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 <> 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
> >>>>> 
> >>>>> http://erlang.org/mailman/listinfo/erlang-questions
> >>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> erlang-questions mailing list
> >>> 
> >>> http://erlang.org/mailman/listinfo/erlang-questions
> >>>
> >
> > _______________________________________________
> > erlang-questions mailing list
> > 
> > http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>



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


More information about the erlang-questions mailing list