use of org.apache.calcite.schema.Schema in project druid by druid-io.
the class SqlBenchmark method setup.
@Setup(Level.Trial)
public void setup() throws Exception {
tmpDir = Files.createTempDir();
log.info("Starting benchmark setup using tmpDir[%s], rows[%,d].", tmpDir, rowsPerSegment);
if (ComplexMetrics.getSerdeForType("hyperUnique") == null) {
ComplexMetrics.registerSerde("hyperUnique", new HyperUniquesSerde(HyperLogLogHash.getDefault()));
}
final BenchmarkSchemaInfo schemaInfo = BenchmarkSchemas.SCHEMA_MAP.get("basic");
final BenchmarkDataGenerator dataGenerator = new BenchmarkDataGenerator(schemaInfo.getColumnSchemas(), RNG_SEED + 1, schemaInfo.getDataInterval(), rowsPerSegment);
final List<InputRow> rows = Lists.newArrayList();
for (int i = 0; i < rowsPerSegment; i++) {
final InputRow row = dataGenerator.nextRow();
if (i % 20000 == 0) {
log.info("%,d/%,d rows generated.", i, rowsPerSegment);
}
rows.add(row);
}
log.info("%,d/%,d rows generated.", rows.size(), rowsPerSegment);
final PlannerConfig plannerConfig = new PlannerConfig();
final QueryRunnerFactoryConglomerate conglomerate = CalciteTests.queryRunnerFactoryConglomerate();
final QueryableIndex index = IndexBuilder.create().tmpDir(new File(tmpDir, "1")).indexMerger(TestHelper.getTestIndexMergerV9()).rows(rows).buildMMappedIndex();
this.walker = new SpecificSegmentsQuerySegmentWalker(conglomerate).add(DataSegment.builder().dataSource("foo").interval(index.getDataInterval()).version("1").shardSpec(new LinearShardSpec(0)).build(), index);
final Map<String, Table> tableMap = ImmutableMap.<String, Table>of("foo", new DruidTable(new TableDataSource("foo"), RowSignature.builder().add("__time", ValueType.LONG).add("dimSequential", ValueType.STRING).add("dimZipf", ValueType.STRING).add("dimUniform", ValueType.STRING).build()));
final Schema druidSchema = new AbstractSchema() {
@Override
protected Map<String, Table> getTableMap() {
return tableMap;
}
};
plannerFactory = new PlannerFactory(Calcites.createRootSchema(druidSchema), walker, CalciteTests.createOperatorTable(), plannerConfig);
groupByQuery = GroupByQuery.builder().setDataSource("foo").setInterval(new Interval(JodaUtils.MIN_INSTANT, JodaUtils.MAX_INSTANT)).setDimensions(Arrays.<DimensionSpec>asList(new DefaultDimensionSpec("dimZipf", "d0"), new DefaultDimensionSpec("dimSequential", "d1"))).setAggregatorSpecs(Arrays.<AggregatorFactory>asList(new CountAggregatorFactory("c"))).setGranularity(Granularities.ALL).build();
sqlQuery = "SELECT\n" + " dimZipf AS d0," + " dimSequential AS d1,\n" + " COUNT(*) AS c\n" + "FROM druid.foo\n" + "GROUP BY dimZipf, dimSequential";
}
use of org.apache.calcite.schema.Schema in project calcite by apache.
the class SimpleCalciteSchema method addImplicitSubSchemaToBuilder.
protected void addImplicitSubSchemaToBuilder(ImmutableSortedMap.Builder<String, CalciteSchema> builder) {
ImmutableSortedMap<String, CalciteSchema> explicitSubSchemas = builder.build();
for (String schemaName : schema.getSubSchemaNames()) {
if (explicitSubSchemas.containsKey(schemaName)) {
// explicit subschema wins.
continue;
}
Schema s = schema.getSubSchema(schemaName);
if (s != null) {
CalciteSchema calciteSchema = new SimpleCalciteSchema(this, s, schemaName);
builder.put(schemaName, calciteSchema);
}
}
}
use of org.apache.calcite.schema.Schema in project calcite by apache.
the class JdbcTest method testSchemaCaching.
@Test
public void testSchemaCaching() throws Exception {
final Connection connection = CalciteAssert.that(CalciteAssert.Config.JDBC_FOODMART).connect();
final CalciteConnection calciteConnection = connection.unwrap(CalciteConnection.class);
final SchemaPlus rootSchema = calciteConnection.getRootSchema();
// create schema "/a"
final Map<String, Schema> aSubSchemaMap = new HashMap<>();
final SchemaPlus aSchema = rootSchema.add("a", new AbstractSchema() {
@Override
protected Map<String, Schema> getSubSchemaMap() {
return aSubSchemaMap;
}
});
aSchema.setCacheEnabled(true);
assertThat(aSchema.getSubSchemaNames().size(), is(0));
// first call, to populate the cache
assertThat(aSchema.getSubSchemaNames().size(), is(0));
// create schema "/a/b1". Appears only when we disable caching.
aSubSchemaMap.put("b1", new AbstractSchema());
assertThat(aSchema.getSubSchemaNames().size(), is(0));
assertThat(aSchema.getSubSchema("b1"), nullValue());
aSchema.setCacheEnabled(false);
assertThat(aSchema.getSubSchemaNames().size(), is(1));
assertThat(aSchema.getSubSchema("b1"), notNullValue());
// create schema "/a/b2". Appears immediately, because caching is disabled.
aSubSchemaMap.put("b2", new AbstractSchema());
assertThat(aSchema.getSubSchemaNames().size(), is(2));
// an explicit sub-schema appears immediately, even if caching is enabled
aSchema.setCacheEnabled(true);
assertThat(aSchema.getSubSchemaNames().size(), is(2));
// explicit
aSchema.add("b3", new AbstractSchema());
// implicit
aSubSchemaMap.put("b4", new AbstractSchema());
assertThat(aSchema.getSubSchemaNames().size(), is(3));
aSchema.setCacheEnabled(false);
assertThat(aSchema.getSubSchemaNames().size(), is(4));
for (String name : aSchema.getSubSchemaNames()) {
assertThat(aSchema.getSubSchema(name), notNullValue());
}
// create schema "/a2"
final Map<String, Schema> a2SubSchemaMap = new HashMap<>();
final SchemaPlus a2Schema = rootSchema.add("a", new AbstractSchema() {
@Override
protected Map<String, Schema> getSubSchemaMap() {
return a2SubSchemaMap;
}
});
a2Schema.setCacheEnabled(true);
assertThat(a2Schema.getSubSchemaNames().size(), is(0));
// create schema "/a2/b3". Change not visible since caching is enabled.
a2SubSchemaMap.put("b3", new AbstractSchema());
assertThat(a2Schema.getSubSchemaNames().size(), is(0));
Thread.sleep(1);
assertThat(a2Schema.getSubSchemaNames().size(), is(0));
// Change visible after we turn off caching.
a2Schema.setCacheEnabled(false);
assertThat(a2Schema.getSubSchemaNames().size(), is(1));
a2SubSchemaMap.put("b4", new AbstractSchema());
assertThat(a2Schema.getSubSchemaNames().size(), is(2));
for (String name : aSchema.getSubSchemaNames()) {
assertThat(aSchema.getSubSchema(name), notNullValue());
}
// add tables and retrieve with various case sensitivities
final TableInRootSchemaTest.SimpleTable table = new TableInRootSchemaTest.SimpleTable();
a2Schema.add("table1", table);
a2Schema.add("TABLE1", table);
a2Schema.add("tabLe1", table);
a2Schema.add("tabLe2", table);
assertThat(a2Schema.getTableNames().size(), equalTo(4));
final CalciteSchema a2CalciteSchema = CalciteSchema.from(a2Schema);
assertThat(a2CalciteSchema.getTable("table1", true), notNullValue());
assertThat(a2CalciteSchema.getTable("table1", false), notNullValue());
assertThat(a2CalciteSchema.getTable("taBle1", true), nullValue());
assertThat(a2CalciteSchema.getTable("taBle1", false), notNullValue());
final TableMacro function = ViewTable.viewMacro(a2Schema, "values 1", null, null, null);
Util.discard(function);
connection.close();
}
use of org.apache.calcite.schema.Schema in project calcite by apache.
the class JdbcTest method testSimpleCalciteSchema.
@Test
public void testSimpleCalciteSchema() throws Exception {
final SchemaPlus rootSchema = CalciteSchema.createRootSchema(false, false).plus();
// create schema "/a"
final Map<String, Schema> aSubSchemaMap = new HashMap<>();
final SchemaPlus aSchema = rootSchema.add("a", new AbstractSchema() {
@Override
protected Map<String, Schema> getSubSchemaMap() {
return aSubSchemaMap;
}
});
// add explicit schema "/a/b".
aSchema.add("b", new AbstractSchema());
// add implicit schema "/a/c"
aSubSchemaMap.put("c", new AbstractSchema());
assertThat(aSchema.getSubSchema("c"), notNullValue());
assertThat(aSchema.getSubSchema("b"), notNullValue());
// add implicit schema "/a/b"
aSubSchemaMap.put("b", new AbstractSchema());
// explicit should win implicit.
assertThat(aSchema.getSubSchemaNames().size(), is(2));
}
use of org.apache.calcite.schema.Schema in project calcite by apache.
the class SqlCreateSchema method execute.
public void execute(CalcitePrepare.Context context) {
final Pair<CalciteSchema, String> pair = SqlDdlNodes.schema(context, true, name);
final SchemaPlus subSchema0 = pair.left.plus().getSubSchema(pair.right);
if (subSchema0 != null) {
if (!getReplace() && !ifNotExists) {
throw SqlUtil.newContextException(name.getParserPosition(), RESOURCE.schemaExists(pair.right));
}
}
final Schema subSchema = new AbstractSchema();
pair.left.add(pair.right, subSchema);
}
Aggregations