@@ -16,6 +16,7 @@ use std::net::SocketAddr;
1616use std:: sync:: Arc ;
1717use std:: time:: Duration ;
1818
19+ use common_catalog:: consts:: DEFAULT_SCHEMA_NAME ;
1920use common_recordbatch:: RecordBatch ;
2021use common_runtime:: Builder as RuntimeBuilder ;
2122use datatypes:: schema:: Schema ;
@@ -91,7 +92,7 @@ async fn test_shutdown_mysql_server() -> Result<()> {
9192 for _ in 0 ..2 {
9293 join_handles. push ( tokio:: spawn ( async move {
9394 for _ in 0 ..1000 {
94- match create_connection ( server_port, false ) . await {
95+ match create_connection ( server_port, None , false ) . await {
9596 Ok ( mut connection) => {
9697 let result: u32 = connection
9798 . query_first ( "SELECT uint32s FROM numbers LIMIT 1" )
@@ -197,7 +198,39 @@ async fn test_server_required_secure_client_plain() -> Result<()> {
197198 let listening = "127.0.0.1:0" . parse :: < SocketAddr > ( ) . unwrap ( ) ;
198199 let server_addr = mysql_server. start ( listening) . await . unwrap ( ) ;
199200
200- let r = create_connection ( server_addr. port ( ) , client_tls) . await ;
201+ let r = create_connection ( server_addr. port ( ) , None , client_tls) . await ;
202+ assert ! ( r. is_err( ) ) ;
203+ Ok ( ( ) )
204+ }
205+
206+ #[ tokio:: test( flavor = "multi_thread" , worker_threads = 2 ) ]
207+ async fn test_db_name ( ) -> Result < ( ) > {
208+ let server_tls = TlsOption :: default ( ) ;
209+ let client_tls = false ;
210+
211+ #[ allow( unused) ]
212+ let TestingData {
213+ column_schemas,
214+ mysql_columns_def,
215+ columns,
216+ mysql_text_output_rows,
217+ } = all_datatype_testing_data ( ) ;
218+ let schema = Arc :: new ( Schema :: new ( column_schemas. clone ( ) ) ) ;
219+ let recordbatch = RecordBatch :: new ( schema, columns) . unwrap ( ) ;
220+ let table = MemTable :: new ( "all_datatypes" , recordbatch) ;
221+
222+ let mysql_server = create_mysql_server ( table, server_tls) ?;
223+
224+ let listening = "127.0.0.1:0" . parse :: < SocketAddr > ( ) . unwrap ( ) ;
225+ let server_addr = mysql_server. start ( listening) . await . unwrap ( ) ;
226+
227+ let r = create_connection ( server_addr. port ( ) , None , client_tls) . await ;
228+ assert ! ( r. is_ok( ) ) ;
229+
230+ let r = create_connection ( server_addr. port ( ) , Some ( DEFAULT_SCHEMA_NAME ) , client_tls) . await ;
231+ assert ! ( r. is_ok( ) ) ;
232+
233+ let r = create_connection ( server_addr. port ( ) , Some ( "tomcat" ) , client_tls) . await ;
201234 assert ! ( r. is_err( ) ) ;
202235 Ok ( ( ) )
203236}
@@ -219,7 +252,7 @@ async fn do_test_query_all_datatypes(server_tls: TlsOption, client_tls: bool) ->
219252 let listening = "127.0.0.1:0" . parse :: < SocketAddr > ( ) . unwrap ( ) ;
220253 let server_addr = mysql_server. start ( listening) . await . unwrap ( ) ;
221254
222- let mut connection = create_connection ( server_addr. port ( ) , client_tls)
255+ let mut connection = create_connection ( server_addr. port ( ) , None , client_tls)
223256 . await
224257 . unwrap ( ) ;
225258
@@ -261,7 +294,7 @@ async fn test_query_concurrently() -> Result<()> {
261294 join_handles. push ( tokio:: spawn ( async move {
262295 let mut rand: StdRng = rand:: SeedableRng :: from_entropy ( ) ;
263296
264- let mut connection = create_connection ( server_port, false ) . await . unwrap ( ) ;
297+ let mut connection = create_connection ( server_port, None , false ) . await . unwrap ( ) ;
265298 for _ in 0 ..expect_executed_queries_per_worker {
266299 let expected: u32 = rand. gen_range ( 0 ..100 ) ;
267300 let result: u32 = connection
@@ -275,7 +308,7 @@ async fn test_query_concurrently() -> Result<()> {
275308
276309 let should_recreate_conn = expected == 1 ;
277310 if should_recreate_conn {
278- connection = create_connection ( server_port, false ) . await . unwrap ( ) ;
311+ connection = create_connection ( server_port, None , false ) . await . unwrap ( ) ;
279312 }
280313 }
281314 expect_executed_queries_per_worker
@@ -289,12 +322,17 @@ async fn test_query_concurrently() -> Result<()> {
289322 Ok ( ( ) )
290323}
291324
292- async fn create_connection ( port : u16 , ssl : bool ) -> mysql_async:: Result < mysql_async:: Conn > {
325+ async fn create_connection (
326+ port : u16 ,
327+ db_name : Option < & str > ,
328+ ssl : bool ,
329+ ) -> mysql_async:: Result < mysql_async:: Conn > {
293330 let mut opts = mysql_async:: OptsBuilder :: default ( )
294331 . ip_or_hostname ( "127.0.0.1" )
295332 . tcp_port ( port)
296333 . prefer_socket ( false )
297334 . wait_timeout ( Some ( 1000 ) )
335+ . db_name ( db_name)
298336 . user ( Some ( "greptime" . to_string ( ) ) )
299337 . pass ( Some ( "greptime" . to_string ( ) ) ) ;
300338
0 commit comments