Interface SchemaFactory

All Known Implementing Classes:
AbstractSchema.Factory, ArrowSchemaFactory, CassandraSchemaFactory, CloneSchema.Factory, CsvSchemaFactory, DruidSchemaFactory, ElasticsearchSchemaFactory, FileSchemaFactory, GeodeSchemaFactory, GeodeSimpleSchemaFactory, InnodbSchemaFactory, JdbcSchema.Factory, MongoSchemaFactory, PigSchemaFactory, RedisSchemaFactory, ReflectiveSchema.Factory, TpcdsSchemaFactory, TpchSchemaFactory

public interface SchemaFactory
Factory for Schema objects.

A schema factory allows you to include a custom schema in a model file. For example, here is a model that contains a custom schema whose tables read CSV files. (See the example CSV adapter for more details about this particular adapter.)

{
   "version": "1.0",
   "defaultSchema": "SALES",
   "schemas": [
     {
       "name": "SALES",
       "type": "custom",
       "factory": "org.apache.calcite.adapter.csv.CsvSchemaFactory",
       "mutable": true,
       "operand": {
         directory: "sales"
       },
       "tables": [
         {
           "name": "FEMALE_EMPS",
           "type": "view",
           "sql": "SELECT * FROM emps WHERE gender = 'F'"
          }
       ]
     }
   ]
 }

If you do not wish to allow model authors to add additional tables (including views) to an instance of your schema, specify 'mutable: false'.

A class that implements SchemaFactory specified in a schema must have a public default constructor.

  • Method Details

    • create

      Schema create(SchemaPlus parentSchema, String name, Map<String,Object> operand)
      Creates a Schema.
      Parameters:
      parentSchema - Parent schema
      name - Name of this schema
      operand - The "operand" JSON property
      Returns:
      Created schema