Wpis z mikrobloga

Mirki, mam tabelę w oraclu gdzie przechowuję SDOGEOMETRY i potrzebuję sprawdzać czy nowa geometria istnieje w tej tabeli, jeśli nie to dodaję. Jak najlepiej to zrobić SDOEQUAL? Przy próbie testowego sprawdzenia:
SELECT *
FROM GEO
WHERE SDOEQUAL(SDOGEOMETRY (2001,4326,SDOPOINTTYPE(11,11,NULL),NULL,NULL),
SDOGEOMETRY (2001,4326,SDOPOINTTYPE(11,11,NULL),NULL,NULL)
) = 'TRUE';

Wyrzuca:
ORA-13226: interfejs nie jest obsługiwany bez indeksu przestrzennego
ORA-06512: przy "MDSYS.MD", linia 1723
ORA-06512: przy "MDSYS.MDERR", linia 8
ORA-06512: przy "MDSYS.SDO
3GL", linia 87
ORA-06512: przy "MDSYS.SDO_3GL", linia 499
13226. 00000 - "interface not supported without a spatial index"
*Cause: The geometry table does not have a spatial index.
*Action: Verify that the geometry table referenced in the spatial operator
has a spatial index on it.

Pomimo, że indeks został założony bez błędów. Macie jakiś inny pomysł jak to sprawdzać lub rozwiązanie tego problemu?
Może wyciągać do wkt i porównywać w ten sposób?
#oracle #java #bazydanych
  • 1
@Rageslaw: Czy masz dostep do dba indexes? Sprawdzilbym, czy indeks jest w stanie VALID (przy klauzuli where INDEX TYPE = 'DOMAIN' i ITYP NAME = 'SPATIAL INDEX'). Pamietaj, ze nie chodzi tu o kolumne STATUS, tylko inna ;)

Moze byc to równie dobrze bug, warto przejrzec MOS, np. Doc ID 1664507.1 - "
BUG 17922440 - ORA-13226: INTERFACE NOT SUPPORTED WITHOUT A SPATIAL INDEX The problem is with index-based functional implementation.