Skip to content

Commit e4a08ab

Browse files
committed
fixed issue with types in dynamodb data index
1 parent dbc2f0c commit e4a08ab

2 files changed

Lines changed: 28 additions & 9 deletions

File tree

extensions/datastores/dynamodb/src/main/java/org/locationtech/geowave/datastore/dynamodb/operations/DynamoDBOperations.java

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,10 @@ public boolean ensureAuthorizations(final String clientUser, final String... aut
152152
@Override
153153
public RowWriter createWriter(final Index index, final InternalDataAdapter<?> adapter) {
154154
final boolean isDataIndex = DataIndexUtils.isDataIndex(index.getName());
155-
final String qName = getQualifiedTableName(index.getName());
156-
155+
String qName = getQualifiedTableName(index.getName());
156+
if (isDataIndex) {
157+
qName = adapter.getTypeName() + "_" + qName;
158+
}
157159
final DynamoDBWriter writer = new DynamoDBWriter(client, qName, isDataIndex);
158160

159161
createTable(qName, isDataIndex);
@@ -167,11 +169,20 @@ public RowWriter createDataIndexWriter(final InternalDataAdapter<?> adapter) {
167169

168170
@Override
169171
public void delete(final DataIndexReaderParams readerParams) {
170-
deleteRowsFromDataIndex(readerParams.getDataIds(), readerParams.getAdapterId());
172+
final String typeName =
173+
readerParams.getInternalAdapterStore().getTypeName(readerParams.getAdapterId());
174+
if (typeName == null) {
175+
return;
176+
}
177+
deleteRowsFromDataIndex(readerParams.getDataIds(), readerParams.getAdapterId(), typeName);
171178
}
172179

173-
public void deleteRowsFromDataIndex(final byte[][] dataIds, final short adapterId) {
174-
final String tableName = getQualifiedTableName(DataIndexUtils.DATA_ID_INDEX.getName());
180+
public void deleteRowsFromDataIndex(
181+
final byte[][] dataIds,
182+
final short adapterId,
183+
final String typeName) {
184+
final String tableName =
185+
typeName + "_" + getQualifiedTableName(DataIndexUtils.DATA_ID_INDEX.getName());
175186
final Iterator<byte[]> dataIdIterator = Arrays.stream(dataIds).iterator();
176187
while (dataIdIterator.hasNext()) {
177188
final List<WriteRequest> deleteRequests = new ArrayList<>();
@@ -192,6 +203,11 @@ public void deleteRowsFromDataIndex(final byte[][] dataIds, final short adapterI
192203

193204
@Override
194205
public RowReader<GeoWaveRow> createReader(final DataIndexReaderParams readerParams) {
206+
final String typeName =
207+
readerParams.getInternalAdapterStore().getTypeName(readerParams.getAdapterId());
208+
if (typeName == null) {
209+
return new RowReaderWrapper<>(new CloseableIterator.Empty<GeoWaveRow>());
210+
}
195211
// TODO use authorizations if provided
196212
byte[][] dataIds;
197213
if (readerParams.getDataIds() != null) {
@@ -207,10 +223,13 @@ public RowReader<GeoWaveRow> createReader(final DataIndexReaderParams readerPara
207223
}
208224
return new RowReaderWrapper<>(
209225
new CloseableIterator.Wrapper<>(
210-
getRowsFromDataIndex(dataIds, readerParams.getAdapterId())));
226+
getRowsFromDataIndex(dataIds, readerParams.getAdapterId(), typeName)));
211227
}
212228

213-
public Iterator<GeoWaveRow> getRowsFromDataIndex(final byte[][] dataIds, final short adapterId) {
229+
public Iterator<GeoWaveRow> getRowsFromDataIndex(
230+
final byte[][] dataIds,
231+
final short adapterId,
232+
final String typeName) {
214233
final Map<ByteArray, GeoWaveRow> resultMap = new HashMap<>();
215234
final Iterator<byte[]> dataIdIterator = Arrays.stream(dataIds).iterator();
216235
while (dataIdIterator.hasNext()) {
@@ -227,7 +246,7 @@ public Iterator<GeoWaveRow> getRowsFromDataIndex(final byte[][] dataIds, final s
227246
BatchGetItemResult result =
228247
getResults(
229248
Collections.singletonMap(
230-
getQualifiedTableName(DataIndexUtils.DATA_ID_INDEX.getName()),
249+
typeName + "_" + getQualifiedTableName(DataIndexUtils.DATA_ID_INDEX.getName()),
231250
new KeysAndAttributes().withKeys(dataIdsForRequest)),
232251
adapterId,
233252
resultMap);

test/src/test/java/org/locationtech/geowave/test/secondary/BasicSecondaryIndexIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class BasicSecondaryIndexIT extends AbstractSecondaryIndexIT {
3232
GeoWaveStoreType.HBASE,
3333
GeoWaveStoreType.BIGTABLE,
3434
GeoWaveStoreType.CASSANDRA,
35-
// GeoWaveStoreType.DYNAMODB,
35+
GeoWaveStoreType.DYNAMODB,
3636
GeoWaveStoreType.REDIS,
3737
GeoWaveStoreType.ROCKSDB},
3838
options = {"enableSecondaryIndexing=true"})

0 commit comments

Comments
 (0)