String sql) {
if (relOptTable.getTable() instanceof ElasticsearchTable) {
return new ElasticsearchExtractor(next,
((ElasticsearchTranslatableTable) relOptTable.getTable()).getProperties(),
config, relNode, tableName, sql);
} else if (relOptTable.getTable() instanceof HiveTable) {
return new HiveExtractor(next,
((HiveTable) relOptTable.getTable()).getProperties(),
config, relNode, tableName);
} else if (relOptTable.getTable() instanceof MySQLTable) {
return new MySqlExtractor(next,
((MySQLTable) relOptTable.getTable()).getProperties(),
config, relNode, tableName);
} else if (relOptTable.getTable() instanceof VirtualTable) {
return new VirtualExtractor(next,
((VirtualTable) relOptTable.getTable()).getProperties(),
config, relNode, tableName, sql);
} else if (relOptTable.getTable() instanceof CsvTable) {
return new CsvExtractor(next,
((CsvTable) relOptTable.getTable()).getProperties(),
config, relNode, tableName, sql);
} else {