Class ReadOnlySpannerView
- All Implemented Interfaces:
CloseableKVStore,KVStore,Closeable,AutoCloseable
KVStore view of a ReadContext.
For best performance, consider wrapping an instance of this class in a CachingKVStore.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final com.google.cloud.spanner.ReadContextprotected final Function<? super com.google.cloud.spanner.SpannerException,RuntimeException> protected final Loggerprotected final String -
Constructor Summary
ConstructorsConstructorDescriptionReadOnlySpannerView(String tableName, com.google.cloud.spanner.ReadContext context) Convenience constructor.ReadOnlySpannerView(String tableName, com.google.cloud.spanner.ReadContext context, Function<? super com.google.cloud.spanner.SpannerException, RuntimeException> exceptionMapper) Primary constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes the associatedReadContext.Get the value associated with the given key, if any.getAtLeast(ByteData minKey, ByteData maxKey) Get the key/value pair having the smallest key greater than or equal to the given minimum, if any.Get the key/value pair having the largest key strictly less than the given maximum, if any.Iterate the key/value pairs in the specified range.protected static KVPairkv(com.google.cloud.spanner.Struct struct) voidSet the value associated with the given key.voidRemove the key/value pair with the given key, if it exists.voidremoveRange(ByteData minKey, ByteData maxKey) Remove all key/value pairs whose keys are in a given range.Methods inherited from class io.permazen.kv.AbstractKVStore
adjustCounter, decodeCounter, encodeCounterMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.permazen.kv.KVStore
adjustCounter, apply, decodeCounter, encodeCounter, getRange, getRange, removeRange
-
Field Details
-
log
-
tableName
-
context
protected final com.google.cloud.spanner.ReadContext context -
exceptionMapper
protected final Function<? super com.google.cloud.spanner.SpannerException,RuntimeException> exceptionMapper
-
-
Constructor Details
-
ReadOnlySpannerView
public ReadOnlySpannerView(String tableName, com.google.cloud.spanner.ReadContext context, Function<? super com.google.cloud.spanner.SpannerException, RuntimeException> exceptionMapper) Primary constructor.- Parameters:
tableName- name of the Spanner database tablecontext- read contextexceptionMapper- mapper for any thrownSpannerExceptions, or null for none- Throws:
IllegalArgumentException- iftableNameorcontextis null
-
ReadOnlySpannerView
Convenience constructor.Equivalent to
ReadOnlySpannerView(tableName, context, null).- Parameters:
tableName- name of the Spanner database tablecontext- read context- Throws:
IllegalArgumentException- iftableNameorcontextis null
-
-
Method Details
-
get
Description copied from interface:KVStoreGet the value associated with the given key, if any.- Specified by:
getin interfaceKVStore- Overrides:
getin classAbstractKVStore- Parameters:
key- key- Returns:
- value associated with key, or null if not found
-
getAtLeast
Description copied from interface:KVStoreGet the key/value pair having the smallest key greater than or equal to the given minimum, if any.An optional (exclusive) maximum key may also be specified; if
maxKeyis null, there is no upper bound; ifmaxKey <= minKey, null is always returned.If keys starting with
0xffare not supported by this instance, andminKeystarts with0xff, then this method returns null.- Specified by:
getAtLeastin interfaceKVStore- Overrides:
getAtLeastin classAbstractKVStore- Parameters:
minKey- minimum key (inclusive), or null for no minimum (get the smallest key)maxKey- maximum key (exclusive), or null for no maximum (no upper bound)- Returns:
- smallest key/value pair with
key >= minKeyandkey < maxKey, or null if none exists
-
getAtMost
Description copied from interface:KVStoreGet the key/value pair having the largest key strictly less than the given maximum, if any.An optional (inclusive) minimum key may also be specified; if
minKeyis null, there is no lower bound (equivalent to a lower bound of the empty byte array); ifminKey >= maxKey, null is always returned.If keys starting with
0xffare not supported by this instance, andmaxKeystarts with0xff, then this method behaves as ifmaxKeywere null.- Specified by:
getAtMostin interfaceKVStore- Overrides:
getAtMostin classAbstractKVStore- Parameters:
maxKey- maximum key (exclusive), or null for no maximum (get the largest key)minKey- minimum key (inclusive), or null for no minimum (no lower bound)- Returns:
- largest key/value pair with
key < maxKeyandkey >= minKey, or null if none exists
-
getRange
Description copied from interface:KVStoreIterate the key/value pairs in the specified range. The returnedCloseableIterator'sremove()method must be supported and should have the same effect as invokingremove()on the corresponding key.If keys starting with
0xffare not supported by this instance, andminKeystarts with0xff, then this method returns an empty iteration.If keys starting with
0xffare not supported by this instance, andmaxKeystarts with0xff, then this method behaves as ifmaxKeywere null.The returned
CloseableIteratoris weakly consistent (seejava.util.concurrent). In short, the returnedCloseableIteratormust not throwConcurrentModificationException; however, whether or not a "live"CloseableIteratorreflects any modifications made after its creation is implementation dependent. Implementations that do make post-creation updates visible in theCloseableIterator, even if the update occurs after some delay, must preserve the order in which the modifications actually occurred.The returned
CloseableIteratoritself is not guaranteed to be thread safe; is should only be used in the thread that created it.Invokers of this method are encouraged to
close()the returned iterators, though this is not required for correct behavior.- Specified by:
getRangein interfaceKVStore- Parameters:
minKey- minimum key (inclusive), or null for no minimum (start at the smallest key)maxKey- maximum key (exclusive), or null for no maximum (end at the largest key)reverse- true to return key/value pairs in reverse order (i.e., keys descending)- Returns:
- iteration of key/value pairs in the range
minKey(inclusive) tomaxKey(exclusive)
-
put
Description copied from interface:KVStoreSet the value associated with the given key.- Specified by:
putin interfaceKVStore- Overrides:
putin classAbstractKVStore- Parameters:
key- keyvalue- value
-
remove
Description copied from interface:KVStoreRemove the key/value pair with the given key, if it exists.- Specified by:
removein interfaceKVStore- Overrides:
removein classAbstractKVStore- Parameters:
key- key
-
removeRange
Description copied from interface:KVStoreRemove all key/value pairs whose keys are in a given range.The
minKeymust be less than or equal tomaxKey; if they equal (and not null) then nothing happens; if they are both null then all entries are deleted.If keys starting with
0xffare not supported by this instance, then:- If
minKeystarts with0xff, then no change occurs - If
maxKeystarts with0xff, then this method behaves as ifmaxKeywere null
- Specified by:
removeRangein interfaceKVStore- Overrides:
removeRangein classAbstractKVStore- Parameters:
minKey- minimum key (inclusive), or null for no minimummaxKey- maximum key (exclusive), or null for no maximum
- If
-
close
public void close()Closes the associatedReadContext.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceCloseableKVStore
-
kv
-