Search in sources :

Example 16 with StringSink

use of com.questdb.std.str.StringSink in project questdb by bluestreak01.

the class HashJoinRecordSourceTest method testHashJoinJournalRecordSource.

@Test
public void testHashJoinJournalRecordSource() throws Exception {
    bw.append(new Band().setName("band1").setType("rock").setUrl("http://band1.com"));
    bw.append(new Band().setName("band2").setType("blues").setUrl("http://band2.com"));
    bw.append(new Band().setName("band3").setType("jazz").setUrl("http://band3.com"));
    bw.append(new Band().setName("band1").setType("jazz").setUrl("http://new.band1.com"));
    bw.commit();
    aw.append(new Album().setName("album X").setBand("band1").setGenre("pop"));
    aw.append(new Album().setName("album Y").setBand("band3").setGenre("metal"));
    aw.append(new Album().setName("album BZ").setBand("band1").setGenre("rock"));
    aw.commit();
    StringSink sink = new StringSink();
    RecordSourcePrinter p = new RecordSourcePrinter(sink);
    RecordSource joinResult = new SelectedColumnsRecordSource(new HashJoinRecordSource(new JournalRecordSource(new JournalPartitionSource(bw.getMetadata(), false), new AllRowSource()), new IntList() {

        {
            add(bw.getMetadata().getColumnIndex("name"));
        }
    }, new JournalRecordSource(new JournalPartitionSource(aw.getMetadata(), false), new AllRowSource()), new IntList() {

        {
            add(aw.getMetadata().getColumnIndex("band"));
        }
    }, false, 4 * 1024 * 1024, 4 * 1024 * 1024, 1024 * 1024, new RecordKeyCopierCompiler(new BytecodeAssembler())), new ObjList<CharSequence>() {

        {
            add("genre");
        }
    });
    p.print(joinResult, getFactory());
    Assert.assertEquals("pop\n" + "rock\n" + "metal\n" + "pop\n" + "rock\n", sink.toString());
}
Also used : Album(com.questdb.model.Album) Band(com.questdb.model.Band) StringSink(com.questdb.std.str.StringSink) HashJoinRecordSource(com.questdb.ql.join.HashJoinRecordSource) BytecodeAssembler(com.questdb.std.BytecodeAssembler) IntList(com.questdb.std.IntList) SelectedColumnsRecordSource(com.questdb.ql.select.SelectedColumnsRecordSource) HashJoinRecordSource(com.questdb.ql.join.HashJoinRecordSource) RecordKeyCopierCompiler(com.questdb.ql.map.RecordKeyCopierCompiler) SelectedColumnsRecordSource(com.questdb.ql.select.SelectedColumnsRecordSource)

Example 17 with StringSink

use of com.questdb.std.str.StringSink in project questdb by bluestreak01.

the class VirtualColumnTest method testPlusDouble.

