public void interpretCreateTable(SqlCreateTable n) { CompilerUtil.TableBuilderInfo builder = new CompilerUtil.TableBuilderInfo(typeFactory); List<FieldInfo> fields = new ArrayList<>(); for (ColumnDefinition col : n.fieldList()) { builder.field(col.name(), col.type(), col.constraint()); RelDataType dataType = col.type().deriveType(typeFactory); Class<?> javaType = (Class<?>) typeFactory.getJavaClass(dataType); ColumnConstraint constraint = col.constraint(); boolean isPrimary = constraint != null && constraint instanceof ColumnConstraint.PrimaryKey; fields.add(new FieldInfo(col.name(), javaType, isPrimary)); } if (n.parallelism() != null) { builder.parallelismHint(n.parallelism()); } Table table = builder.build(); schema.add(n.tableName(), table); ISqlStreamsDataSource ds = DataSourcesRegistry.constructStreamsDataSource(n.location(), n .inputFormatClass(), n.outputFormatClass(), n.properties(), fields); if (ds == null) { throw new RuntimeException("Failed to find data source for " + n .tableName() + " URI: " + n.location()); } else if (dataSources.containsKey(n.tableName())) { throw new RuntimeException("Duplicated definition for table " + n .tableName()); } dataSources.put(n.tableName(), ds); }