У меня есть это заявление, созданное Geoserver
SELECT
shape AS shape
FROM
(
SELECT
c.chantier_id id,
sdo_geom.sdo_buffer(c.shape, m.diminfo, 1) shape,
c.datedebut datedebut,
c.datefin datefin,
o.nom operation,
c.brouillon brouillon,
e.code etat,
u.utilisateur_id utilisateur,
u.groupe_id groupe
FROM
user_sdo_geom_metadata m, lyv_chantier c
JOIN lyv_utilisateur u ON c.createur_id = u.utilisateur_id
JOIN lyv_etat e ON c.etat_id = e.etat_id
JOIN lyv_operation o ON c.operation = o.id
WHERE
m.table_name = 'LYV_CHANTIER'
AND m.column_name = 'SHAPE'
) vtable
WHERE
( brouillon = 0
AND ( etat != 'archive'
OR etat IS NULL )
AND sdo_filter(shape, mdsys.sdo_geometry(2003, 4326, NULL, mdsys.sdo_elem_info_array(1, 1003, 1), mdsys.sdo_ordinate_array(
2.23365783691406, 48.665657043457, 2.23365783691406, 48.9341354370117, 2.76649475097656, 48.9341354370117, 2.76649475097656, 48.665657043457, 2.23365783691406, 48.665657043457)), 'mask=anyinteract querytype=WINDOW') = 'TRUE' );
В моем локальном экземпляре (докеризованном, если это может что-то объяснить) он работает нормально, но в другом экземпляре я получаю сообщение об ошибке:
ORA-13226: интерфейс не поддерживается без пространственного индекса
Я предполагаю, что SDO_FILTER применяется к результату SDO_BUFFER, который, следовательно, не индексируется.
Но почему он работает на моем локальном экземпляре?!
Может быть, есть какая-то странная махинация с конфигурацией, которая могла бы объяснить другое поведение? ?
РЕДАКТИРОВАТЬ: Идея заключается в том, чтобы обойти ошибку в Geoserver с базами данных Oracle, когда он отображает только первую точку геометрии MultiPoint, но отлично работает с MutltiPolygon. Я использую представление SQL в качестве слоя в Geoserver (отсюда, я думаю, и подзапрос).
SHAPE
из таблицыLYV_CHANTIER
. Проблема связана со столбцом, возвращаемым подзапросом. Это явно не индексируется, и старые версии Oracle будут жаловаться на это. - person Albert Godfrind   schedule 07.05.2020