@Test
public void testPlusDouble() throws Exception {
    try (final JournalWriter w = getFactory().writer(new JournalStructure("xyz") {

        {
            $str("ccy");
            $double("bid");
        }
    })) {
        Rnd rnd = new Rnd();
        for (int i = 0; i < 100; i++) {
            JournalEntryWriter ew = w.entryWriter();
            ew.putStr(0, rnd.nextString(10));
            ew.putDouble(1, rnd.nextDouble());
            ew.append();
        }
        w.commit();
        StringSink sink = new StringSink();
        RecordSourcePrinter p = new RecordSourcePrinter(sink);
        BootstrapEnv env = new BootstrapEnv();
        env.configuration = new ServerConfiguration();
        final AddDoubleOperator plus = (AddDoubleOperator) AddDoubleOperator.FACTORY.newInstance(0, env);
        plus.setName("plus");
        plus.setLhs(new DoubleRecordSourceColumn(w.getMetadata().getColumnIndex("bid"), 0));
        plus.setRhs(new DoubleConstant(12.5, 0));
        // select ccy, bid, bid+12.5 plus from xyz
        try (VirtualColumnRecordSource src = new VirtualColumnRecordSource(compile("xyz"), new ObjList<VirtualColumn>() {

            {
                add(plus);
            }
        })) {
            p.print(src, getFactory());
            final String expected = "VTJWCPSWHY\t-104.021850585938\t-91.521850585938\n" + "PEHNRXGZSX\t0.000020634160\t12.500020634160\n" + "IBBTGPGWFF\t0.000000567185\t12.500000567185\n" + "DEYYQEHBHF\t0.000000401164\t12.500000401164\n" + "LPDXYSBEOU\t384.072387695313\t396.572387695313\n" + "SHRUEDRQQU\t109.355468750000\t121.855468750000\n" + "FJGETJRSZS\t198.750000000000\t211.250000000000\n" + "RFBVTMHGOO\t172.796875000000\t185.296875000000\n" + "VDZJMYICCX\t-1024.000000000000\t-1011.500000000000\n" + "UICWEKGHVU\t0.000425009843\t12.500425009843\n" + "DOTSEDYYCT\t557.000000000000\t569.500000000000\n" + "OLYXWCKYLS\t0.000553289865\t12.500553289865\n" + "DSWUGSHOLN\t-1013.467773437500\t-1000.967773437500\n" + "IQBZXIOVIK\t512.000000000000\t524.500000000000\n" + "MSSUQSRLTK\t0.000000776007\t12.500000776007\n" + "SJOJIPHZEP\t174.774871826172\t187.274871826172\n" + "VLTOVLJUML\t-77.428833007813\t-64.928833007813\n" + "HMLLEOYPHR\t0.000327562877\t12.500327562877\n" + "ZIMNZZRMFM\t238.632812500000\t251.132812500000\n" + "ZGHWVDKFLO\t0.000102697388\t12.500102697388\n" + "OXPKRGIIHY\t128.000000000000\t140.500000000000\n" + "OQMYSSMPGL\t-144.421875000000\t-131.921875000000\n" + "HNZHZSQLDG\t832.000000000000\t844.500000000000\n" + "GIFOUSZMZV\t-200.000000000000\t-187.500000000000\n" + "BNDCQCEHNO\t2.602588653564\t15.102588653564\n" + "ELLKKHTWNW\t0.000969694171\t12.500969694171\n" + "FLRBROMNXK\t0.000000548919\t12.500000548919\n" + "ZULIGYVFZF\t-327.250000000000\t-314.750000000000\n" + "ZLUOGXHFVW\t0.000002116648\t12.500002116648\n" + "SRGOONFCLT\t310.101058959961\t322.601058959961\n" + "KFMQNTOGMX\t0.000012478828\t12.500012478828\n" + "LGMXSLUQDY\t0.000013214448\t12.500013214448\n" + "HNIMYFFDTN\t0.000000001910\t12.500000001910\n" + "FLPBNHGZWW\t695.173828125000\t707.673828125000\n" + "NGTNLEGPUH\t0.205350898206\t12.705350898206\n" + "UGGLNYRZLC\t638.000000000000\t650.500000000000\n" + "MIGQZVKHTL\t0.000000040298\t12.500000040298\n" + "SLQVFGPPRG\t-1024.000000000000\t-1011.500000000000\n" + "BHYSBQYMIZ\t5.336447119713\t17.836447119713\n" + "VTNPIWZNFK\t0.000000012570\t12.500000012570\n" + "VMCGFNWGRM\t-128.000000000000\t-115.500000000000\n" + "GIJYDVRVNG\t0.000000052204\t12.500000052204\n" + "EQODRZEIWF\t-31.000000000000\t-18.500000000000\n" + "KYHQQUWQOE\t880.000000000000\t892.500000000000\n" + "NEBQQEMXDK\t25.839271545410\t38.339271545410\n" + "JCTIZKYFLU\t768.000000000000\t780.500000000000\n" + "QSNPXMKJSM\t0.004184104619\t12.504184104619\n" + "XEYVTUPDHH\t845.823730468750\t858.323730468750\n" + "IWHPZRHHMG\t37.350353240967\t49.850353240967\n" + "YYFLSVIHDW\t-400.000000000000\t-387.500000000000\n" + "EVMLKCJBEV\t0.000000914462\t12.500000914462\n" + "HLIHYBTVZN\t0.000001439041\t12.500001439041\n" + "NXFSUWPNXH\t-199.648437500000\t-187.148437500000\n" + "TZODWKOCPF\t0.002563251997\t12.502563251997\n" + "PVKNCBWLNL\t0.397523656487\t12.897523656487\n" + "WQXYPOVFDB\t8.950848102570\t21.450848102570\n" + "NIJEEHRUGP\t448.000000000000\t460.500000000000\n" + "BTKVSBEGMI\t391.000000000000\t403.500000000000\n" + "NLKFNUHNRJ\t0.000000048669\t12.500000048669\n" + "BWVLOMPBET\t0.000038398017\t12.500038398017\n" + "KRIVOCUGPU\t2.929819107056\t15.429819107056\n" + "FIVQFNIZOS\t815.000000000000\t827.500000000000\n" + "SEPGIUQZHE\t0.017051883508\t12.517051883508\n" + "QHNOJIGFIN\t601.087127685547\t613.587127685547\n" + "QVZWEVQTQO\t-492.000000000000\t-479.500000000000\n" + "XTPNHTDCEB\t-966.000000000000\t-953.500000000000\n" + "XBBZVRLPTY\t70.810325622559\t83.310325622559\n" + "GYFUXCDKDW\t0.000837845349\t12.500837845349\n" + "DXCBJFRPXZ\t0.000008696692\t12.500008696692\n" + "XUNYQXTGNJ\t6.359375000000\t18.859375000000\n" + "LLEYMIWTCW\t792.242187500000\t804.742187500000\n" + "ORGFIEVMKP\t-726.000000000000\t-713.500000000000\n" + "GPYKKBMQMU\t0.000000000000\t12.500000000000\n" + "CIHCNPUGJO\t-762.240234375000\t-749.740234375000\n" + "EUKWMDNZZB\t0.000000031117\t12.500000031117\n" + "KOJSOLDYRO\t552.000000000000\t564.500000000000\n" + "PUNRPSMIFD\t73.947616577148\t86.447616577148\n" + "DKOEZBRQSQ\t-736.000000000000\t-723.500000000000\n" + "DIHHNSSTCR\t0.000002963134\t12.500002963134\n" + "PVQFULMERT\t0.000005817310\t12.500005817310\n" + "QBUYZVQQHS\t0.000000011688\t12.500000011688\n" + "PZPBHLNEJR\t-1003.625000000000\t-991.125000000000\n" + "IKDISGQFYQ\t351.509208679199\t364.009208679199\n" + "GPZNYVLTPK\t0.000702012621\t12.500702012621\n" + "QFNPOYNNCT\t0.000445737198\t12.500445737198\n" + "NSXHHDILEL\t0.001584486396\t12.501584486396\n" + "MMZSCJOUOU\t642.865234375000\t655.365234375000\n" + "ENFELWWRSL\t-934.268554687500\t-921.768554687500\n" + "QHGJBFQBBK\t103.908081054688\t116.408081054688\n" + "JZZYNPPBXB\t-944.000000000000\t-931.500000000000\n" + "RIIYMHOWKC\t0.000000542615\t12.500000542615\n" + "ZNLCNGZTOY\t0.000080315222\t12.500080315222\n" + "XRSFPVRQLG\t0.000000093226\t12.500000093226\n" + "ONNLITWGLF\t0.000000000000\t12.500000000000\n" + "QWPKLHTIIG\t-783.750000000000\t-771.250000000000\n" + "YYPDVRGRQG\t0.000376001219\t12.500376001219\n" + "PHKOWBVDEG\t0.000002666791\t12.500002666791\n" + "XGZMDJTHMH\t-670.500000000000\t-658.000000000000\n" + "VZHCNXZEQG\t-524.507812500000\t-512.007812500000\n" + "LUCFTLNKYT\t0.000000001835\t12.500000001835\n";
            Assert.assertEquals(expected, sink.toString());
        }
    }
}
Also used : DoubleConstant(com.questdb.ql.ops.constant.DoubleConstant) JournalWriter(com.questdb.store.JournalWriter) BootstrapEnv(com.questdb.BootstrapEnv) VirtualColumnRecordSource(com.questdb.ql.virtual.VirtualColumnRecordSource) ServerConfiguration(com.questdb.ServerConfiguration) Rnd(com.questdb.std.Rnd) StringSink(com.questdb.std.str.StringSink) AddDoubleOperator(com.questdb.ql.ops.plus.AddDoubleOperator) JournalStructure(com.questdb.store.factory.configuration.JournalStructure) VirtualColumn(com.questdb.ql.ops.VirtualColumn) JournalEntryWriter(com.questdb.store.JournalEntryWriter) DoubleRecordSourceColumn(com.questdb.ql.ops.col.DoubleRecordSourceColumn) AbstractTest(com.questdb.test.tools.AbstractTest) Test(org.junit.Test)

