Извлечение двойных значений из BLOB-объектов / объектов в строки - PullRequest
0 голосов
/ 17 марта 2020

У меня есть запрос, связанный с этой топи 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 (), ошибка исчезнет.

...