[teiid-commits] teiid SVN: r4326 - in branches/8.1.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
Wed Aug 15 12:15:53 EDT 2012
Author: shawkins
Date: 2012-08-15 12:15:52 -0400 (Wed, 15 Aug 2012)
New Revision: 4326
Modified:
branches/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java
branches/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java
branches/8.1.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/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java
===================================================================
--- branches/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java 2012-08-15 14:51:07 UTC (rev 4325)
+++ branches/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStore.java 2012-08-15 16:15:52 UTC (rev 4326)
@@ -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/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java
===================================================================
--- branches/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java 2012-08-15 14:51:07 UTC (rev 4325)
+++ branches/8.1.x/engine/src/main/java/org/teiid/common/buffer/FileStoreInputStreamFactory.java 2012-08-15 16:15:52 UTC (rev 4326)
@@ -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/8.1.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java
===================================================================
--- branches/8.1.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java 2012-08-15 14:51:07 UTC (rev 4325)
+++ branches/8.1.x/engine/src/test/java/org/teiid/common/buffer/TestLobManager.java 2012-08-15 16:15:52 UTC (rev 4326)
@@ -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