Example 18 with StringSink

use of com.questdb.std.str.StringSink in project questdb by bluestreak01.

the class VirtualColumnTest method testSelectedColumns.

@Test
public void testSelectedColumns() throws Exception {
    try (final JournalWriter w = getFactory().writer(new JournalStructure("xyz") {

        {
            $str("ccy");
            $double("bid");
        }
    })) {
        Rnd rnd = new Rnd();
        for (int i = 0; i < 100; i++) {
            JournalEntryWriter ew = w.entryWriter();
            ew.putStr(0, rnd.nextString(10));
            ew.putDouble(1, rnd.nextDouble());
            ew.append();
        }
        w.commit();
        StringSink sink = new StringSink();
        RecordSourcePrinter p = new RecordSourcePrinter(sink);
        BootstrapEnv env = new BootstrapEnv();
        env.configuration = new ServerConfiguration();
        final AddDoubleOperator plus = (AddDoubleOperator) AddDoubleOperator.FACTORY.newInstance(0, env);
        plus.setName("plus");
        plus.setLhs(new DoubleRecordSourceColumn(w.getMetadata().getColumnIndex("bid"), 0));
        plus.setRhs(new DoubleConstant(12.5, 0));
        // select ccy, bid+12.5 plus from xyz
        try (RecordSource src = new SelectedColumnsRecordSource(new VirtualColumnRecordSource(compile("xyz"), new ObjList<VirtualColumn>() {

            {
                add(plus);
            }
        }), new ObjList<CharSequence>() {

            {
                add("ccy");
                add("plus");
            }
        })) {
            p.print(src, getFactory());
            final String expected = "VTJWCPSWHY\t-91.521850585938\n" + "PEHNRXGZSX\t12.500020634160\n" + "IBBTGPGWFF\t12.500000567185\n" + "DEYYQEHBHF\t12.500000401164\n" + "LPDXYSBEOU\t396.572387695313\n" + "SHRUEDRQQU\t121.855468750000\n" + "FJGETJRSZS\t211.250000000000\n" + "RFBVTMHGOO\t185.296875000000\n" + "VDZJMYICCX\t-1011.500000000000\n" + "UICWEKGHVU\t12.500425009843\n" + "DOTSEDYYCT\t569.500000000000\n" + "OLYXWCKYLS\t12.500553289865\n" + "DSWUGSHOLN\t-1000.967773437500\n" + "IQBZXIOVIK\t524.500000000000\n" + "MSSUQSRLTK\t12.500000776007\n" + "SJOJIPHZEP\t187.274871826172\n" + "VLTOVLJUML\t-64.928833007813\n" + "HMLLEOYPHR\t12.500327562877\n" + "ZIMNZZRMFM\t251.132812500000\n" + "ZGHWVDKFLO\t12.500102697388\n" + "OXPKRGIIHY\t140.500000000000\n" + "OQMYSSMPGL\t-131.921875000000\n" + "HNZHZSQLDG\t844.500000000000\n" + "GIFOUSZMZV\t-187.500000000000\n" + "BNDCQCEHNO\t15.102588653564\n" + "ELLKKHTWNW\t12.500969694171\n" + "FLRBROMNXK\t12.500000548919\n" + "ZULIGYVFZF\t-314.750000000000\n" + "ZLUOGXHFVW\t12.500002116648\n" + "SRGOONFCLT\t322.601058959961\n" + "KFMQNTOGMX\t12.500012478828\n" + "LGMXSLUQDY\t12.500013214448\n" + "HNIMYFFDTN\t12.500000001910\n" + "FLPBNHGZWW\t707.673828125000\n" + "NGTNLEGPUH\t12.705350898206\n" + "UGGLNYRZLC\t650.500000000000\n" + "MIGQZVKHTL\t12.500000040298\n" + "SLQVFGPPRG\t-1011.500000000000\n" + "BHYSBQYMIZ\t17.836447119713\n" + "VTNPIWZNFK\t12.500000012570\n" + "VMCGFNWGRM\t-115.500000000000\n" + "GIJYDVRVNG\t12.500000052204\n" + "EQODRZEIWF\t-18.500000000000\n" + "KYHQQUWQOE\t892.500000000000\n" + "NEBQQEMXDK\t38.339271545410\n" + "JCTIZKYFLU\t780.500000000000\n" + "QSNPXMKJSM\t12.504184104619\n" + "XEYVTUPDHH\t858.323730468750\n" + "IWHPZRHHMG\t49.850353240967\n" + "YYFLSVIHDW\t-387.500000000000\n" + "EVMLKCJBEV\t12.500000914462\n" + "HLIHYBTVZN\t12.500001439041\n" + "NXFSUWPNXH\t-187.148437500000\n" + "TZODWKOCPF\t12.502563251997\n" + "PVKNCBWLNL\t12.897523656487\n" + "WQXYPOVFDB\t21.450848102570\n" + "NIJEEHRUGP\t460.500000000000\n" + "BTKVSBEGMI\t403.500000000000\n" + "NLKFNUHNRJ\t12.500000048669\n" + "BWVLOMPBET\t12.500038398017\n" + "KRIVOCUGPU\t15.429819107056\n" + "FIVQFNIZOS\t827.500000000000\n" + "SEPGIUQZHE\t12.517051883508\n" + "QHNOJIGFIN\t613.587127685547\n" + "QVZWEVQTQO\t-479.500000000000\n" + "XTPNHTDCEB\t-953.500000000000\n" + "XBBZVRLPTY\t83.310325622559\n" + "GYFUXCDKDW\t12.500837845349\n" + "DXCBJFRPXZ\t12.500008696692\n" + "XUNYQXTGNJ\t18.859375000000\n" + "LLEYMIWTCW\t804.742187500000\n" + "ORGFIEVMKP\t-713.500000000000\n" + "GPYKKBMQMU\t12.500000000000\n" + "CIHCNPUGJO\t-749.740234375000\n" + "EUKWMDNZZB\t12.500000031117\n" + "KOJSOLDYRO\t564.500000000000\n" + "PUNRPSMIFD\t86.447616577148\n" + "DKOEZBRQSQ\t-723.500000000000\n" + "DIHHNSSTCR\t12.500002963134\n" + "PVQFULMERT\t12.500005817310\n" + "QBUYZVQQHS\t12.500000011688\n" + "PZPBHLNEJR\t-991.125000000000\n" + "IKDISGQFYQ\t364.009208679199\n" + "GPZNYVLTPK\t12.500702012621\n" + "QFNPOYNNCT\t12.500445737198\n" + "NSXHHDILEL\t12.501584486396\n" + "MMZSCJOUOU\t655.365234375000\n" + "ENFELWWRSL\t-921.768554687500\n" + "QHGJBFQBBK\t116.408081054688\n" + "JZZYNPPBXB\t-931.500000000000\n" + "RIIYMHOWKC\t12.500000542615\n" + "ZNLCNGZTOY\t12.500080315222\n" + "XRSFPVRQLG\t12.500000093226\n" + "ONNLITWGLF\t12.500000000000\n" + "QWPKLHTIIG\t-771.250000000000\n" + "YYPDVRGRQG\t12.500376001219\n" + "PHKOWBVDEG\t12.500002666791\n" + "XGZMDJTHMH\t-658.000000000000\n" + "VZHCNXZEQG\t-512.007812500000\n" + "LUCFTLNKYT\t12.500000001835\n";
            Assert.assertEquals(expected, sink.toString());
        }
    }
}
Also used : DoubleConstant(com.questdb.ql.ops.constant.DoubleConstant) JournalWriter(com.questdb.store.JournalWriter) BootstrapEnv(com.questdb.BootstrapEnv) VirtualColumnRecordSource(com.questdb.ql.virtual.VirtualColumnRecordSource) ServerConfiguration(com.questdb.ServerConfiguration) Rnd(com.questdb.std.Rnd) StringSink(com.questdb.std.str.StringSink) AddDoubleOperator(com.questdb.ql.ops.plus.AddDoubleOperator) SelectedColumnsRecordSource(com.questdb.ql.select.SelectedColumnsRecordSource) VirtualColumnRecordSource(com.questdb.ql.virtual.VirtualColumnRecordSource) ObjList(com.questdb.std.ObjList) SelectedColumnsRecordSource(com.questdb.ql.select.SelectedColumnsRecordSource) JournalStructure(com.questdb.store.factory.configuration.JournalStructure) JournalEntryWriter(com.questdb.store.JournalEntryWriter) DoubleRecordSourceColumn(com.questdb.ql.ops.col.DoubleRecordSourceColumn) AbstractTest(com.questdb.test.tools.AbstractTest) Test(org.junit.Test)

