Столбец JSON Oracle приводит к неверному идентификатору при использовании в соединении - PullRequest
1 голос
/ 09 марта 2019

У меня есть база данных Oracle (12c) следующим образом:

create table t1 (
    id number, tags clob, constraint t1_chk check ( tags is json) enable
);
create table t2 (id number);

create or replace view v1 as 
select ta.id, ta.tags from t1 ta
join t1 tb on ta.id=tb.id;

Это создает две таблицы (t1 и t2) и представление (v1) для t1, присоединенного к себе.

Когда я выполняю некоторые запросы к столбцу json в t1 или v1, запрос работает как положено:

 select t.id, t.tags.foo from t1 t;
 select t.id, t.tags.foo from v1 t;

Поскольку в этом примере я не удосужился заполнить таблицы, строки не возвращаются, но запрос работает, как и ожидалось, и возвращает пустые строки с двумя столбцами, ID и FOO.

Однако, если я попытаюсь присоединиться к t2, запрос завершится неудачно с ошибкой неверного идентификатора ORA-00904:

 select t.id, t.tags.foo, x.id from v1 t
 join t2 x on x.id = t.id

ORA-00904: "T"."TAGS"."FOO": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 55 Column: 15

Есть ли у кого-нибудь какие-либо предложения относительно того, как получить соединение, подобное этому, для работы со столбцом json?

...