提交 ba74733f authored 作者: Noel Grandin's avatar Noel Grandin 提交者: GitHub

Merge pull request #391 from svenschrader/master

spatial key fix for null geometries
......@@ -126,6 +126,11 @@ public class MVSpatialIndex extends BaseIndex implements SpatialIndex, MVIndex {
public void add(Session session, Row row) {
TransactionMap<SpatialKey, Value> map = getMap(session);
SpatialKey key = getKey(row);
if (key.isNull()) {
return;
}
if (indexType.isUnique()) {
// this will detect committed entries only
RTreeCursor cursor = spatialMap.findContainedKeys(key);
......@@ -166,6 +171,11 @@ public class MVSpatialIndex extends BaseIndex implements SpatialIndex, MVIndex {
@Override
public void remove(Session session, Row row) {
SpatialKey key = getKey(row);
if (key.isNull()) {
return;
}
TransactionMap<SpatialKey, Value> map = getMap(session);
try {
Value old = map.remove(key);
......
......@@ -1009,9 +1009,9 @@ public class TestSpatial extends TestBase {
stat.execute("create memory table test"
+ "(id int primary key, the_geom geometry, description varchar2(32))");
stat.execute("create spatial index on test(the_geom)");
stat.execute("insert into test values(1, null, null)");
stat.execute("insert into test values(2, null, null)");
stat.execute("insert into test values(3, null, null)");
for (int i = 0; i < 1000; i++) {
stat.execute("insert into test values("+ (i + 1) +", null, null)");
}
ResultSet rs = stat.executeQuery("select * from test");
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论