Search in sources :

Example 1 with SqlCompiler

use of io.questdb.griffin.SqlCompiler in project questdb by bluestreak01.

the class TableReaderReloadBenchmark method main.

public static void main(String[] args) throws RunnerException {
    try (CairoEngine engine = new CairoEngine(configuration)) {
        SqlExecutionContext sqlExecutionContext = new SqlExecutionContextImpl(engine, 1).with(AllowAllCairoSecurityContext.INSTANCE, null, null, -1, null);
        try (SqlCompiler compiler = new SqlCompiler(engine)) {
            compiler.compile("create table if not exists test(f timestamp) timestamp (f) PARTITION BY DAY", sqlExecutionContext);
        } catch (SqlException e) {
            throw new ExceptionInInitializerError();
        }
    }
    Options opt = new OptionsBuilder().include(TableReaderReloadBenchmark.class.getSimpleName()).warmupIterations(2).measurementIterations(2).forks(1).build();
    new Runner(opt).run();
    LogFactory.INSTANCE.haltThread();
}
Also used : SqlExecutionContextImpl(io.questdb.griffin.SqlExecutionContextImpl) Options(org.openjdk.jmh.runner.options.Options) Runner(org.openjdk.jmh.runner.Runner) SqlCompiler(io.questdb.griffin.SqlCompiler) SqlExecutionContext(io.questdb.griffin.SqlExecutionContext) SqlException(io.questdb.griffin.SqlException) OptionsBuilder(org.openjdk.jmh.runner.options.OptionsBuilder)

Example 2 with SqlCompiler

use of io.questdb.griffin.SqlCompiler in project questdb by bluestreak01.

the class TelemetryTest method testTelemetryConfigUpgrade.

@Test
public void testTelemetryConfigUpgrade() throws Exception {
    TestUtils.assertMemoryLeak(() -> {
        try (CairoEngine engine = new CairoEngine(configuration);
            SqlCompiler compiler = new SqlCompiler(engine, null);
            SqlExecutionContext sqlExecutionContext = new SqlExecutionContextImpl(engine, 1)) {
            compiler.compile("CREATE TABLE " + TelemetryJob.configTableName + " (id long256, enabled boolean)", sqlExecutionContext);
            InsertStatement ist = compiler.compile("INSERT INTO " + TelemetryJob.configTableName + " values(CAST('0x01' AS LONG256), true)", sqlExecutionContext).getInsertStatement();
            InsertMethod im = ist.createMethod(sqlExecutionContext);
            im.execute();
            im.commit();
            im.close();
            ist.close();
            TelemetryJob telemetryJob = new TelemetryJob(engine, null);
            String expectedSql = "column	type	indexed	indexBlockCapacity	symbolCached	symbolCapacity	designated\n" + "id	LONG256	false	0	false	0	false\n" + "enabled	BOOLEAN	false	0	false	0	false\n" + "version	SYMBOL	false	256	true	128	false\n" + "os	SYMBOL	false	256	true	128	false\n" + "package	SYMBOL	false	256	true	128	false\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SHOW COLUMNS FROM " + TelemetryJob.configTableName, sink, expectedSql);
            expectedSql = "id\tversion\n" + "0x01\t\n" + "0x01\tUnknown Version\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SELECT id, version FROM " + TelemetryJob.configTableName, sink, expectedSql);
            Misc.free(telemetryJob);
        }
    });
}
Also used : SqlExecutionContextImpl(io.questdb.griffin.SqlExecutionContextImpl) SqlCompiler(io.questdb.griffin.SqlCompiler) SqlExecutionContext(io.questdb.griffin.SqlExecutionContext) InsertMethod(io.questdb.cairo.sql.InsertMethod) CairoEngine(io.questdb.cairo.CairoEngine) InsertStatement(io.questdb.cairo.sql.InsertStatement) Test(org.junit.Test) AbstractCairoTest(io.questdb.cairo.AbstractCairoTest)

Example 3 with SqlCompiler

use of io.questdb.griffin.SqlCompiler in project questdb by bluestreak01.

the class TelemetryTest method testTelemetryUpdatesVersion.

