use of com.questdb.common.RecordCursor in project questdb by bluestreak01.
the class MergingRowSourceTest method testMerge.
@Test
public void testMerge() throws JournalException, NumericException {
try (JournalWriter<Quote> w = getFactory().writer(Quote.class)) {
TestUtils.generateQuoteData(w, 100000, DateFormatUtils.parseDateTime("2014-02-11T00:00:00.000Z"), 10);
RowSource srcA = new KvIndexSymLookupRowSource("sym", "BP.L", true);
RowSource srcB = new KvIndexSymLookupRowSource("sym", "WTB.L", true);
try (RecordSource rs = new JournalRecordSource(new JournalPartitionSource(w.getMetadata(), true), new MergingRowSource(srcA, srcB))) {
long last = 0;
RecordCursor c = rs.prepareCursor(getFactory());
try {
int ts = rs.getMetadata().getColumnIndex("timestamp");
while (c.hasNext()) {
long r = c.next().getDate(ts);
Assert.assertTrue(r > last);
last = r;
}
} finally {
c.releaseCursor();
}
}
}
}
use of com.questdb.common.RecordCursor in project questdb by bluestreak01.
the class RecordListTest method writeAndReadRecords.
private <T> void writeAndReadRecords(JournalWriter<T> journal, int count, int pageSize, RecordGenerator<T> generator) throws IOException, JournalException, ParserException {
try {
for (int i = 0; i < count; i++) {
journal.append(generator.generate(i));
}
journal.commit();
try (RecordList records = new RecordList(journal.getMetadata(), pageSize)) {
LongList offsets = new LongList();
try (RecordSource rs = compiler.compile(getFactory(), journal.getLocation().getName())) {
long o = -1;
RecordCursor cursor = rs.prepareCursor(getFactory());
try {
for (Record rec : cursor) {
offsets.add(o = records.append(rec, o));
}
} finally {
cursor.releaseCursor();
}
}
int i = 0;
records.toTop();
while (records.hasNext()) {
generator.assertRecord(records.next(), i++);
}
}
} finally {
journal.close();
}
}
use of com.questdb.common.RecordCursor in project questdb by bluestreak01.
the class GenericBinaryTest method readOutputStream.
private List<byte[]> readOutputStream() throws ParserException {
List<byte[]> result = new ArrayList<>();
try (RecordSource rs = compile("bintest")) {
RecordCursor cursor = rs.prepareCursor(getFactory());
try {
for (Record e : cursor) {
ByteArrayOutputStream o = new ByteArrayOutputStream();
e.getBin(0, o);
result.add(o.toByteArray());
}
} finally {
cursor.releaseCursor();
}
return result;
}
}
use of com.questdb.common.RecordCursor in project questdb by bluestreak01.
the class GenericBinaryTest method testOutputInput.
@Test
public void testOutputInput() throws Exception {
try (JournalWriter writer = getGenericWriter()) {
List<byte[]> expected = getBytes();
writeOutputStream(writer, expected);
List<byte[]> actual = new ArrayList<>();
try (RecordSource rs = compile("bintest")) {
RecordCursor cursor = rs.prepareCursor(getFactory());
try {
for (Record e : cursor) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream in = e.getBin(0);
int b;
while ((b = in.read()) != -1) {
out.write(b);
}
actual.add(out.toByteArray());
}
assertEquals(expected, actual);
} finally {
cursor.releaseCursor();
}
}
}
}
use of com.questdb.common.RecordCursor in project questdb by bluestreak01.
the class GenericInteropTest method testGenericAll.
@Test
public void testGenericAll() throws Exception {
try (JournalWriter writer = makeGenericWriter()) {
JournalEntryWriter w = writer.entryWriter();
w.putSym(0, "EURUSD");
w.putDate(1, 19999);
w.putDouble(2, 1.24);
w.putDouble(3, 1.25);
w.putInt(4, 10000);
w.putInt(5, 12000);
w.putInt(6, 1);
w.putStr(7, "OK");
w.putStr(8, "system");
w.putStr(9, "EURUSD:GLOBAL");
w.putBool(10, true);
w.putNull(11);
w.putLong(12, 13141516);
w.putShort(13, (short) 25000);
w.append();
w = writer.entryWriter();
w.putSym(0, "EURUSD");
w.putDate(1, 20000);
w.putDouble(2, 1.23);
w.putDouble(3, 1.26);
w.putInt(4, 11000);
w.putInt(5, 13000);
w.putInt(6, 2);
w.putStr(7, "STALE");
w.putStr(8, "system");
w.putStr(9, "EURUSD:GLOBAL");
w.putBool(10, false);
w.putNull(11);
w.putLong(12, 23242526);
w.putShort(13, (short) 30000);
w.append();
writer.commit();
}
try (RecordSource rs = compile("test")) {
RecordCursor cursor = rs.prepareCursor(getFactory());
try {
Record e;
Assert.assertTrue(cursor.hasNext());
Assert.assertNotNull(e = cursor.next());
Assert.assertEquals("EURUSD", e.getSym(0));
Assert.assertEquals(19999, e.getDate(1));
Assert.assertEquals(1.24, e.getDouble(2), 0.000001);
Assert.assertEquals(1.25, e.getDouble(3), 0.000001);
Assert.assertEquals(10000, e.getInt(4));
Assert.assertEquals(12000, e.getInt(5));
Assert.assertEquals(1, e.getByte(6));
TestUtils.assertEquals("OK", e.getFlyweightStr(7));
TestUtils.assertEquals("system", e.getFlyweightStr(8));
TestUtils.assertEquals("EURUSD:GLOBAL", e.getFlyweightStr(9));
Assert.assertTrue(e.getBool(10));
Assert.assertNull(e.getFlyweightStr(11));
Assert.assertEquals(13141516, e.getLong(12));
Assert.assertEquals(25000, e.getShort(13));
Assert.assertTrue(cursor.hasNext());
Assert.assertNotNull(e = cursor.next());
Assert.assertEquals("EURUSD", e.getSym(0));
Assert.assertEquals(20000, e.getDate(1));
Assert.assertEquals(1.23, e.getDouble(2), 0.000001);
Assert.assertEquals(1.26, e.getDouble(3), 0.000001);
Assert.assertEquals(11000, e.getInt(4));
Assert.assertEquals(13000, e.getInt(5));
Assert.assertEquals(2, e.getByte(6));
TestUtils.assertEquals("STALE", e.getFlyweightStr(7));
TestUtils.assertEquals("system", e.getFlyweightStr(8));
TestUtils.assertEquals("EURUSD:GLOBAL", e.getFlyweightStr(9));
Assert.assertFalse(e.getBool(10));
Assert.assertNull(e.getFlyweightStr(11));
Assert.assertEquals(23242526, e.getLong(12));
Assert.assertEquals(30000, e.getShort(13));
Assert.assertFalse(cursor.hasNext());
} finally {
cursor.releaseCursor();
}
}
}
Aggregations