Skip to content

Commit af94902

Browse files
committed
Apply changes from code review
1 parent e5dccdd commit af94902

2 files changed

Lines changed: 17 additions & 15 deletions

File tree

ggsql-jupyter/src/executor.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,14 @@ pub fn type_name_for_uri(uri: &str) -> String {
9898
return "SQLite".to_string();
9999
}
100100
if let Some(odbc) = uri.strip_prefix("odbc://") {
101-
if odbc.to_lowercase().contains("driver=snowflake") {
102-
return "Snowflake".to_string();
103-
}
104-
if odbc.to_lowercase().contains("driver={postgresql}")
105-
|| odbc.to_lowercase().contains("driver=postgresql")
106-
{
107-
return "PostgreSQL".to_string();
101+
if let Some(driver) = extract_odbc_value(odbc, "driver") {
102+
let lower = driver.to_lowercase();
103+
if lower.contains("snowflake") {
104+
return "Snowflake".to_string();
105+
}
106+
if lower.contains("postgresql") {
107+
return "PostgreSQL".to_string();
108+
}
108109
}
109110
return "ODBC".to_string();
110111
}
@@ -126,12 +127,8 @@ pub fn host_for_uri(uri: &str) -> String {
126127
return path.to_string();
127128
}
128129
if let Some(odbc) = uri.strip_prefix("odbc://") {
129-
// Try to extract server
130-
if let Some(server_start) = odbc.to_lowercase().find("server=") {
131-
let rest = &odbc[server_start + 7..];
132-
if let Some(host) = rest.split(';').next() {
133-
return host.to_string();
134-
}
130+
if let Some(server) = extract_odbc_value(odbc, "server") {
131+
return server;
135132
}
136133
}
137134
uri.to_string()

src/reader/odbc/mod.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,14 @@ impl Reader for OdbcReader {
244244
Ok(catalogs)
245245
}
246246

247-
fn list_schemas(&self, _catalog: &str) -> Result<Vec<String>> {
247+
fn list_schemas(&self, catalog: &str) -> Result<Vec<String>> {
248248
// ODBC spec: CatalogName="", SchemaName="%", TableName=""
249-
let stmt = wrapper::sql_tables(&self.connection, Some(""), Some("%"), Some(""), None)?;
249+
let cat = if catalog.is_empty() {
250+
None
251+
} else {
252+
Some(catalog)
253+
};
254+
let stmt = wrapper::sql_tables(&self.connection, cat, Some("%"), Some(""), None)?;
250255
let df = cursor_to_dataframe(stmt)?;
251256
let mut schemas = extract_string_column_ci(&df, "TABLE_SCHEM")?;
252257
schemas.sort();

0 commit comments

Comments
 (0)