Example 19 with StringSink

use of com.questdb.std.str.StringSink in project questdb by bluestreak01.

the class Lexer2Test method testBlockComments.

@Test
public void testBlockComments() {
    Lexer2 lex = new Lexer2();
    lex.defineSymbol("+");
    lex.defineSymbol("++");
    lex.defineSymbol("*");
    lex.defineSymbol("/*");
    lex.defineSymbol("*/");
    lex.setContent("a + /* ok, this /* is a */ comment */ 'b' * abc");
    StringSink sink = new StringSink();
    while (lex.hasNext()) {
        sink.put(lex.optionTok());
    }
    TestUtils.assertEquals("a+'b'*abc", sink);
}
Also used : StringSink(com.questdb.std.str.StringSink) Test(org.junit.Test)

Example 20 with StringSink

use of com.questdb.std.str.StringSink in project questdb by bluestreak01.

the class Lexer2Test method testUnicode.

@Test
@Ignore
public void testUnicode() throws Exception {
    Lexer2 lex = new Lexer2();
    lex.defineSymbol("+");
    lex.defineSymbol("++");
    lex.defineSymbol("*");
    String s = "'авг'";
    byte[] bb = s.getBytes("UTF8");
    System.out.println(new String(bb));
    long mem = Unsafe.malloc(bb.length);
    for (int i = 0; i < bb.length; i++) {
        Unsafe.getUnsafe().putByte(mem + i, bb[i]);
    }
    DirectByteCharSequence cs = new DirectByteCharSequence();
    cs.of(mem, mem + bb.length);
    lex.setContent(cs);
    StringSink sink = new StringSink();
    while (lex.hasNext()) {
        sink.put(lex.optionTok());
    }
    TestUtils.assertEquals("a+'b'*abc", sink);
}
Also used : DirectByteCharSequence(com.questdb.std.str.DirectByteCharSequence) StringSink(com.questdb.std.str.StringSink) Ignore(org.junit.Ignore) Test(org.junit.Test)

