@@ -164,18 +164,24 @@ pub fn load_table_names<Conn>(connection: &Conn, schema_name: Option<&str>)
164164{
165165 use self :: information_schema:: tables:: dsl:: * ;
166166
167+ let default_schema = Conn :: Backend :: default_schema ( connection) ?;
167168 let schema_name = match schema_name {
168- Some ( name) => name. into ( ) ,
169- None => Conn :: Backend :: default_schema ( connection ) ? ,
169+ Some ( name) => name,
170+ None => & default_schema,
170171 } ;
171172
172- tables. select ( ( table_name, table_schema) )
173+ let mut table_names = tables. select ( ( table_name, table_schema) )
173174 . filter ( table_schema. eq ( schema_name) )
174175 . filter ( table_name. not_like ( "\\ _\\ _%" ) )
175176 . filter ( table_type. like ( "BASE TABLE" ) )
176177 . order ( table_name)
177- . load ( connection)
178- . map_err ( Into :: into)
178+ . load :: < TableData > ( connection) ?;
179+ if schema_name == default_schema {
180+ for table in & mut table_names {
181+ table. schema = None ;
182+ }
183+ }
184+ Ok ( table_names)
179185}
180186
181187#[ cfg_attr( feature = "clippy" , allow( similar_names) ) ]
@@ -255,8 +261,8 @@ mod tests {
255261
256262 let table_names = load_table_names ( & connection, None ) . unwrap ( ) ;
257263
258- assert ! ( table_names. contains( & TableData :: new ( "a_regular_table" , "public ") ) ) ;
259- assert ! ( !table_names. contains( & TableData :: new ( "a_view" , "public ") ) ) ;
264+ assert ! ( table_names. contains( & TableData :: from_name ( "a_regular_table" ) ) ) ;
265+ assert ! ( !table_names. contains( & TableData :: from_name ( "a_view" ) ) ) ;
260266 }
261267
262268 #[ test]
@@ -267,9 +273,12 @@ mod tests {
267273 . unwrap ( ) ;
268274
269275 let table_names = load_table_names ( & connection, None ) . unwrap ( ) ;
270- for TableData { schema, .. } in table_names {
271- assert_eq ! ( Some ( "public" . into ( ) ) , schema) ;
276+ for & TableData { ref schema, .. } in & table_names {
277+ assert_eq ! ( None , * schema) ;
272278 }
279+ assert ! ( table_names. contains( & TableData :: from_name(
280+ "load_table_names_loads_from_public_schema_if_none_given" ,
281+ ) ) ) ;
273282 }
274283
275284 #[ test]
0 commit comments