How-To-Repeat:

I suspect there is a bug in the ODBC driver in relation to blobs. I'm now
using 3.51.06, but was having this same problem on 3.51.05.

I'm using Visual C++ and their CRecordset wrapper for the ODBC calls. I'm
using the positioned updates.

As long as I keep the binary data I'm trying to transfer under the default
buffer size (8192) it works fine. I'm guessing it is a default buffer size
from looking at the debug text.

Here is the output info from setting a binary field that works, the data
for the binary field is 6933, less than the 8192.

 >SQLSetPos
| enter: irow: 1 fOption: SQL_UPDATE   Lock: 0
| >init_dynamic_string
| | >_mymalloc
| | | enter: Size: 1024
| | | exit: ptr: 11ae198
| | <_mymalloc
| <init_dynamic_string
| >find_used_table
| | >_mymalloc
| | | enter: Size: 8
| | | exit: ptr: 10238a8
| | <_mymalloc
| <find_used_table
| >dynstr_realloc
| <dynstr_realloc
| >dynstr_realloc
| <dynstr_realloc
| >extend_buffer
| | enter: current_length: 0  length: 6934  buffer_length: 8192
| <extend_buffer
| info: param: 0x12eddc  ctype: -2  SqlType: -4  data: 0x1412c58  length:
6933  actual_len: 6933  pos_in_query: 00FCF764
| info: param: 0x12eddc  ctype: 1  SqlType: 4  data: 0xfced54  length:
1  actual_len: 1  pos_in_query: 00FCF764

That above works just fine.

Here is what happens whenever I try to set binary data > 8192:

 >SQLSetPos
| enter: irow: 1 fOption: SQL_UPDATE   Lock: 0
| >init_dynamic_string
| | >_mymalloc
| | | enter: Size: 1024
| | | exit: ptr: 11ae198
| | <_mymalloc
| <init_dynamic_string
| >find_used_table
| | >_mymalloc
| | | enter: Size: 8
| | | exit: ptr: 1023808
| | <_mymalloc
| <find_used_table
| >dynstr_realloc
| <dynstr_realloc
| >dynstr_realloc
| <dynstr_realloc
| >extend_buffer
| | enter: current_length: 0  length: 11016  buffer_length: 8192
| | >_myrealloc
| | | >_mymalloc
| | | | enter: Size: 16384
| | | | exit: ptr: 11ae5f0
| | | <_mymalloc
| | | >_myfree
| | | | enter: ptr: f37d58
| | | <_myfree
| | <_myrealloc
| <extend_buffer
| info: param: 0x12eddc  ctype: -2  SqlType: -4  data: 0x1412d30  length:
11015  actual_len: 11015  pos_in_query: 00FCF764
| >extend_buffer
| | enter: current_length: 2582681  length: 11527  buffer_length: 8192
| | >_myrealloc
| | | safe: Reallocating unallocated data at line 145, 'execute.c'
| | <_myrealloc
| <extend_buffer
| >copy_error
| | error: code :4001, state: S1001, err :(null)
| | exit : SQL_ERROR

This happens every time I try to store more than 8192 bytes.


--------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php



Reply via email to