PDO_mysql: неправильные результаты выборок.

si

Administrator
вообщем я со свой проблемой разобрался, это происходит если конектиться pdo собранным с libmysqlclient от 5.0 к mysql 4.0. Это либо бага в pdo_mysql либо в самой клиентской либе.

Код:
97              if (S && S->stmt) {
(gdb)
102                     strcpy(*pdo_err, mysql_sqlstate(H->server));
(gdb) p *pdo_err
$19 = "00000"
(gdb) p *H->server
$21 = {net = {vio = 0x8573368, buff = 0x8573408 "ÿz\004Table 'test.aaa' doesn't exist", buff_end = 0x8575408 "",
    write_pos = 0x8573408 "ÿz\004Table 'test.aaa' doesn't exist", read_pos = 0x8573408 "ÿz\004Table 'test.aaa' doesn't exist", fd = 5, max_packet = 8192,
    max_packet_size = 1073741824, pkt_nr = 2, compress_pkt_nr = 2, write_timeout = 31536000, read_timeout = 31536000, retry_count = 1, fcntl = 0,
    compress = 0 '\0', remain_in_buf = 0, length = 0, buf_length = 0, where_b = 0, return_status = 0x0, reading_or_writing = 0 '\0', save_char = 0 '\0',
    no_send_ok = 0 '\0', no_send_eof = 0 '\0', no_send_error = 0 '\0', last_error = "Table 'test.aaa' doesn't exist", '\0' <repeats 481 times>,
    [b]sqlstate = "00000", last_errno = 1146[/b], error = 0 '\0', query_cache_query = 0x0, report_error = 0 '\0', return_errno = 0 '\0'}, connector_fd = 0x0,
  host = 0x8563ed0 "mysql", user = 0x8563f20 "Test", passwd = 0x8563f30 "testuser", unix_socket = 0x0, server_version = 0x8563ee0 "4.0.26-standard-log",
  host_info = 0x8563eb8 "mysql via TCP/IP", info = 0x0, db = 0x8563f40 "test", charset = 0x83b7e20, fields = 0x0, field_alloc = {free = 0x0, used = 0x0,
    pre_alloc = 0x0, min_malloc = 32, block_size = 8164, block_num = 4, first_block_usage = 0, error_handler = 0}, affected_rows = 18446744073709551615,
  insert_id = 0, extra_info = 0, thread_id = 1588897, packet_length = 0, port = 3306, client_flag = 237581, server_capabilities = 8236,
  protocol_version = 10, field_count = 0, server_status = 2, server_language = 14, warning_count = 0, options = {connect_timeout = 30, read_timeout = 0,
    write_timeout = 0, port = 0, protocol = 0, client_flag = 0, host = 0x0, user = 0x0, password = 0x0, unix_socket = 0x0, db = 0x0, init_commands = 0x0,
    my_cnf_file = 0x0, my_cnf_group = 0x0, charset_dir = 0x0, charset_name = 0x8575418 "latin1", ssl_key = 0x0, ssl_cert = 0x0, ssl_ca = 0x0,
    ssl_capath = 0x0, ssl_cipher = 0x0, shared_memory_base_name = 0x0, max_allowed_packet = 0, use_ssl = 0 '\0', compress = 0 '\0', named_pipe = 0 '\0',
    rpl_probe = 0 '\0', rpl_parse = 0 '\0', no_master_reads = 0 '\0', separate_thread = 0 '\0', methods_to_use = MYSQL_OPT_GUESS_CONNECTION,
    client_ip = 0x0, secure_auth = 0 '\0', report_data_truncation = 1 '\001', local_infile_init = 0, local_infile_read = 0, local_infile_end = 0,
    local_infile_error = 0, local_infile_userdata = 0x0}, status = MYSQL_STATUS_READY, free_me = 1 '\001', reconnect = 0 '\0',
  scramble = "v,ptvs__", '\0' <repeats 12 times>, rpl_pivot = 1 '\001', master = 0x8572fa8, next_slave = 0x8572fa8, last_used_slave = 0x0,
  last_used_con = 0x8572fa8, stmts = 0x0, methods = 0x84a9de0, thd = 0x0, unbuffered_fetch_owner = 0x0}
(gdb) p *einfo
$22 = {file = 0x82f0f40 "/local/home/sitnikov/work/cold/install/apache/php5.1-200602080930/ext/pdo_mysql/mysql_driver.c", line = 243, errcode = 1146,
  errmsg = 0x85774bc "Table 'test.aaa' doesn't exist"}
(gdb) s
108             if (!dbh->methods) {
(gdb) p *pdo_err
$23 = "00000"
 
Сверху