World: r3wp
[MySQL]
older newer | first last |
Dockimbel 12-Jan-2006 [554x5] | Fix #1 : Byte word added to local context. |
Longlong conversion: I don't agree with you. The server returns a 64-bits integer that you're casting to 32-bits integer, so your losing half of the data. Btw, even casting it to decimal! which is 64-bits wide won't be accurate because of the integer to floating point conversion issues. That's why I've left it to none (means keep it in raw string! format) and let each user decide how to process it. (The driver provides the 'change-type-handler global function to change that easily) | |
Fix #2 : port init now correctly handle '?' marker. I've used your patch as is. Works well with all my tests. Thanks for providing the fix for this long standing bug. | |
If anyone has some other patches, let publish it here. I'll wait a few more days before closing the beta state and declaring this version the new stable one. | |
New version 1.0.1 including these fixes available (http://softinnov.org/tmp/mysql-protocol.r). | |
Pekr 13-Jan-2006 [559] | Doc, what would be needed for the driver to work like Command driver? I mean the ability to db-conn: first db, and have multiple connections/channels to have available? |
Dockimbel 13-Jan-2006 [560] | You already can have several connections opened at the same time with the current driver. I don't see the benefits of the /Command way. If you really need to have exactly the same behaviour, I guess that you have to overload the 'first function in my code and return a new port! using the connection port as 'sub-port. |
Maarten 13-Jan-2006 [561] | Actually, I used to install Docs driver in Command anyway because it was much faster :-) |
Gabriele 14-Jan-2006 [562] | yep, our detective portals use Doc's driver even though we run on command. |
Dockimbel 14-Jan-2006 [563x2] | Guys, I keep been amazed how libmysql using C poorly performs against a direct TCP approach using REBOL. |
I have plans for a version 2 of this driver including a full code rewritting for much cleaner design, speed improvements, optional async API, support more protocol features (like LOAD DATA), implement the v5 protocol, improved user API (e.g.: select column in a record by field name), etc... | |
Robert 14-Jan-2006 [565] | Exists a "standalone" mysql version? Or a standalone database that is mysql compatible? |
Dockimbel 14-Jan-2006 [566] | What do you mean by standalone ? |
Robert 14-Jan-2006 [567] | So, no big installation. Like a DLL or just an EXE that's started. |
Gabriele 14-Jan-2006 [568x2] | there is an embeddable version of mysql as a dll |
but it is gpl afaik | |
Volker 14-Jan-2006 [570] | There is this apache + x which Terry likes. IIRC mysql is included too? |
Robert 14-Jan-2006 [571] | well using a DLL won't make the rest GPL. |
Gabriele 14-Jan-2006 [572] | so you need to contact mysql ab for use in non-gpl apps |
Robert 14-Jan-2006 [573] | What's appache + x? |
Volker 14-Jan-2006 [574] | some bundle for lamp on windows. |
Gabriele 14-Jan-2006 [575] | it does, if yor programs depends on the dll (doesn't work without) though this is debatable (not proven in court i guess) |
Robert 14-Jan-2006 [576] | So I wouldn't care. |
Volker 14-Jan-2006 [577] | http://www.apachefriends.org/en/xampp.html, from framewerks-group |
Gabriele 14-Jan-2006 [578] | but if you just need an sql engine... why not sqlite? |
Robert 14-Jan-2006 [579] | I need one that's integrated into Rebol. Didn't took a look at it. Just thought it makes sense to have a protocol like DocKimbel's and re-use it with different databases (R-ODBC) |
Volker 14-Jan-2006 [580] | sqlite is specially to run as DLL afaik. |
Pekr 14-Jan-2006 [581x4] | Robert - you might be better looking somewhere else. Mysql embedded does not have tcp/ip api, just some library aproach ... |
what about sqlite or rebdb? RebDB should be ok for most your projects imo ... (although 'join is badly missing) | |
Robert - french community did some work for sqlite iirc ... look at rebol.org .... | |
Doc - you once told me that your postgress driver is some xy percent faster, because of continuous parsing or so, maybe you could rewrite mysql to use similar principles? | |
Dockimbel 14-Jan-2006 [585] | Pekr: I'll use that method for the v2 of the driver. It also helps keep the code more elegant. |
Pekr 14-Jan-2006 [586x2] | but mysql protocol is not your priority, is it? It simply works now :-) |
Uniserve 1.0, or R# would be nice though :-) | |
Dockimbel 16-Jan-2006 [588x3] | My current priorities are project generating incomes. Unfortunately, I have very little time for other projects. |
Uniserve is one of our base framework (both for internal use and for our customers), so we're working on it actively. | |
I'll release it as soon as I find some time to update the docs and package it. | |
Ammon 17-Jan-2006 [591] | Doc, I'm not sure if you've got this yet or not, but we found a bug where the 'read-packet function's buffer was not getting expanded properly which was causing it to truncate some of our data. To fix this problem then we added a local variable and added these lines: tmp: pl/cache pl/cache: make binary! pl/buf-size system/words/insert tail pl/cache tmp after this line: pl/buffer: make binary! pl/buf-size: packet-len |
Dockimbel 18-Jan-2006 [592x2] | Hi Ammon, it is possible that there's some issue maintainin the 2 buffers size in sync. I've added your patch (with small modifications) to the current code. |
v1.0.2 including Ammon patch uploaded. | |
Ammon 18-Jan-2006 [594] | Thanks! |
Dockimbel 24-Jan-2006 [595x2] | the "Bad handshake" issue appears randomly when logging to the server. It looks like it's related to the server side. |
Ok, I've found a workaround for this problem. I still have a 1045 User deny random error to fix (almost done) and make a new release tomorrow. 1.0 official release is now very close. | |
Dockimbel 25-Jan-2006 [597x3] | After tracking down the problem, here's the explanation of the random 1043 (bad handshake) and 1045 (access deny) error on connecting to the server : |
The v3.xx protocol is flawed. The scrambled password is sent to the server as a zero terminated string. But the scrambling method, sometimes contains a 00 byte. The server then, cuts the password prematuraly (error 1043) or if the zero is at the beginning of the string, considers that the user didn't provide any password (error 1045). | |
The new 4.1.1+ protocol fixes that kind of issue by sending the string size first (like in Pascal language). The current driver doesn't implement the new protocol. This will be the main feature of the v2 of the MySQL driver. | |
Ladislav 25-Jan-2006 [600] | thanks for the explanation and for your research. the terminating character strategy looks like fundamentally flawed, because it causes problems of this kind too often to be considered useful, at least in my opinion |
Dockimbel 25-Jan-2006 [601] | I agree, I never use this approach when I design a new protocol. It leads to error and it's harder to handle on the receiver side because you don't know how much data you're waiting for. |
Pekr 25-Jan-2006 [602] | So v 1.0 will have to live with those occassional errors? If so, we should go for 1.0 and claim it is a feature, not a bug :-) |
Dockimbel 25-Jan-2006 [603] | v1.0.3 uploaded. That's my new candidate for 1.0. The connection process is now rock solid! I've stressed it with 20,000 connections without troubles. The protocol flaw for password is now silently handled by the driver by reconnecting to the server. |
older newer | first last |