Aggregations

StringSink (com.questdb.std.str.StringSink)52 Test (org.junit.Test)35 RecordSourcePrinter (com.questdb.ql.RecordSourcePrinter)14 BootstrapEnv (com.questdb.BootstrapEnv)11 ServerConfiguration (com.questdb.ServerConfiguration)11 DirectByteCharSequence (com.questdb.std.str.DirectByteCharSequence)10 AbstractJournalTest (com.questdb.net.ha.AbstractJournalTest)9 ImportHandler (com.questdb.net.http.handlers.ImportHandler)9 QueryCompiler (com.questdb.parser.sql.QueryCompiler)9 AbstractTest (com.questdb.test.tools.AbstractTest)7 RecordSource (com.questdb.ql.RecordSource)5 Rnd (com.questdb.std.Rnd)5 CountDownLatch (java.util.concurrent.CountDownLatch)5 Album (com.questdb.model.Album)4 Band (com.questdb.model.Band)4 SelectedColumnsRecordSource (com.questdb.ql.select.SelectedColumnsRecordSource)4 JournalEntryWriter (com.questdb.store.JournalEntryWriter)4 RecordColumnMetadata (com.questdb.common.RecordColumnMetadata)3 RecordCursor (com.questdb.common.RecordCursor)3 Quote (com.questdb.model.Quote)3