@@ -909,6 +909,76 @@ impl<T: OlapOperations + Sync> InfraRealityChecker<T> {
909909 }
910910}
911911
912+ #[ cfg( test) ]
913+ mod materialized_view_diff_tests {
914+ use super :: MaterializedViewDiff ;
915+
916+ #[ test]
917+ fn test_can_alter_refresh_only_change ( ) {
918+ let diff = MaterializedViewDiff {
919+ select_changed : false ,
920+ target_changed : false ,
921+ kind_changed : false ,
922+ refresh_config_changed : true ,
923+ source_tables_changed : false ,
924+ } ;
925+ assert ! ( diff. can_alter( ) ) ;
926+ assert ! ( !diff. requires_recreate( ) ) ;
927+ }
928+
929+ #[ test]
930+ fn test_cannot_alter_when_select_changed ( ) {
931+ let diff = MaterializedViewDiff {
932+ select_changed : true ,
933+ target_changed : false ,
934+ kind_changed : false ,
935+ refresh_config_changed : true ,
936+ source_tables_changed : false ,
937+ } ;
938+ assert ! ( !diff. can_alter( ) ) ;
939+ assert ! ( diff. requires_recreate( ) ) ;
940+ }
941+
942+ #[ test]
943+ fn test_cannot_alter_when_target_changed ( ) {
944+ let diff = MaterializedViewDiff {
945+ select_changed : false ,
946+ target_changed : true ,
947+ kind_changed : false ,
948+ refresh_config_changed : false ,
949+ source_tables_changed : false ,
950+ } ;
951+ assert ! ( !diff. can_alter( ) ) ;
952+ assert ! ( diff. requires_recreate( ) ) ;
953+ }
954+
955+ #[ test]
956+ fn test_cannot_alter_when_kind_changed ( ) {
957+ let diff = MaterializedViewDiff {
958+ select_changed : false ,
959+ target_changed : false ,
960+ kind_changed : true ,
961+ refresh_config_changed : false ,
962+ source_tables_changed : false ,
963+ } ;
964+ assert ! ( !diff. can_alter( ) ) ;
965+ assert ! ( diff. requires_recreate( ) ) ;
966+ }
967+
968+ #[ test]
969+ fn test_no_changes ( ) {
970+ let diff = MaterializedViewDiff {
971+ select_changed : false ,
972+ target_changed : false ,
973+ kind_changed : false ,
974+ refresh_config_changed : false ,
975+ source_tables_changed : false ,
976+ } ;
977+ assert ! ( !diff. can_alter( ) ) ;
978+ assert ! ( !diff. requires_recreate( ) ) ;
979+ }
980+ }
981+
912982#[ cfg( test) ]
913983mod tests {
914984 use super :: * ;
0 commit comments