@Test
public void testTelemetryUpdatesVersion() throws Exception {
    final AtomicReference<String> refVersion = new AtomicReference<>();
    BuildInformation buildInformation = new BuildInformation() {

        @Override
        public CharSequence getQuestDbVersion() {
            return refVersion.get();
        }

        @Override
        public CharSequence getJdkVersion() {
            return null;
        }

        @Override
        public CharSequence getCommitHash() {
            return null;
        }
    };
    CairoConfiguration configuration = new DefaultCairoConfiguration(root) {

        @Override
        public BuildInformation getBuildInformation() {
            return buildInformation;
        }
    };
    TestUtils.assertMemoryLeak(() -> {
        try (CairoEngine engine = new CairoEngine(configuration);
            SqlCompiler compiler = new SqlCompiler(engine, null);
            SqlExecutionContext sqlExecutionContext = new SqlExecutionContextImpl(engine, 1)) {
            refVersion.set("1.0");
            TelemetryJob telemetryJob = new TelemetryJob(engine, null);
            String os = System.getProperty(TelemetryJob.OS_NAME);
            String expectedSql = "count\n1\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SELECT count(*) FROM " + TelemetryJob.configTableName, sink, expectedSql);
            expectedSql = "version\tos\n" + "1.0\t" + os + "\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SELECT version, os FROM " + TelemetryJob.configTableName, sink, expectedSql);
            Misc.free(telemetryJob);
            telemetryJob = new TelemetryJob(engine, null);
            expectedSql = "count\n1\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SELECT count(*) FROM " + TelemetryJob.configTableName, sink, expectedSql);
            Misc.free(telemetryJob);
            refVersion.set("1.1");
            telemetryJob = new TelemetryJob(engine, null);
            expectedSql = "count\n2\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SELECT count(*) FROM " + TelemetryJob.configTableName, sink, expectedSql);
            expectedSql = "version\tos\n" + "1.1\t" + os + "\n";
            TestUtils.assertSql(compiler, sqlExecutionContext, "SELECT version, os FROM " + TelemetryJob.configTableName + " LIMIT -1", sink, expectedSql);
            Misc.free(telemetryJob);
        }
    });
}
Also used : SqlExecutionContextImpl(io.questdb.griffin.SqlExecutionContextImpl) SqlCompiler(io.questdb.griffin.SqlCompiler) SqlExecutionContext(io.questdb.griffin.SqlExecutionContext) AtomicReference(java.util.concurrent.atomic.AtomicReference) DefaultCairoConfiguration(io.questdb.cairo.DefaultCairoConfiguration) CairoEngine(io.questdb.cairo.CairoEngine) DefaultCairoConfiguration(io.questdb.cairo.DefaultCairoConfiguration) CairoConfiguration(io.questdb.cairo.CairoConfiguration) Test(org.junit.Test) AbstractCairoTest(io.questdb.cairo.AbstractCairoTest)

Example 4 with SqlCompiler

use of io.questdb.griffin.SqlCompiler in project questdb by bluestreak01.

the class EmbeddedApiTest method testReadWrite.

@Test
public void testReadWrite() throws Exception {
    final CairoConfiguration configuration = new DefaultCairoConfiguration(temp.getRoot().getAbsolutePath());
    TestUtils.assertMemoryLeak(() -> {
        // write part
        try (final CairoEngine engine = new CairoEngine(configuration);
            final SqlExecutionContextImpl ctx = new SqlExecutionContextImpl(engine, 1);
            final SqlCompiler compiler = new SqlCompiler(engine)) {
            compiler.compile("create table abc (a int, b byte, c short, d long, e float, g double, h date, i symbol, j string, k boolean, ts timestamp) timestamp(ts)", ctx);
            try (TableWriter writer = engine.getWriter(ctx.getCairoSecurityContext(), "abc", "testing")) {
                for (int i = 0; i < 10; i++) {
                    TableWriter.Row row = writer.newRow(Os.currentTimeMicros());
                    row.putInt(0, 123);
                    row.putByte(1, (byte) 1111);
                    row.putShort(2, (short) 222);
                    row.putLong(3, 333);
                    row.putFloat(4, 4.44f);
                    row.putDouble(5, 5.55);
                    row.putDate(6, System.currentTimeMillis());
                    row.putSym(7, "xyz");
                    row.putStr(8, "abc");
                    row.putBool(9, true);
                    row.append();
                }
                writer.commit();
            }
            try (RecordCursorFactory factory = compiler.compile("abc", ctx).getRecordCursorFactory()) {
                try (RecordCursor cursor = factory.getCursor(ctx)) {
                    final Record record = cursor.getRecord();
                    // noinspection StatementWithEmptyBody
                    while (cursor.hasNext()) {
                    // access 'record' instance for field values
                    }
                }
            }
        }
    });
}
Also used : SqlExecutionContextImpl(io.questdb.griffin.SqlExecutionContextImpl) SqlCompiler(io.questdb.griffin.SqlCompiler) TableWriter(io.questdb.cairo.TableWriter) RecordCursorFactory(io.questdb.cairo.sql.RecordCursorFactory) RecordCursor(io.questdb.cairo.sql.RecordCursor) DefaultCairoConfiguration(io.questdb.cairo.DefaultCairoConfiguration) Record(io.questdb.cairo.sql.Record) CairoEngine(io.questdb.cairo.CairoEngine) DefaultCairoConfiguration(io.questdb.cairo.DefaultCairoConfiguration) CairoConfiguration(io.questdb.cairo.CairoConfiguration) Test(org.junit.Test)

