PostgreSQL 9.2, поле типа bytea.
Данные записаны из .NET клиента, подключение через ODBC-драйвера.
Win32-клиент (C++), подключение тоже через ODBC-драйвера - чтение выполняется нормально.
Т.е. данные в БД лежат правильные.
В PHP для работы с БД использую расширение PDO:
<?php
$db = new PDO('pgsql:...');
$stmt = $db->prepare("select data from Table where id=?");
$stmt->execute(array($_GET['id']));
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);
header("Content-Type: application/octet-stream");
fpassthru($lob);
?>
На выходе получаю, что объем stream-а $lob в 2 раза больше реального размера данных. Такое впечатление, что выполняется преобразование byte -> Unicode char или Escaped char.
Подскажите, пожалуйста, как с этим бороться.
PS: попробовал работать через функции odbc_ - все нормально прочиталось, но у этого варианта подключения есть свои проблемы. Так что это тоже не вариант, как и pg_...