diff options
author | Brian S. O'Neill <bronee@gmail.com> | 2007-06-29 05:03:09 +0000 |
---|---|---|
committer | Brian S. O'Neill <bronee@gmail.com> | 2007-06-29 05:03:09 +0000 |
commit | df422c9673316b6a7ecdb96e314aeabd660985ad (patch) | |
tree | bf12ddea3ddb19c08064cbf95ff3781050f3c101 /src/main/java/com/amazon/carbonado/repo/sleepycat | |
parent | 214be70045e4dde7b15aac6e33d764163dec0762 (diff) |
Fixed IllegalArgumentException with optimized join queries of the form "a.b = ? & (a.c = ? | a.d = ?)".
Diffstat (limited to 'src/main/java/com/amazon/carbonado/repo/sleepycat')
-rw-r--r-- | src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java index c2d1844..03874aa 100644 --- a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java +++ b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java @@ -684,9 +684,14 @@ abstract class BDBStorage<Txn, S extends Storable> implements Storage<S>, Storag return database;
}
- Blob getBlob(long locator) throws FetchException {
+ Blob getBlob(S storable, String name, long locator) throws FetchException {
try {
- return mRepository.getLobEngine().getBlobValue(locator);
+ Blob blob = mRepository.getLobEngine().getBlobValue(locator);
+ Trigger<? super S> trigger = mTriggerManager.getAdaptLobTrigger();
+ if (trigger != null) {
+ blob = trigger.adaptBlob(storable, name, blob);
+ }
+ return blob;
} catch (RepositoryException e) {
throw e.toFetchException();
}
@@ -702,9 +707,14 @@ abstract class BDBStorage<Txn, S extends Storable> implements Storage<S>, Storag }
}
- Clob getClob(long locator) throws FetchException {
+ Clob getClob(S storable, String name, long locator) throws FetchException {
try {
- return mRepository.getLobEngine().getClobValue(locator);
+ Clob clob = mRepository.getLobEngine().getClobValue(locator);
+ Trigger<? super S> trigger = mTriggerManager.getAdaptLobTrigger();
+ if (trigger != null) {
+ clob = trigger.adaptClob(storable, name, clob);
+ }
+ return clob;
} catch (RepositoryException e) {
throw e.toFetchException();
}
@@ -1075,16 +1085,16 @@ abstract class BDBStorage<Txn, S extends Storable> implements Storage<S>, Storag }
}
- public Blob getBlob(long locator) throws FetchException {
- return mStorage.getBlob(locator);
+ public Blob getBlob(S storable, String name, long locator) throws FetchException {
+ return mStorage.getBlob(storable, name, locator);
}
public long getLocator(Blob blob) throws PersistException {
return mStorage.getLocator(blob);
}
- public Clob getClob(long locator) throws FetchException {
- return mStorage.getClob(locator);
+ public Clob getClob(S storable, String name, long locator) throws FetchException {
+ return mStorage.getClob(storable, name, locator);
}
public long getLocator(Clob clob) throws PersistException {
|