[teiid-commits] teiid SVN: r4415 - in branches/7.7.x/engine/src: test/java/org/teiid/common/buffer and 1 other directory.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Mon Sep 10 09:58:25 EDT 2012
Author: jolee
Date: 2012-09-10 09:58:25 -0400 (Mon, 10 Sep 2012)
New Revision: 4415
Modified:
branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java
branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java
branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java
Log:
TEIID-2147 fixing the reported storage mode for the filestore lobs
Modified: branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java 2012-09-10 13:31:50 UTC (rev 4414)
+++ branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java 2012-09-10 13:58:25 UTC (rev 4415)
@@ -42,6 +42,7 @@
private int count;
private boolean bytesWritten;
private boolean closed;
+ private byte[] singleByte = new byte[1];
public FileStoreOutputStream(int size) {
this.buffer = new byte[size];
@@ -49,7 +50,8 @@
@Override
public void write(int b) throws IOException {
- write(new byte[b], 0, 1);
+ singleByte[0] = (byte)b;
+ write(singleByte, 0, 1);
}
@Override
Modified: branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java 2012-09-10 13:31:50 UTC (rev 4414)
+++ branches/7.7.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java 2012-09-10 13:58:25 UTC (rev 4415)
@@ -90,12 +90,13 @@
@Override
public void free() throws IOException {
+ fsos = null;
lobBuffer.remove();
}
@Override
public StorageMode getStorageMode() {
- if (fsos == null) {
+ if (fsos == null || fsos.bytesWritten()) {
return StorageMode.PERSISTENT;
}
return StorageMode.MEMORY;
Modified: branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java 2012-09-10 13:31:50 UTC (rev 4414)
+++ branches/7.7.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java 2012-09-10 13:58:25 UTC (rev 4415)
@@ -31,12 +31,14 @@
import java.util.List;
import org.junit.Test;
+import org.teiid.common.buffer.FileStore.FileStoreOutputStream;
import org.teiid.common.buffer.LobManager.ReferenceMode;
import org.teiid.common.buffer.impl.BufferManagerImpl;
import org.teiid.core.types.BlobImpl;
import org.teiid.core.types.BlobType;
import org.teiid.core.types.ClobImpl;
import org.teiid.core.types.ClobType;
+import org.teiid.core.types.DataTypeManager;
import org.teiid.core.types.InputStreamFactory;
import org.teiid.core.types.Streamable;
import org.teiid.core.util.ObjectConverterUtil;
@@ -65,12 +67,25 @@
return new ReaderInputStream(new StringReader("Blob contents Two"), Charset.forName(Streamable.ENCODING));
}
- }));
+ }));
- LobManager lobManager = new LobManager(new int[] {0, 1}, fs);
+ FileStore fs1 = buffMgr.createFileStore("blob");
+ FileStoreInputStreamFactory fsisf = new FileStoreInputStreamFactory(fs1, Streamable.ENCODING);
+ FileStoreOutputStream fsos = fsisf.getOuputStream();
+ byte[] b = new byte[DataTypeManager.MAX_LOB_MEMORY_BYTES + 1];
+ fsos.write(b);
+ fsos.close();
+ BlobType blob1 = new BlobType(new BlobImpl(fsisf));
+
+ assertNotNull(blob1.getReferenceStreamId());
+
+ LobManager lobManager = new LobManager(new int[] {0, 1, 2}, fs);
lobManager.setMaxMemoryBytes(4);
- List<?> tuple = Arrays.asList(clob, blob);
+ List<?> tuple = Arrays.asList(clob, blob, blob1);
lobManager.updateReferences(tuple, ReferenceMode.CREATE);
+
+ assertNotNull(blob1.getReferenceStreamId());
+
lobManager.persist();
Streamable<?>lob = lobManager.getLobReference(clob.getReferenceStreamId());
More information about the teiid-commits
mailing list