On 10-05-2013 11:13:48 +0200, Stefan Manegold wrote:
Hi Diethard,
too me, this looks as if the server (correctly) serializes the TINYINT (MonetDB internal type bte) into a string to ship it via MAPI, but then the client (JDBC driver or Squirrel??) (incorrectly) does not parse the receives string as TINYINY (single-byte integer), but rather simply interprets the first character of the received string as single-byte integer, thus '1' becomes 49, i.e., the ASCII code of '1'.
Could you please file a bug report to keep us reminded that we need to investigate and (if it's indeed the JDBC driver) fix it.
I recall having seen this before, then we couldn't find anything and assumed a SquirrelSQL bug. I think it's easy to check the driver (JDBC) does the right thing by using JdbcClient and verifying that it prints a number. Maybe the mapping is incorrect at some place, but I can hardly imagine, unless our sources do type mapping at Char or something. If someone wants to look, check MonetConnection, there should be a giant switch where the monet types (see MonetDriver, getJavaType or something) are mapped onto JDBC types according to the specs. It should return a java.sql.TINYINT for this case. If not, we need to figure out if there's a clash somehow, or just a prehistoric bug. Thanks, Fabian -- Fabian Groffen fabian@monetdb.org column-store pioneer http://www.monetdb.org/Home