|
|
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
Доброе утро!! Столкнулся с проблемой написания функций на plperl. Точнее даже с не написанием, а возможно с кодировкой. Суть проблемы. Есть функция, которая запоковывает в двоичный вид по маске определенную последовательность переменных (float float int shortint). И соответственно записывает в базу. Ну и в обратную сторону unpack, зеркально. Вот функция на сервере версии Код: plsql 1. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Она работает, добавляет в базу, возвращает bytea. Все как говориться без проблем. unpack так же нормально распаковывает, и возвращает в первозданном виде. Проверил, работает, обрадовался, перенес на другой сервер функцию. И.. Таже самая функция начала сыпаться с ошибками: Код: plsql 1. Версия сервера: Код: plsql 1. Дальше начал копать в сторону кодировок. Кодировки серверов одинаковые: Код: plsql 1. 2. Ну думаю может из-за новой версии надо явно указывать что то. Докапался до этого: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Но то что я подогнал, всеравно работает через пень колоду. Во первых в базу не вставляется, хотя выводит такой же результат как и на другом сервере ошибка идентичная при вставке: Код: plsql 1. опытным путем выяснил, что она конкретно из-за inserta выскакивает. Во вторых pack как мне кажется не совсем правильный получился. Без танцев с бубном он не совсем хорошо работает. В третьих unpack возвращает float вроде бы нормально но с потерей точности, всепоследющие цифры заполняет 9ми. Инты вообще не те, послейдний инт просто пустой. Уважаемые знатоки. Не подскажете в чем может быть дело? Что изменилось в perl при переходе на 9ую версию постгрес? Что еще можно предпринять? Может кто подскажет синтаксис pack правильный. Вроде почитал, вроде все так сделал. Как мне кажется дело в пустых символах, их как то надо заполнять, что бы точность не тирялась, и обратно возращались инты нормально. Или я не прав? Если увеличить цифру до 20 после собаки, то сразу выкидывает ошибка: Код: plsql 1. а при update: Код: plsql 1. Но на прошлой версии без танцев все чики пуки =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 10:41:50 |
|
||
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. попробуйте выполнить, не помню когда появилось bytea_output и hex по умолчанию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 11:37:06 |
|
||
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
SmeL_md, на 9е: Код: plsql 1. На 8.4 : "не распознанный параметр конфигурации" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 11:53:54 |
|
||
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
И все равно на 8.4 работает, на 9.1 не хочет((( Что ж такое. После этой команды тож не изменилось ничего. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 14:53:49 |
|
||
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
inforse, http://www.postgresql.org/docs/9.1/static/plperl-builtins.html#PLPERL-UTILITY-FUNCTIONS encode_bytea(string) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 23:37:37 |
|
||
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
Гость_0, Большое спасибо!!! Получилось нормально записать в базу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2014, 16:37:18 |
|
||
|
plperl (pack unpack и кодировка)
|
|||
|---|---|---|---|
|
#18+
Гость_0inforse, http://www.postgresql.org/docs/9.1/static/plperl-builtins.html#PLPERL-UTILITY-FUNCTIONS encode_bytea(string) Аналог для 8.4 существует? В 9-ку записалось нормально. А вот в 8.4 отказывается. Код: powershell 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2014, 11:47:49 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38828677&tid=1998288]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 491ms |

| 0 / 0 |
