У меня есть запрос, связанный с этой топи c: https://developer.jboss.org/thread/277610
До достижения этапа значений, разделенных запятыми, значения на самом деле хранятся в виде большого двоичного объекта. Существует функция fetchBlobtoString (Blob, string, VARIADI C start_end integer) возвращает строку, которая фактически принимает входные данные BLOB-объекта, а затем преобразует их в значения, разделенные запятыми, как видно из сообщения.
Проблема с этим - строка ограничено 4000 символов, следовательно, он будет уничтожать данные, и не все значения отображаются. Что было бы лучшим способом извлечь значения, которые удваиваются, и преобразовать их в строки, похожие на запись.
Превратило бы это в объект вместо строки, улучшило бы производительность, используя следующую функцию в качестве примера:
fetchElementValueFromBlob (Blob protobufBlob, строка origName) возвращает объект
Я пробовал итерировать элементы в BLOB-объекте с помощью функции getItem, добавить в временную таблицу, но это медленно, и я получаю следующую ошибку, если я go больше что 15-20 итераций:
Ошибка: TEIID30504 Удаленное org.teiid.core.TeiidProcessingException: TEIID30504 petrelDS: TEIID60000 javax.resource.ResourceException: IJ000453: Невозможно получить управляемое соединение для java: / petrelDS SQLState 50000 ErrorCode: 30504
BEGIN
DECLARE integer VARIABLES.counter = 0;
DECLARE integer VARIABLES.pts = 100;
WHILE (VARIABLES.counter < VARIABLES.pts)
BEGIN
select wellbore_uwi,getItem(fetchBlob(data, 'md'),VARIABLES.counter) INTO TEMP from DirectionalSurvey where wellbore_uwi='1234567890';
VARIABLES.counter = (VARIABLES.counter + 1);
END
SELECT TEMP.wb_uwi,TEMP.depth FROM TEMP;
END
Если я удалю функцию getItem (), ошибка исчезнет.