My database scheme requires usage of blobs, but something seems wrong there: CREATE TABLE testblob (id INT, b BLOB); INSERT INTO testblob (id, b) VALUES ( 1, BLOB '1234'); SELECT * FROM testblob; # sys.testblob, sys.testblob # table_name # id, b # name # int, blob # type # 1, 0 # length [ 1, 0203 ] DROP TABLE testblob; It turns out that the conversion of a SQL blob literal to an array of bytes is buggy, the patch below fixes that. Ronald $ diff -u ../MonetDB-4.12.1/src/modules/plain/blob.c.org ../ MonetDB-4.12.1/src/modules/plain/blob.c --- ../MonetDB-4.12.1/src/modules/plain/blob.c.org 2006-10-03 16:04:05.000000000 +0200 +++ ../MonetDB-4.12.1/src/modules/plain/blob.c 2006-10-03 16:15:04.691486914 +0200 @@ -370,14 +370,15 @@ s++; res <<= 4; if (*s >= '0' && *s <= '9') { - res = *s - '0'; + res |= *s - '0'; } else if (*s >= 'A' && *s <= 'F') { - res = 10 + *s - 'A'; + res |= 10 + *s - 'A'; } else if (*s >= 'a' && *s <= 'f') { - res = 10 + *s - 'a'; + res |= 10 + *s - 'a'; } else { GDKerror("sqlblob_fromstr: Illegal char '%c' in blob\n", *s); } + s++; result->data[i] = res; } Ronald
participants (1)
-
Ronald Oussoren