powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PL/PHP и XML
1 сообщений из 1, страница 1 из 1
PL/PHP и XML
    #35544133
Sishnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ходе работы с PostgreSQL наткнулся на интересную ошибку.

Имеется таблица:
CREATE TABLE table
(
id bigserial NOT NULL,
xdata xml
)

т.е. предполагаем таблицу, в которой храним XML.

Так же имеется функция написанная на PL/PHP (https://projects.commandprompt.com/public/plphp/) которая выполняет преобразование одного XML в другой:

CREATE FUNCTION convert_xml(text) RETURNS text AS
$BODY
// ...
return $newxml;
$BODY$
LANGUAGE 'plphp' VOLATILE
COST 100;

Теперь два запроса:
1)
SELECT convert_xml(xdata::text)
FROM table

2)
SELECT xml(convert_xml(xdata::text))
FROM table

Первый запрос PostgreSQL отрабатывает нормально, а на втором в валится в глухую.
В логе появляется:
LOG: server process (PID 11606) was terminated by signal 11
LOG: terminating any other active server processes
WARNING: terminating connection because of crash of another server process
DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
HINT: In a moment you should be able to reconnect to the database and repeat your command.
LOG: all server processes terminated; reinitializing
LOG: database system was interrupted; last known up at 2008-09-17 14:51:26 MSD
LOG: database system was not properly shut down; automatic recovery in progress
LOG: record with zero length at 2/74F2B7D0
LOG: redo is not required
LOG: autovacuum launcher started
LOG: database system is ready to accept connections


Почему именно XML и PL/PHP:
XML - используется:
1) возможность сделать XPath
2) В базе хранится в более сжатом виде (на практике в два раза меньше, чем просто текст)

PL/PHP - используется:
1) имеется встроенные XML, DOM
2) как показала практика:
plPerl с use XML::* работает намного дольше (потому что там каждый раз выполняется eval, plPHP видимо компилируется в какой-то свой байт-код)

У кого-нить есть идеи?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PL/PHP и XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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