Внутренняя ошибка при боковом удалении производной таблицы коллекции в Informix

Я играю с тем, что возможно в Informix, связанном с таблицами, производными от коллекций, и вложенными коллекциями. Учитывая эту схему:

create table t (i int);
create table u (i int, j int);

insert into t values (1);
insert into t values (2);
insert into u values (1, 10);
insert into u values (2, 20);

Я попробовал следующий запрос:

with x as (
  select
    t.i,
    multiset(
      select * from u where u.i = t.i
    ) m
  from t
  order by t.i
)
select *
from x, lateral(table(x.m));

Запуск его в первый раз из редактора SQL Dbeaver приводит к этой ошибке:

SQL Error [IX000]: The current transaction has been rolled back due to an internal error.

Запуск его во второй раз приводит к этой ошибке:

SQL Error [IX000]: System or internal error

Кажется, соединение устарело, и мне нужно повторно подключиться, чтобы выполнить дальнейшие запросы.

Похоже, это ошибка в Informix, но как мне обойти эту проблему? Я использую IBM Informix Dynamic Server версии 14.10.FC5DE.

Это, по крайней мере, ошибка (также может быть каким-то образом не поддерживается). В моем случае это привело к приостановке внутреннего потока сеанса (Informix 14.10.FC5DE, Linux CentOS Stream, выпуск 8). Журнал показывает: Результаты: Исключение поймано. Тип: MT_EX_OS, Контекст: память.

Luís Marques 01.04.2022 20:56
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, проблема связана с этим пунктом ORDER BY. Этот запрос работает так, как ожидалось:

with x as (
  select
    t.i,
    multiset(
      select * from u where u.i = t.i
    ) m
  from t
)
select *
from x, lateral(table(x.m));

Создание следующего вывода:

|i  |m                                        |i  |j  |
|---|-----------------------------------------|---|---|
|1  |[IfxStruct. Type: row ( i int , j int ) ]|1  |10 |
|2  |[IfxStruct. Type: row ( i int , j int ) ]|2  |20 |

(Не обращайте внимания на текст IfxStruct. Это просто Dbeaver, который еще не может печатать эти типы)

Другие вопросы по теме