Forums » General Discussion

Thread: Toad for MySQL Error Message


Permlink Replies: 5 - Pages: 1 - Last Post: Nov 1, 2010 8:30 AM by: Eriam
eriam.schaffter_859

Posts: 1
Registered: 9/16/09
Toad for MySQL Error Message
Posted: Sep 28, 2010 2:20 AM
  Click to reply to this thread Reply

Hello,

I'm playing with a MySQL proxy that traps SQL queries and rewrite them
or modifies the response on the fly.

The proxy works fine with the command line client. But I run through
an error message when I click on a table name in Toad MySQL client.

When I click on a table name the following message appears:

System.
IndexOutOfRangeException
Index was outside the bounds of the array.
Stack Trace:
at System.Windows.Forms.Control.MarshaledInvoke(Control caller,
Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
at Quest.Toad.Util.Global.Invoke(Delegate handler, Object[] args)
at Quest.Toad.Db.ToadDataAdapter.RaiseDone(Object sender, EventArgs args)
at Quest.Toad.Db.ToadDataAdapter.InternalFillBackground()

The weird thing if that the result set seems fine because the result
of the SHOW COLUMNS request is displayed.

Looking at the tcpdump of the proxy and comparing it with the tcpdump
of the original mysql server the only difference I see is that my
proxy returns two packets instead of one in the original mysql.

Any idea where to look at ?

Is there an option to disable the error message popup ( actually that
would be ok for us) ?

Thanks for the great tool !

Eriam

--
Eriam Schaffter
Service Comptabilité de Gestion, Etudes, Modélisation, Statistiques (SCGEMS)
Direction de l?Analyse Médico-Economique
Hôpitaux Universitaires de Genève
Tél : 022.37.26431




dchristian


Posts: 37
Registered: 5/29/06
Re: Toad for MySQL Error Message
Posted: Oct 14, 2010 9:53 AM   in response to: eriam.schaffter...
  Click to reply to this thread Reply

Although some warning messages may be hidden, there isn't any way to disable the error dialog for an unhandled exception. I really have no idea what may be happening here with your proxy. When you say you "click on the table" what queries are being run? What part of the UI is being updated?


Eriam

Posts: 4
Registered: 9/27/10
Re: Toad for MySQL Error Message
Posted: Oct 20, 2010 1:45 AM   in response to: dchristian
  Click to reply to this thread Reply

Hello

Thanks for your response.

Here is how I have this bug:

1. Run toad and connect to the proxy
2. Deploy the table list with the +
3. Click on a table name.

And there goes the bug.

The query that triggers the bug is

SHOW COLUMNS FROM ACTION_INF_ib FROM dev_ers

I noticed that with my proxy Toad run a SHOW COLUMNS and not a SHOW FULL COLUMNS. Maybe that's the issue ?

Which make me ask the following question: what would trigger a SHOW COLUMNS rather then a SHOW FULL COLUMNS ? The server version in the handshake ?

Thanks

Eriam



Eriam

Posts: 4
Registered: 9/27/10
Re: Toad for MySQL Error Message
Posted: Oct 20, 2010 1:55 AM   in response to: Eriam
  Click to reply to this thread Reply


Hello again.

Problem solved !

The assumption in my previous post was right.

Toad uses the server_version of the Handshake Initialization Packet but I specified a custom server_version.

It seems then that it messes up Toad when it comes to various requests (in the previous example Toad expected the result from a SHOW FULL COLUMNS but ran a SHOW COLUMNS).

I solved the bug by setting the server_version to the same signature as the official mysql server but I can imagine Toad would have to handle other server_version aswell ?

Thanks anyway.

Eriam






Mike The KID


Posts: 14
Registered: 6/11/10
Re: Toad for MySQL Error Message
Posted: Nov 1, 2010 8:11 AM   in response to: Eriam
  Click to reply to this thread Reply

Would you mind posting some steps how to set the server version? I'm not sure where to look for it.



Eriam

Posts: 4
Registered: 9/27/10
Re: Toad for MySQL Error Message
Posted: Nov 1, 2010 8:28 AM   in response to: Mike The KID
  Click to reply to this thread Reply

Hey Mike

I was refering to the server_version in the Handshake Initialization Packet:

http://forge.mysql.com/wiki/MySQL_Internals_ClientServer_Protocol

This worked fine.

So if you want to get that you'll need a packet sniffer or a proxy of some sort.

Thanks

Eriam
removed the target in the link


Legend
Guru: 2001 + pts
Expert: 751 - 2000 pts
Enthusiast: 31 - 750 pts
Novice: 0 - 30 pts
Moderators
Helpful answer (5 pts)
Answered (10 pts)

Point your RSS reader here for a feed of the latest messages in all forums