use of com.questdb.parser.sql.QueryCompiler in project questdb by bluestreak01.
the class HttpServerTest method testImportWrongType.
@Test
public void testImportWrongType() throws Exception {
BootstrapEnv env = new BootstrapEnv();
env.configuration = new ServerConfiguration();
env.factory = getFactory();
env.typeProbeCollection = TYPE_PROBE_COLLECTION;
env.dateLocaleFactory = DateLocaleFactory.INSTANCE;
env.dateFormatFactory = DATE_FORMAT_FACTORY;
env.matcher = new SimpleUrlMatcher() {
{
put("/imp", new ImportHandler(env));
}
};
HttpServer server = new HttpServer(env);
server.start();
try {
Assert.assertEquals(200, HttpTestUtils.upload("/csv/test-import.csv", "http://localhost:9000/imp?fmt=json", "[{\"name\":\"IsoDate\", \"type\":\"DATE\"}, {\"name\":\"IntCol\", \"type\":\"DOUBLE\"}]", null));
Assert.assertEquals(200, HttpTestUtils.upload("/csv/test-import.csv", "http://localhost:9000/imp", "[{\"name\":\"IsoDate\", \"type\":\"DATE\"}]", null));
StringSink sink = new StringSink();
RecordSourcePrinter printer = new RecordSourcePrinter(sink);
QueryCompiler qc = new QueryCompiler(env);
RecordSource src1 = qc.compile(env.factory, "select count(StrSym), count(IntSym), count(IntCol), count(long), count() from 'test-import.csv'");
try {
printer.print(src1, env.factory);
TestUtils.assertEquals("252\t252\t256\t258\t258\n", sink);
} finally {
Misc.free(src1);
}
RecordSource src2 = qc.compile(env.factory, "'test-import.csv'");
try {
Assert.assertEquals(ColumnType.DOUBLE, src2.getMetadata().getColumn("IntCol").getType());
} finally {
Misc.free(src2);
}
} finally {
server.halt();
}
}
use of com.questdb.parser.sql.QueryCompiler in project questdb by bluestreak01.
the class HttpServerTest method testImportOverwrite.
@Test
public void testImportOverwrite() throws Exception {
final ServerConfiguration configuration = new ServerConfiguration();
BootstrapEnv env = new BootstrapEnv();
env.configuration = configuration;
env.factory = getFactory();
env.typeProbeCollection = TYPE_PROBE_COLLECTION;
env.matcher = new SimpleUrlMatcher() {
{
put("/imp", new ImportHandler(env));
}
};
HttpServer server = new HttpServer(env);
server.start();
try {
StringSink sink = new StringSink();
RecordSourcePrinter printer = new RecordSourcePrinter(sink);
QueryCompiler qc = new QueryCompiler(env);
Assert.assertEquals(200, HttpTestUtils.upload("/csv/test-import.csv", "http://localhost:9000/imp", null, null));
printer.print(qc.compile(getFactory(), "select count() from 'test-import.csv'"), getFactory());
TestUtils.assertEquals("129\n", sink);
sink.clear();
Assert.assertEquals(200, HttpTestUtils.upload("/csv/test-headers.csv", "http://localhost:9000/imp?name=test-import.csv&overwrite=true&durable=true", null, null));
printer.print(qc.compile(getFactory(), "select count() from 'test-import.csv'"), getFactory());
TestUtils.assertEquals("5\n", sink);
} finally {
server.halt();
}
}
use of com.questdb.parser.sql.QueryCompiler in project questdb by bluestreak01.
the class HttpServerTest method testImportForcedHeader.
@Test
public void testImportForcedHeader() throws Exception {
BootstrapEnv env = new BootstrapEnv();
env.configuration = new ServerConfiguration();
env.factory = getFactory();
env.typeProbeCollection = TYPE_PROBE_COLLECTION;
env.matcher = new SimpleUrlMatcher() {
{
put("/imp", new ImportHandler(env));
}
};
HttpServer server = new HttpServer(env);
server.start();
try {
StringSink sink = new StringSink();
RecordSourcePrinter printer = new RecordSourcePrinter(sink);
QueryCompiler qc = new QueryCompiler(env);
Assert.assertEquals(200, HttpTestUtils.upload("/csv/test-explicit-headers.csv", "http://localhost:9000/imp?name=test-import.csv&overwrite=true&durable=true&forceHeader=true", null, null));
printer.print(qc.compile(getFactory(), "select count() from 'test-import.csv'"), getFactory());
// expect first line to be treated as header
TestUtils.assertEquals("2\n", sink);
} finally {
server.halt();
}
}
use of com.questdb.parser.sql.QueryCompiler in project questdb by bluestreak01.
the class AbstractQueryContext method executeQuery.
private RecordSource executeQuery(ChunkedResponse r, Factory factory) throws ParserException, DisconnectedChannelException, SlowWritableChannelException {
QueryCompiler compiler = COMPILER.get();
ParsedModel model = compiler.parse(query);
switch(model.getModelType()) {
case ParsedModel.QUERY:
return compiler.compile(factory, model);
default:
try {
compiler.execute(factory, model);
} catch (JournalException e) {
error().$("Server error executing statement ").$(query).$(e).$();
sendException(r, 0, e.getMessage(), 500);
}
return null;
}
}
use of com.questdb.parser.sql.QueryCompiler in project questdb by bluestreak01.
the class SQLExamples method main.
public static void main(String[] args) throws JournalException, ParserException, IOException {
if (args.length < 1) {
System.out.println("Usage: SQLExamples <path>");
System.exit(1);
}
try (Factory factory = new Factory(args[0], 1000, 1, 0)) {
// import movies data to query
ImportManager.importFile(factory, SQLExamples.class.getResource("/movies.csv").getFile(), ',', null, false);
// Create SQL engine instance.
QueryCompiler compiler = new QueryCompiler();
try (RecordSource rs = compiler.compile(factory, "'movies.csv'")) {
// Execute query and fetch results
RecordCursor cursor = rs.prepareCursor(factory);
try {
while (cursor.hasNext()) {
Record record = cursor.next();
}
} finally {
cursor.releaseCursor();
}
}
// to simplify query demonstration we have generic record source printer
RecordSourcePrinter printer = new RecordSourcePrinter(new StdoutSink());
printer.print(compiler.compile(factory, "'movies.csv'"), factory);
System.out.println("---------");
// find movie by ID
printer.print(compiler.compile(factory, "'movies.csv' where movieId = 62198"), factory);
System.out.println("---------");
// extract year from movie title
printer.print(compiler.compile(factory, "select title, pluck('\\(([0-9]*?)\\)', title) year from 'movies.csv' where movieId = 62198"), factory);
System.out.println("---------");
// order by movie year descending
printer.print(compiler.compile(factory, "select title, pluck('\\(([0-9]*?)\\)', title) year from 'movies.csv' order by year desc"), factory);
System.out.println("---------");
// count titles by year
printer.print(compiler.compile(factory, "select year, count() from (select title, pluck('\\(([0-9]*?)\\)', title) year from 'movies.csv' order by year desc)"), factory);
}
}
Aggregations