Search in sources :

Example 11 with BlobType

use of org.teiid.core.types.BlobType in project teiid by teiid.

the class StringAgg method getResult.

/**
 * @see org.teiid.query.function.aggregate.AggregateFunction#getResult(CommandContext)
 */
public Object getResult(CommandContext commandContext) throws TeiidProcessingException {
    if (this.result == null) {
        this.result = buildResult(commandContext);
    }
    try {
        this.result.getWriter().close();
        FileStoreOutputStream fs = this.result.getOuputStream();
        fs.close();
        if (binary) {
            if (fs.bytesWritten()) {
                return new BlobType(new BlobImpl(result));
            }
            return new BlobType(new SerialBlob(Arrays.copyOf(fs.getBuffer(), fs.getCount())));
        }
        if (fs.bytesWritten()) {
            return new ClobType(new ClobImpl(result, -1));
        }
        return new ClobType(new ClobImpl(new String(Arrays.copyOf(fs.getBuffer(), fs.getCount()), Streamable.ENCODING)));
    } catch (IOException e) {
        throw new TeiidProcessingException(QueryPlugin.Event.TEIID30422, e);
    } catch (SQLException e) {
        throw new TeiidProcessingException(QueryPlugin.Event.TEIID30423, e);
    }
}
Also used : ClobType(org.teiid.core.types.ClobType) BlobType(org.teiid.core.types.BlobType) SQLException(java.sql.SQLException) SerialBlob(javax.sql.rowset.serial.SerialBlob) FileStoreOutputStream(org.teiid.common.buffer.FileStore.FileStoreOutputStream) IOException(java.io.IOException) BlobImpl(org.teiid.core.types.BlobImpl) ClobImpl(org.teiid.core.types.ClobImpl) TeiidProcessingException(org.teiid.core.TeiidProcessingException)

Example 12 with BlobType

use of org.teiid.core.types.BlobType in project teiid by teiid.

the class TextAgg method getResult.

/**
 * @see org.teiid.query.function.aggregate.AggregateFunction#getResult(CommandContext)
 */
public Object getResult(CommandContext commandContext) throws TeiidProcessingException {
    if (this.result == null) {
        this.result = buildResult(commandContext);
    }
    try {
        FileStoreOutputStream fs = this.result.getOuputStream();
        fs.close();
        if (fs.bytesWritten()) {
            return new BlobType(new BlobImpl(result));
        }
        return new BlobType(new SerialBlob(Arrays.copyOf(fs.getBuffer(), fs.getCount())));
    } catch (IOException e) {
        throw new TeiidProcessingException(QueryPlugin.Event.TEIID30422, e);
    } catch (SQLException e) {
        throw new TeiidProcessingException(QueryPlugin.Event.TEIID30423, e);
    }
}
Also used : BlobType(org.teiid.core.types.BlobType) SQLException(java.sql.SQLException) SerialBlob(javax.sql.rowset.serial.SerialBlob) FileStoreOutputStream(org.teiid.common.buffer.FileStore.FileStoreOutputStream) IOException(java.io.IOException) BlobImpl(org.teiid.core.types.BlobImpl) TeiidProcessingException(org.teiid.core.TeiidProcessingException)

Example 13 with BlobType

use of org.teiid.core.types.BlobType in project teiid by teiid.

the class TestLobManager method testLobPeristence.

