Skip to content

Commit a37ca9c

Browse files
authored
Actually allow ODBC connections from CLI (#344)
1 parent 6ba2015 commit a37ca9c

1 file changed

Lines changed: 19 additions & 2 deletions

File tree

src/cli.rs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub enum Commands {
2929
/// The ggsql query to execute
3030
query: String,
3131

32-
/// Data source connection string (duckdb://, sqlite://)
32+
/// Data source connection string (duckdb://, sqlite://, odbc://)
3333
#[arg(long, default_value = "duckdb://memory")]
3434
reader: String,
3535

@@ -51,7 +51,7 @@ pub enum Commands {
5151
/// Path to .sql file containing ggsql query
5252
file: PathBuf,
5353

54-
/// Data source connection string (duckdb://, sqlite://)
54+
/// Data source connection string (duckdb://, sqlite://, odbc://)
5555
#[arg(long, default_value = "duckdb://memory")]
5656
reader: String,
5757

@@ -184,6 +184,23 @@ fn cmd_exec(query: String, reader: String, writer: String, output: Option<PathBu
184184
eprintln!("SQLite reader not compiled in. Rebuild with --features sqlite");
185185
std::process::exit(1);
186186
}
187+
} else if reader.starts_with("odbc://") {
188+
#[cfg(feature = "odbc")]
189+
{
190+
let r = match ggsql::reader::OdbcReader::from_connection_string(&reader) {
191+
Ok(r) => r,
192+
Err(e) => {
193+
eprintln!("Failed to create reader: {}", e);
194+
std::process::exit(1);
195+
}
196+
};
197+
exec_with_reader(&query, &r, &writer, output, verbose);
198+
}
199+
#[cfg(not(feature = "odbc"))]
200+
{
201+
eprintln!("ODBC reader not compiled in. Rebuild with --features odbc");
202+
std::process::exit(1);
203+
}
187204
} else if reader.starts_with("postgres://") || reader.starts_with("postgresql://") {
188205
eprintln!("PostgreSQL reader is not yet implemented");
189206
std::process::exit(1);

0 commit comments

Comments
 (0)