@@ -1544,34 +1544,28 @@ mod test {
1544
1544
#[ tokio:: test]
1545
1545
async fn should_reset_the_connection ( ) -> super :: Result < ( ) > {
1546
1546
let mut conn = Conn :: new ( get_opts ( ) ) . await ?;
1547
- let max_execution_time = conn
1548
- . query_first :: < u64 , _ > ( "SELECT @@max_execution_time" )
1549
- . await ?
1550
- . unwrap ( ) ;
1551
1547
1552
- conn. exec_drop (
1553
- "SET SESSION max_execution_time = ?" ,
1554
- ( max_execution_time + 1 , ) ,
1555
- )
1556
- . await ?;
1548
+ assert_eq ! (
1549
+ conn. query_first:: <Value , _>( "SELECT @foo" ) . await ?. unwrap( ) ,
1550
+ Value :: NULL
1551
+ ) ;
1552
+
1553
+ conn. query_drop ( "SET @foo = 'foo'" ) . await ?;
1557
1554
1558
1555
assert_eq ! (
1559
- conn. query_first:: <u64 , _>( "SELECT @@max_execution_time" )
1560
- . await ?,
1561
- Some ( max_execution_time + 1 )
1556
+ conn. query_first:: <String , _>( "SELECT @foo" ) . await ?. unwrap( ) ,
1557
+ "foo" ,
1562
1558
) ;
1563
1559
1564
1560
if conn. reset ( ) . await ? {
1565
1561
assert_eq ! (
1566
- conn. query_first:: <u64 , _>( "SELECT @@max_execution_time" )
1567
- . await ?,
1568
- Some ( max_execution_time)
1562
+ conn. query_first:: <Value , _>( "SELECT @foo" ) . await ?. unwrap( ) ,
1563
+ Value :: NULL
1569
1564
) ;
1570
1565
} else {
1571
1566
assert_eq ! (
1572
- conn. query_first:: <u64 , _>( "SELECT @@max_execution_time" )
1573
- . await ?,
1574
- Some ( max_execution_time + 1 )
1567
+ conn. query_first:: <String , _>( "SELECT @foo" ) . await ?. unwrap( ) ,
1568
+ "foo" ,
1575
1569
) ;
1576
1570
}
1577
1571
@@ -1582,28 +1576,22 @@ mod test {
1582
1576
#[ tokio:: test]
1583
1577
async fn should_change_user ( ) -> super :: Result < ( ) > {
1584
1578
let mut conn = Conn :: new ( get_opts ( ) ) . await ?;
1585
- let max_execution_time = conn
1586
- . query_first :: < u64 , _ > ( "SELECT @@max_execution_time" )
1587
- . await ?
1588
- . unwrap ( ) ;
1579
+ assert_eq ! (
1580
+ conn . query_first:: <Value , _>( "SELECT @foo" ) . await ? . unwrap ( ) ,
1581
+ Value :: NULL
1582
+ ) ;
1589
1583
1590
- conn. exec_drop (
1591
- "SET SESSION max_execution_time = ?" ,
1592
- ( max_execution_time + 1 , ) ,
1593
- )
1594
- . await ?;
1584
+ conn. query_drop ( "SET @foo = 'foo'" ) . await ?;
1595
1585
1596
1586
assert_eq ! (
1597
- conn. query_first:: <u64 , _>( "SELECT @@max_execution_time" )
1598
- . await ?,
1599
- Some ( max_execution_time + 1 )
1587
+ conn. query_first:: <String , _>( "SELECT @foo" ) . await ?. unwrap( ) ,
1588
+ "foo" ,
1600
1589
) ;
1601
1590
1602
1591
conn. change_user ( Default :: default ( ) ) . await ?;
1603
1592
assert_eq ! (
1604
- conn. query_first:: <u64 , _>( "SELECT @@max_execution_time" )
1605
- . await ?,
1606
- Some ( max_execution_time)
1593
+ conn. query_first:: <Value , _>( "SELECT @foo" ) . await ?. unwrap( ) ,
1594
+ Value :: NULL
1607
1595
) ;
1608
1596
1609
1597
let plugins: & [ & str ] = if !conn. inner . is_mariadb && conn. server_version ( ) >= ( 5 , 8 , 0 ) {
@@ -1613,42 +1601,67 @@ mod test {
1613
1601
} ;
1614
1602
1615
1603
for plugin in plugins {
1616
- let mut conn2 = Conn :: new ( get_opts ( ) ) . await . unwrap ( ) ;
1617
-
1618
1604
let mut rng = rand:: thread_rng ( ) ;
1619
1605
let mut pass = [ 0u8 ; 10 ] ;
1620
1606
pass. try_fill ( & mut rng) . unwrap ( ) ;
1621
1607
let pass: String = IntoIterator :: into_iter ( pass)
1622
1608
. map ( |x| ( ( x % ( 123 - 97 ) ) + 97 ) as char )
1623
1609
. collect ( ) ;
1624
- conn. query_drop ( "DROP USER IF EXISTS __mysql_async_test_user" )
1610
+
1611
+ conn. query_drop ( "DELETE FROM mysql.user WHERE user = '__mats'" )
1625
1612
. await
1626
1613
. unwrap ( ) ;
1627
- conn. query_drop ( format ! (
1628
- "CREATE USER '__mysql_async_test_user'@'%' IDENTIFIED WITH {} BY {}" ,
1629
- plugin,
1630
- Value :: from( pass. clone( ) ) . as_sql( false )
1631
- ) )
1632
- . await
1633
- . unwrap ( ) ;
1634
1614
conn. query_drop ( "FLUSH PRIVILEGES" ) . await . unwrap ( ) ;
1635
1615
1616
+ if conn. inner . is_mariadb || conn. server_version ( ) < ( 5 , 7 , 0 ) {
1617
+ if matches ! ( conn. server_version( ) , ( 5 , 6 , _) ) {
1618
+ conn. query_drop ( "CREATE USER '__mats'@'%' IDENTIFIED WITH mysql_old_password" )
1619
+ . await
1620
+ . unwrap ( ) ;
1621
+ conn. query_drop ( format ! (
1622
+ "SET PASSWORD FOR '__mats'@'%' = OLD_PASSWORD({})" ,
1623
+ Value :: from( pass. clone( ) ) . as_sql( false )
1624
+ ) )
1625
+ . await
1626
+ . unwrap ( ) ;
1627
+ } else {
1628
+ conn. query_drop ( "CREATE USER '__mats'@'%'" ) . await . unwrap ( ) ;
1629
+ conn. query_drop ( format ! (
1630
+ "SET PASSWORD FOR '__mats'@'%' = PASSWORD({})" ,
1631
+ Value :: from( pass. clone( ) ) . as_sql( false )
1632
+ ) )
1633
+ . await
1634
+ . unwrap ( ) ;
1635
+ }
1636
+ } else {
1637
+ conn. query_drop ( format ! (
1638
+ "CREATE USER '__mats'@'%' IDENTIFIED WITH {} BY {}" ,
1639
+ plugin,
1640
+ Value :: from( pass. clone( ) ) . as_sql( false )
1641
+ ) )
1642
+ . await
1643
+ . unwrap ( ) ;
1644
+ } ;
1645
+
1646
+ conn. query_drop ( "FLUSH PRIVILEGES" ) . await . unwrap ( ) ;
1647
+
1648
+ let mut conn2 = Conn :: new ( get_opts ( ) . secure_auth ( false ) ) . await . unwrap ( ) ;
1636
1649
conn2
1637
1650
. change_user (
1638
1651
ChangeUserOpts :: default ( )
1639
1652
. with_db_name ( None )
1640
- . with_user ( Some ( "__mysql_async_test_user " . into ( ) ) )
1653
+ . with_user ( Some ( "__mats " . into ( ) ) )
1641
1654
. with_pass ( Some ( pass) ) ,
1642
1655
)
1643
1656
. await
1644
1657
. unwrap ( ) ;
1645
- assert_eq ! (
1646
- conn2
1647
- . query_first :: < ( Option < String > , String ) , _> ( "SELECT DATABASE(), USER();" )
1648
- . await
1649
- . unwrap( ) ,
1650
- Some ( ( None , String :: from ( "__mysql_async_test_user@localhost" ) ) ) ,
1651
- ) ;
1658
+ let ( db , user ) = conn2
1659
+ . query_first :: < ( Option < String > , String ) , _ > ( "SELECT DATABASE(), USER();" )
1660
+ . await
1661
+ . unwrap ( )
1662
+ . unwrap ( ) ;
1663
+ assert_eq ! ( db , None ) ;
1664
+ assert ! ( user . starts_with ( "__mats" ) ) ;
1652
1665
1653
1666
conn2. disconnect ( ) . await . unwrap ( ) ;
1654
1667
}
0 commit comments