@Test
public void testLobPeristence() throws Exception {
    BufferManager buffMgr = BufferManagerFactory.getStandaloneBufferManager();
    FileStore fs = buffMgr.createFileStore("temp");
    ClobType clob = new ClobType(new ClobImpl(new InputStreamFactory() {

        @Override
        public InputStream getInputStream() throws IOException {
            return new ReaderInputStream(new StringReader("Clob contents One"), Charset.forName(Streamable.ENCODING));
        }
    }, -1));
    BlobType blob = new BlobType(new BlobImpl(new InputStreamFactory() {

        @Override
        public InputStream getInputStream() throws IOException {
            return new ReaderInputStream(new StringReader("Blob contents Two"), Charset.forName(Streamable.ENCODING));
        }
    }));
    BlobType blobEmpty = new BlobType(new BlobImpl(new InputStreamFactory() {

        @Override
        public InputStream getInputStream() throws IOException {
            return new ByteArrayInputStream(new byte[0]);
        }
    }));
    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, 3 }, fs);
    lobManager.setMaxMemoryBytes(4);
    List<?> tuple = Arrays.asList(clob, blob, blob1, blobEmpty);
    lobManager.updateReferences(tuple, ReferenceMode.CREATE);
    assertNotNull(blob1.getReferenceStreamId());
    lobManager.persist();
    Streamable<?> lob = lobManager.getLobReference(clob.getReferenceStreamId());
    assertTrue(lob.getClass().isAssignableFrom(ClobType.class));
    ClobType clobRead = (ClobType) lob;
    assertEquals(ClobType.getString(clob), ClobType.getString(clobRead));
    assertTrue(clobRead.length() != -1);
    lob = lobManager.getLobReference(blob.getReferenceStreamId());
    assertTrue(lob.getClass().isAssignableFrom(BlobType.class));
    BlobType blobRead = (BlobType) lob;
    assertTrue(Arrays.equals(ObjectConverterUtil.convertToByteArray(blob.getBinaryStream()), ObjectConverterUtil.convertToByteArray(blobRead.getBinaryStream())));
    lobManager.updateReferences(tuple, ReferenceMode.REMOVE);
    assertEquals(0, lobManager.getLobCount());
}
Also used : FileStoreOutputStream(org.teiid.common.buffer.FileStore.FileStoreOutputStream) InputStreamFactory(org.teiid.core.types.InputStreamFactory) ClobType(org.teiid.core.types.ClobType) ReaderInputStream(org.teiid.core.util.ReaderInputStream) BlobType(org.teiid.core.types.BlobType) ByteArrayInputStream(java.io.ByteArrayInputStream) StringReader(java.io.StringReader) ClobImpl(org.teiid.core.types.ClobImpl) BlobImpl(org.teiid.core.types.BlobImpl) Test(org.junit.Test)

Example 14 with BlobType

use of org.teiid.core.types.BlobType in project teiid by teiid.

the class TestFunctionLibrary method testToChars.

@Test
public void testToChars() throws Exception {
    // $NON-NLS-1$
    Clob result = (Clob) helpInvokeMethod("to_chars", new Class<?>[] { DefaultDataClasses.BLOB, DefaultDataClasses.STRING }, new Object[] { new BlobType(new SerialBlob("hello world".getBytes("ASCII"))), "ASCII" }, null);
    String string = result.getSubString(1, (int) result.length());
    assertEquals("hello world", string);
}
Also used : BlobType(org.teiid.core.types.BlobType) SerialBlob(javax.sql.rowset.serial.SerialBlob) Clob(java.sql.Clob) SerialClob(javax.sql.rowset.serial.SerialClob) Test(org.junit.Test)

Example 15 with BlobType

use of org.teiid.core.types.BlobType in project teiid by teiid.

the class TestFunctionLibrary method testToChars2.

@Test
public void testToChars2() throws Exception {
    // $NON-NLS-1$
    Clob result = (Clob) helpInvokeMethod("to_chars", new Class<?>[] { DefaultDataClasses.BLOB, DefaultDataClasses.STRING }, new Object[] { new BlobType(new SerialBlob("hello world".getBytes("ASCII"))), "HEX" }, null);
    String string = result.getSubString(1, (int) result.length());
    assertEquals("68656C6C6F20776F726C64", string);
}
Also used : BlobType(org.teiid.core.types.BlobType) SerialBlob(javax.sql.rowset.serial.SerialBlob) Clob(java.sql.Clob) SerialClob(javax.sql.rowset.serial.SerialClob) Test(org.junit.Test)

Aggregations

BlobType (org.teiid.core.types.BlobType)23 BlobImpl (org.teiid.core.types.BlobImpl)11 InputStreamFactory (org.teiid.core.types.InputStreamFactory)10 Test (org.junit.Test)9 ByteArrayInputStream (java.io.ByteArrayInputStream)7 IOException (java.io.IOException)7 SerialBlob (javax.sql.rowset.serial.SerialBlob)7 Clob (java.sql.Clob)6 SQLException (java.sql.SQLException)6 ClobImpl (org.teiid.core.types.ClobImpl)6 ClobType (org.teiid.core.types.ClobType)6 XMLType (org.teiid.core.types.XMLType)6 InputStream (java.io.InputStream)5 Blob (java.sql.Blob)5 ArrayList (java.util.ArrayList)4 ReaderInputStream (org.teiid.core.util.ReaderInputStream)4 SerialClob (javax.sql.rowset.serial.SerialClob)3 FileStoreOutputStream (org.teiid.common.buffer.FileStore.FileStoreOutputStream)3 SQLXMLImpl (org.teiid.core.types.SQLXMLImpl)3 N1qlQueryRow (com.couchbase.client.java.query.N1qlQueryRow)2