Example 5 with SqlCompiler

use of io.questdb.griffin.SqlCompiler in project questdb by bluestreak01.

the class EmbeddedApiTest method testConcurrentSQLExec.

@Test
public void testConcurrentSQLExec() throws Exception {
    final CairoConfiguration configuration = new DefaultCairoConfiguration(temp.getRoot().getAbsolutePath());
    final Log log = LogFactory.getLog("testConcurrentSQLExec");
    TestUtils.assertMemoryLeak(() -> {
        WorkerPool workerPool = new WorkerPool(new WorkerPoolConfiguration() {

            @Override
            public int[] getWorkerAffinity() {
                return new int[] { -1, -1 };
            }

            @Override
            public int getWorkerCount() {
                return 2;
            }

            @Override
            public boolean haltOnError() {
                return false;
            }
        });
        Rnd rnd = new Rnd();
        try (final CairoEngine engine = new CairoEngine(configuration)) {
            workerPool.assign(new GroupByJob(engine.getMessageBus()));
            workerPool.start(log);
            try {
                // number of cores is current thread + workers in the pool
                final SqlExecutionContextImpl ctx = new SqlExecutionContextImpl(engine, 2);
                try (SqlCompiler compiler = new SqlCompiler(engine)) {
                    compiler.compile("create table abc (g double, ts timestamp) timestamp(ts) partition by DAY", ctx);
                    long timestamp = 0;
                    try (TableWriter writer = engine.getWriter(ctx.getCairoSecurityContext(), "abc", "testing")) {
                        for (int i = 0; i < 10_000_000; i++) {
                            TableWriter.Row row = writer.newRow(timestamp);
                            row.putDouble(0, rnd.nextDouble());
                            row.append();
                            timestamp += 1_000_000;
                        }
                        writer.commit();
                    }
                    try (RecordCursorFactory factory = compiler.compile("select sum(g) from abc", ctx).getRecordCursorFactory()) {
                        try (RecordCursor cursor = factory.getCursor(ctx)) {
                            final Record ignored = cursor.getRecord();
                            // noinspection StatementWithEmptyBody
                            while (cursor.hasNext()) {
                            // access 'record' instance for field values
                            }
                        }
                    }
                }
            } finally {
                workerPool.halt();
            }
        }
    });
}
Also used : SqlCompiler(io.questdb.griffin.SqlCompiler) RecordCursor(io.questdb.cairo.sql.RecordCursor) Log(io.questdb.log.Log) Rnd(io.questdb.std.Rnd) GroupByJob(io.questdb.griffin.engine.groupby.vect.GroupByJob) SqlExecutionContextImpl(io.questdb.griffin.SqlExecutionContextImpl) WorkerPool(io.questdb.mp.WorkerPool) TableWriter(io.questdb.cairo.TableWriter) RecordCursorFactory(io.questdb.cairo.sql.RecordCursorFactory) DefaultCairoConfiguration(io.questdb.cairo.DefaultCairoConfiguration) Record(io.questdb.cairo.sql.Record) CairoEngine(io.questdb.cairo.CairoEngine) DefaultCairoConfiguration(io.questdb.cairo.DefaultCairoConfiguration) CairoConfiguration(io.questdb.cairo.CairoConfiguration) WorkerPoolConfiguration(io.questdb.mp.WorkerPoolConfiguration) Test(org.junit.Test)

Aggregations

SqlCompiler (io.questdb.griffin.SqlCompiler)25 SqlExecutionContextImpl (io.questdb.griffin.SqlExecutionContextImpl)21 Test (org.junit.Test)11 SqlExecutionContext (io.questdb.griffin.SqlExecutionContext)10 RecordCursorFactory (io.questdb.cairo.sql.RecordCursorFactory)8 CairoEngine (io.questdb.cairo.CairoEngine)7 RecordCursor (io.questdb.cairo.sql.RecordCursor)6 SqlException (io.questdb.griffin.SqlException)6 CairoConfiguration (io.questdb.cairo.CairoConfiguration)5 DefaultCairoConfiguration (io.questdb.cairo.DefaultCairoConfiguration)5 LoopInterruptedCheck (de.invesdwin.util.concurrent.loop.LoopInterruptedCheck)4 Instant (de.invesdwin.util.time.Instant)4 FDate (de.invesdwin.util.time.date.FDate)4 BindVariableServiceImpl (io.questdb.griffin.engine.functions.bind.BindVariableServiceImpl)4 AbstractCairoTest (io.questdb.cairo.AbstractCairoTest)3 TableWriter (io.questdb.cairo.TableWriter)3 AbstractGriffinTest (io.questdb.griffin.AbstractGriffinTest)3 FilesFacade (io.questdb.std.FilesFacade)3 FilesFacadeImpl (io.questdb.std.FilesFacadeImpl)3 Record (io.questdb.cairo.sql.Record)2