powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / cats (bytea to real) или cats (bit(32) to real)
1 сообщений из 1, страница 1 из 1
cats (bytea to real) или cats (bit(32) to real)
    #39451833
mike_pg_123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, подскажите пожалуйста оптимальный подход для преобразования 4-х байтов bytea в real.
Примерное описание проблемы таково:
Есть структуры C++ c 32-разрядной машины которые в бинарном виде льются в bytea поле на Postgres(amd64). Структуры состоят из набора чисел (целочисленных и с плав. точкой). Нужно уметь это парсить на стороне СУБД. С целочисленными я разобрался методом get_byte\git_bit и работает с приемлемой скоростью. А вот с float\double трудновато как-то. Нашёл на pgplsql процедуру по пересчёту но её производительность не устраивает. Понятно, что наверное существенно быстрее будет работать написанная на С процедура которая из 4-х байт делает float. Но, думаю, я же не первый с такой проблемой. Поделитесь плс. опытом в какую сторону двигаться. В попытках cast вод до этого я дошёл пока:
postgres=# select get_byte(float4send(0.15625),0)::bit(8),get_byte(float4send(0.15625),1)::bit(8),get_byte(float4send(0.15625),2)::bit(8),get_byte(float4send(0.15625),3)::bit(8);
get_byte | get_byte | get_byte | get_byte
----------+----------+----------+----------
00111110 | 00100000 | 00000000 | 00000000
(1 строка)

postgres=# select cast(x'3E200000' as real);
ОШИБКА: привести тип bit к real нельзя
СТРОКА 1: select cast(x'3E200000' as real);
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / cats (bytea to real) или cats (bit(32) to real)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]