@@ -1605,3 +1605,69 @@ func TestTiDBLowResTSOUpdateInterval(t *testing.T) {
1605
1605
require .NoError (t , err )
1606
1606
require .Equal (t , "1000" , val )
1607
1607
}
1608
+
1609
+ func TestSetEnableColumnTrackingAndPersistAnalyzeOptions (t * testing.T ) {
1610
+ vars := NewSessionVars (nil )
1611
+ mock := NewMockGlobalAccessor4Tests ()
1612
+ mock .SessionVars = vars
1613
+ vars .GlobalVarsAccessor = mock
1614
+
1615
+ // Test EnableColumnTracking
1616
+ val , err := mock .GetGlobalSysVar (TiDBEnableColumnTracking )
1617
+ require .NoError (t , err )
1618
+ require .Equal (t , Off , val )
1619
+ err = mock .SetGlobalSysVar (context .Background (), TiDBEnableColumnTracking , On )
1620
+ require .NoError (t , err )
1621
+ val , err = mock .GetGlobalSysVar (TiDBEnableColumnTracking )
1622
+ require .NoError (t , err )
1623
+ require .Equal (t , On , val )
1624
+ // Reset back.
1625
+ err = mock .SetGlobalSysVar (context .Background (), TiDBEnableColumnTracking , Off )
1626
+ require .NoError (t , err )
1627
+
1628
+ // Test PersistAnalyzeOptions
1629
+ val , err = mock .GetGlobalSysVar (TiDBPersistAnalyzeOptions )
1630
+ require .NoError (t , err )
1631
+ require .Equal (t , On , val )
1632
+ err = mock .SetGlobalSysVar (context .Background (), TiDBPersistAnalyzeOptions , Off )
1633
+ require .NoError (t , err )
1634
+ val , err = mock .GetGlobalSysVar (TiDBPersistAnalyzeOptions )
1635
+ require .NoError (t , err )
1636
+ require .Equal (t , Off , val )
1637
+ // Reset back
1638
+ err = mock .SetGlobalSysVar (context .Background (), TiDBPersistAnalyzeOptions , On )
1639
+ require .NoError (t , err )
1640
+
1641
+ // Set EnableColumnTracking to true when PersistAnalyzeOptions is false
1642
+ // Set to false first.
1643
+ err = mock .SetGlobalSysVar (context .Background (), TiDBEnableColumnTracking , Off )
1644
+ require .NoError (t , err )
1645
+ err = mock .SetGlobalSysVar (context .Background (), TiDBPersistAnalyzeOptions , Off )
1646
+ require .NoError (t , err )
1647
+ val , err = mock .GetGlobalSysVar (TiDBPersistAnalyzeOptions )
1648
+ require .NoError (t , err )
1649
+ require .Equal (t , Off , val )
1650
+ err = mock .SetGlobalSysVar (context .Background (), TiDBEnableColumnTracking , On )
1651
+ require .Error (t , err , "enable column tracking requires to persist analyze options" )
1652
+ val , err = mock .GetGlobalSysVar (TiDBEnableColumnTracking )
1653
+ require .NoError (t , err )
1654
+ require .Equal (t , Off , val )
1655
+
1656
+ // Set PersistAnalyzeOptions to false when EnableColumnTracking is true
1657
+ // Set to true first.
1658
+ err = mock .SetGlobalSysVar (context .Background (), TiDBPersistAnalyzeOptions , On )
1659
+ require .NoError (t , err )
1660
+ val , err = mock .GetGlobalSysVar (TiDBPersistAnalyzeOptions )
1661
+ require .NoError (t , err )
1662
+ require .Equal (t , On , val )
1663
+ err = mock .SetGlobalSysVar (context .Background (), TiDBEnableColumnTracking , On )
1664
+ require .NoError (t , err )
1665
+ val , err = mock .GetGlobalSysVar (TiDBEnableColumnTracking )
1666
+ require .NoError (t , err )
1667
+ require .Equal (t , On , val )
1668
+ err = mock .SetGlobalSysVar (context .Background (), TiDBPersistAnalyzeOptions , Off )
1669
+ require .Error (t , err , "persist analyze options requires to enable column tracking" )
1670
+ val , err = mock .GetGlobalSysVar (TiDBPersistAnalyzeOptions )
1671
+ require .NoError (t , err )
1672
+ require .Equal (t , On , val )
1673
+ }
0 commit comments