diff --git a/src/duckdb_read_stat.c b/src/duckdb_read_stat.c index 500d33f..82ed2e7 100644 --- a/src/duckdb_read_stat.c +++ b/src/duckdb_read_stat.c @@ -153,7 +153,7 @@ void duckdb_read_stat_bind(duckdb_bind_info info) data->file_format = DUCKDB_READ_STAT_FILE_FORMAT_SAS; error = readstat_parse_sas7bdat(parser, path, data); } - if (!strcmp(format, "xpt")) + else if (!strcmp(format, "xpt")) { data->file_format = DUCKDB_READ_STAT_FILE_FORMAT_SAS; error = readstat_parse_xport(parser, path, data); @@ -173,6 +173,20 @@ void duckdb_read_stat_bind(duckdb_bind_info info) data->file_format = DUCKDB_READ_STAT_FILE_FORMAT_STATA; error = readstat_parse_dta(parser, path, data); } + else if (!strcmp(format, "sas7bcat")) + { + duckdb_bind_set_error(info, "SAS catalog files (.sas7bcat) are not supported. Only SAS data files (.sas7bdat, .xpt) are supported."); + readstat_parser_free(parser); + duckdb_free(data); + return; + } + else + { + duckdb_bind_set_error(info, "Unsupported format parameter. Supported formats are: sas7bdat, xpt (SAS), sav, zsav, por (SPSS), and dta (Stata)."); + readstat_parser_free(parser); + duckdb_free(data); + return; + } } else if (duckdb_read_stat_ends_with(path, ".sas7bdat")) { @@ -199,6 +213,20 @@ void duckdb_read_stat_bind(duckdb_bind_info info) data->file_format = DUCKDB_READ_STAT_FILE_FORMAT_STATA; error = readstat_parse_dta(parser, path, data); } + else if (duckdb_read_stat_ends_with(path, ".sas7bcat")) + { + duckdb_bind_set_error(info, "SAS catalog files (.sas7bcat) are not supported. Only SAS data files (.sas7bdat, .xpt) are supported."); + readstat_parser_free(parser); + duckdb_free(data); + return; + } + else + { + duckdb_bind_set_error(info, "Unsupported file extension. Supported formats are: .sas7bdat, .xpt (SAS), .sav, .zsav, .por (SPSS), and .dta (Stata). Specify the format parameter explicitly if the file extension is incorrect."); + readstat_parser_free(parser); + duckdb_free(data); + return; + } if (error != READSTAT_OK) {