class FlinkCalciteCatalogReader extends CalciteCatalogReader {

	@Override
	public Prepare.PreparingTable getTable(List<String> names) {
		Prepare.PreparingTable originRelOptTable = super.getTable(names);
		if (originRelOptTable == null) {
			return null;
		} else {
			// Wrap FlinkTable as FlinkRelOptTable to use in query optimization.
			FlinkTable table = originRelOptTable.unwrap(FlinkTable.class);
			if (table != null) {
				return FlinkRelOptTable.create(
					originRelOptTable.getRelOptSchema(),
					originRelOptTable.getRowType(),
					originRelOptTable.getQualifiedName(),
					table);
			} else {
				return originRelOptTable;
			}
		}
	}

	public  FlinkCalciteCatalogReader(
		CalciteSchema rootSchema,
		List<List<String>> defaultSchemas,
		RelDataTypeFactory typeFactory,
		CalciteConnectionConfig config);

}