Skip to content

Commit 6ae89da

Browse files
authored
chore: cleanup unused functions (#5522)
This PR cleans up some unused functions that were identified during my work on multi schema support for MySQL.
1 parent 7bac10d commit 6ae89da

6 files changed

Lines changed: 3 additions & 226 deletions

File tree

schema-engine/sql-schema-describer/src/lib.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,13 @@ use std::fmt::{self, Debug};
3535
/// A database description connector.
3636
#[async_trait::async_trait]
3737
pub trait SqlSchemaDescriberBackend: Send + Sync {
38-
/// List the database's schemas.
39-
async fn list_databases(&self) -> DescriberResult<Vec<String>>;
40-
41-
/// Get the databases metadata.
42-
async fn get_metadata(&self, schema: &str) -> DescriberResult<SqlMetadata>;
43-
4438
/// Describe a database schema.
4539
async fn describe(&self, schemas: &[&str]) -> DescriberResult<SqlSchema>;
4640

4741
/// Get the database version.
4842
async fn version(&self) -> DescriberResult<Option<String>>;
4943
}
5044

51-
/// The return type of get_metadata().
52-
pub struct SqlMetadata {
53-
pub table_count: usize,
54-
pub size_in_bytes: usize,
55-
}
56-
5745
/// The result of describing a database schema.
5846
#[derive(Serialize, Deserialize, Debug, Default, Clone)]
5947
pub struct SqlSchema {

schema-engine/sql-schema-describer/src/mssql.rs

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use crate::{
44
getters::Getter, ids::*, parsers::Parser, Column, ColumnArity, ColumnType, ColumnTypeFamily, DefaultValue,
55
DescriberError, DescriberErrorKind, DescriberResult, ForeignKeyAction, IndexColumn, Procedure, SQLSortOrder,
6-
SqlMetadata, SqlSchema, UserDefinedType, View,
6+
SqlSchema, UserDefinedType, View,
77
};
88
use either::Either;
99
use enumflags2::BitFlags;
@@ -16,7 +16,7 @@ use psl::{
1616
};
1717
use quaint::prelude::Queryable;
1818
use regex::Regex;
19-
use std::{any::type_name, borrow::Cow, collections::HashMap, convert::TryInto, sync::LazyLock};
19+
use std::{any::type_name, borrow::Cow, collections::HashMap, sync::LazyLock};
2020

2121
/// Matches a default value in the schema, that is not a string.
2222
///
@@ -103,24 +103,6 @@ impl std::fmt::Debug for SqlSchemaDescriber<'_> {
103103

104104
#[async_trait::async_trait]
105105
impl super::SqlSchemaDescriberBackend for SqlSchemaDescriber<'_> {
106-
async fn list_databases(&self) -> DescriberResult<Vec<String>> {
107-
Ok(self.get_databases().await?)
108-
}
109-
110-
async fn get_metadata(&self, schema: &str) -> DescriberResult<SqlMetadata> {
111-
let mut sql_schema = SqlSchema::default();
112-
113-
self.get_namespaces(&mut sql_schema, &[schema]).await?;
114-
115-
let table_count = self.get_table_names(&mut sql_schema).await?.len();
116-
let size_in_bytes = self.get_size(schema).await?;
117-
118-
Ok(SqlMetadata {
119-
table_count,
120-
size_in_bytes,
121-
})
122-
}
123-
124106
async fn describe(&self, schemas: &[&str]) -> DescriberResult<SqlSchema> {
125107
let mut sql_schema = SqlSchema::default();
126108
let mut mssql_ext = MssqlSchemaExt::default();
@@ -157,12 +139,6 @@ impl<'a> SqlSchemaDescriber<'a> {
157139
Self { conn }
158140
}
159141

160-
async fn get_databases(&self) -> DescriberResult<Vec<String>> {
161-
let sql = "SELECT name FROM sys.schemas";
162-
let rows = self.conn.query_raw(sql, &[]).await?;
163-
Ok(rows.into_iter().map(|row| row.get_expect_string("name")).collect())
164-
}
165-
166142
async fn get_procedures(&self, sql_schema: &mut SqlSchema) -> DescriberResult<()> {
167143
let sql = r#"
168144
SELECT
@@ -232,36 +208,6 @@ impl<'a> SqlSchemaDescriber<'a> {
232208
Ok(map)
233209
}
234210

235-
async fn get_size(&self, schema: &str) -> DescriberResult<usize> {
236-
let sql = indoc! {r#"
237-
SELECT
238-
SUM(a.total_pages) * 8000 AS size
239-
FROM
240-
sys.tables t
241-
INNER JOIN
242-
sys.partitions p ON t.object_id = p.object_id
243-
INNER JOIN
244-
sys.allocation_units a ON p.partition_id = a.container_id
245-
WHERE SCHEMA_NAME(t.schema_id) = @P1
246-
AND t.is_ms_shipped = 0
247-
GROUP BY
248-
t.schema_id
249-
ORDER BY
250-
size DESC;
251-
"#};
252-
253-
let rows = self.conn.query_raw(sql, &[schema.into()]).await?;
254-
255-
let size: i64 = rows
256-
.into_single()
257-
.map(|row| row.get("size").and_then(|x| x.as_integer()).unwrap_or(0))
258-
.unwrap_or(0);
259-
260-
Ok(size
261-
.try_into()
262-
.expect("Invariant violation: size is not a valid usize value."))
263-
}
264-
265211
async fn get_columns(&self, sql_schema: &mut SqlSchema) -> DescriberResult<()> {
266212
let sql = indoc! {r#"
267213
SELECT c.name AS column_name,

schema-engine/sql-schema-describer/src/mysql.rs

Lines changed: 0 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! MySQL schema description.
22
33
use crate::{getters::Getter, parsers::Parser, *};
4-
use bigdecimal::ToPrimitive;
54
use indexmap::IndexMap;
65
use indoc::indoc;
76
use psl::{builtin_connectors::MySqlType, datamodel_connector::NativeTypeInstance};
@@ -57,21 +56,6 @@ pub struct SqlSchemaDescriber<'a> {
5756

5857
#[async_trait::async_trait]
5958
impl super::SqlSchemaDescriberBackend for SqlSchemaDescriber<'_> {
60-
async fn list_databases(&self) -> DescriberResult<Vec<String>> {
61-
self.get_databases().await
62-
}
63-
64-
async fn get_metadata(&self, schema: &str) -> DescriberResult<SqlMetadata> {
65-
let mut sql_schema = SqlSchema::default();
66-
let table_count = self.get_table_names(schema, &mut sql_schema).await?.len();
67-
let size_in_bytes = self.get_size(schema).await?;
68-
69-
Ok(SqlMetadata {
70-
table_count,
71-
size_in_bytes,
72-
})
73-
}
74-
7559
#[tracing::instrument(skip(self))]
7660
async fn describe(&self, schemas: &[&str]) -> DescriberResult<SqlSchema> {
7761
let schema = schemas[0];
@@ -219,20 +203,6 @@ impl<'a> SqlSchemaDescriber<'a> {
219203
SqlSchemaDescriber { conn, circumstances }
220204
}
221205

222-
#[tracing::instrument(skip(self))]
223-
async fn get_databases(&self) -> DescriberResult<Vec<String>> {
224-
let sql = "select schema_name as schema_name from information_schema.schemata;";
225-
let rows = self.conn.query_raw(sql, &[]).await?;
226-
let names = rows
227-
.into_iter()
228-
.map(|row| row.get_expect_string("schema_name"))
229-
.collect();
230-
231-
trace!("Found schema names: {names:?}");
232-
233-
Ok(names)
234-
}
235-
236206
#[tracing::instrument(skip(self))]
237207
async fn get_views(&self, schema: &str) -> DescriberResult<Vec<View>> {
238208
let sql = indoc! {r#"
@@ -334,30 +304,6 @@ impl<'a> SqlSchemaDescriber<'a> {
334304
Ok(map)
335305
}
336306

337-
#[tracing::instrument(skip(self))]
338-
async fn get_size(&self, schema: &str) -> DescriberResult<usize> {
339-
let sql = r#"
340-
SELECT
341-
SUM(data_length + index_length) as size
342-
FROM information_schema.TABLES
343-
WHERE table_schema = ?
344-
"#;
345-
346-
let result = self.conn.query_raw(sql, &[schema.into()]).await?;
347-
let size = result
348-
.first()
349-
.and_then(|row| {
350-
row.get("size")
351-
.and_then(|x| x.as_numeric())
352-
.and_then(|decimal| decimal.round(0).to_usize())
353-
})
354-
.unwrap_or(0);
355-
356-
trace!("Found db size: {size:?}");
357-
358-
Ok(size)
359-
}
360-
361307
async fn get_all_columns(
362308
table_ids: &IndexMap<String, TableId>,
363309
conn: &dyn Queryable,

schema-engine/sql-schema-describer/src/postgres.rs

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ use regex::Regex;
2121
use std::{
2222
any::type_name,
2323
collections::{BTreeMap, HashMap},
24-
convert::TryInto,
2524
iter::Peekable,
2625
sync::LazyLock,
2726
};
@@ -529,28 +528,6 @@ impl AsRef<str> for SQLOperatorClassKind {
529528

530529
#[async_trait::async_trait]
531530
impl super::SqlSchemaDescriberBackend for SqlSchemaDescriber<'_> {
532-
async fn list_databases(&self) -> DescriberResult<Vec<String>> {
533-
Ok(self.get_databases().await?)
534-
}
535-
536-
// TODO(MultiSchema): this going to provide wrong results with respect to MultiSchema,
537-
// but this function does not seem to be called all that much. Should probably look into
538-
// either updating or removing it.
539-
async fn get_metadata(&self, schema: &str) -> DescriberResult<SqlMetadata> {
540-
let mut sql_schema = SqlSchema::default();
541-
let mut pg_ext = PostgresSchemaExt::default();
542-
543-
self.get_namespaces(&mut sql_schema, &[schema]).await?;
544-
545-
let table_count = self.get_table_names(&mut sql_schema, &mut pg_ext).await?.len();
546-
let size_in_bytes = self.get_size(schema).await?;
547-
548-
Ok(SqlMetadata {
549-
table_count,
550-
size_in_bytes,
551-
})
552-
}
553-
554531
async fn describe(&self, schemas: &[&str]) -> DescriberResult<SqlSchema> {
555532
let mut sql_schema = SqlSchema::default();
556533
let mut pg_ext = PostgresSchemaExt::default();
@@ -633,19 +610,6 @@ impl<'a> SqlSchemaDescriber<'a> {
633610
Ok(())
634611
}
635612

636-
async fn get_databases(&self) -> DescriberResult<Vec<String>> {
637-
let sql = "select schema_name from information_schema.schemata;";
638-
let rows = self.conn.query_raw(sql, &[]).await?;
639-
let names = rows
640-
.into_iter()
641-
.map(|row| row.get_expect_string("schema_name"))
642-
.collect();
643-
644-
trace!("Found schema names: {:?}", names);
645-
646-
Ok(names)
647-
}
648-
649613
async fn get_procedures(&self, sql_schema: &mut SqlSchema) -> DescriberResult<()> {
650614
let namespaces = &sql_schema.namespaces;
651615

@@ -782,23 +746,6 @@ impl<'a> SqlSchemaDescriber<'a> {
782746
Ok(map)
783747
}
784748

785-
async fn get_size(&self, schema: &str) -> DescriberResult<usize> {
786-
if self.circumstances.contains(Circumstances::Cockroach) {
787-
return Ok(0); // TODO
788-
}
789-
790-
let sql =
791-
"SELECT SUM(pg_total_relation_size(quote_ident(schemaname) || '.' || quote_ident(tablename)))::BIGINT as size
792-
FROM pg_tables
793-
WHERE schemaname = $1::text";
794-
let mut result_iter = self.conn.query_raw(sql, &[schema.into()]).await?.into_iter();
795-
let size: i64 = result_iter.next().and_then(|row| row.get_i64("size")).unwrap_or(0);
796-
797-
trace!("Found db size: {:?}", size);
798-
799-
Ok(size.try_into().expect("size is not a valid usize"))
800-
}
801-
802749
async fn get_views(&self, sql_schema: &mut SqlSchema) -> DescriberResult<()> {
803750
let namespaces = &sql_schema.namespaces;
804751
let sql = indoc! {r#"

schema-engine/sql-schema-describer/src/sqlite.rs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ use std::{
1616
any::type_name,
1717
borrow::Cow,
1818
collections::BTreeMap,
19-
convert::TryInto,
2019
fmt::Debug,
21-
path::Path,
2220
sync::{Arc, LazyLock, OnceLock},
2321
};
2422
use tracing::trace;
@@ -107,28 +105,6 @@ impl<'a> SqlSchemaDescriber<'a> {
107105
Ok(schema)
108106
}
109107

110-
async fn get_databases(&self) -> DescriberResult<Vec<String>> {
111-
let sql = "PRAGMA database_list;";
112-
let rows = self.conn.query_raw(sql, &[]).await?;
113-
let names = rows
114-
.into_iter()
115-
.map(|row| {
116-
row.get("file")
117-
.and_then(|x| x.to_string())
118-
.and_then(|x| {
119-
Path::new(&x)
120-
.file_name()
121-
.map(|name| name.to_string_lossy().into_owned())
122-
})
123-
.expect("convert schema names")
124-
})
125-
.collect();
126-
127-
trace!("Found schema names: {:?}", names);
128-
129-
Ok(names)
130-
}
131-
132108
pub async fn get_table_names(
133109
&self,
134110
schema: &mut SqlSchema,
@@ -169,17 +145,6 @@ impl<'a> SqlSchemaDescriber<'a> {
169145
Ok(map)
170146
}
171147

172-
async fn get_size(&self) -> DescriberResult<usize> {
173-
let sql = r#"SELECT page_count * page_size as size FROM pragma_page_count(), pragma_page_size();"#;
174-
let result = self.conn.query_raw(sql, &[]).await?;
175-
let size: i64 = result
176-
.first()
177-
.map(|row| row.get("size").and_then(|x| x.as_integer()).unwrap_or(0))
178-
.unwrap();
179-
180-
Ok(size.try_into().unwrap())
181-
}
182-
183148
async fn push_foreign_keys(
184149
&self,
185150
table_name: &str,

schema-engine/sql-schema-describer/src/sqlite/native/mod.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{sqlite::Connection, DescriberResult, SqlMetadata, SqlSchema, SqlSchemaDescriberBackend};
1+
use crate::{sqlite::Connection, DescriberResult, SqlSchema, SqlSchemaDescriberBackend};
22

33
use quaint::{
44
connector::{rusqlite, ColumnType as QuaintColumnType, GetRow, ToColumnNames},
@@ -26,21 +26,6 @@ impl Connection for std::sync::Mutex<rusqlite::Connection> {
2626

2727
#[async_trait::async_trait]
2828
impl SqlSchemaDescriberBackend for SqlSchemaDescriber<'_> {
29-
async fn list_databases(&self) -> DescriberResult<Vec<String>> {
30-
Ok(self.get_databases().await?)
31-
}
32-
33-
async fn get_metadata(&self, _schema: &str) -> DescriberResult<SqlMetadata> {
34-
let mut sql_schema = SqlSchema::default();
35-
let table_count = self.get_table_names(&mut sql_schema).await?.len();
36-
let size_in_bytes = self.get_size().await?;
37-
38-
Ok(SqlMetadata {
39-
table_count,
40-
size_in_bytes,
41-
})
42-
}
43-
4429
async fn describe(&self, _schemas: &[&str]) -> DescriberResult<SqlSchema> {
4530
self.describe_impl().await
4631
}

0 commit comments

Comments
 (0)