@@ -676,3 +676,70 @@ pgroup.test_update_cache = function(g)
676
676
t .assert_equals (err , nil )
677
677
t .assert_equals (sharding_key_as_index_obj , {parts = {{fieldno = 3 }}})
678
678
end
679
+
680
+ pgroup .test_update_cache_with_incorrect_key = function (g )
681
+ -- get data from cache for space with correct sharding key
682
+ local space_name = ' customers_name_key'
683
+
684
+ local sharding_key_as_index_obj , err = helpers .update_sharding_key_cache (g .cluster , space_name )
685
+ t .assert_equals (err , nil )
686
+ t .assert_equals (sharding_key_as_index_obj , {parts = {{fieldno = 3 }}})
687
+
688
+ -- records for all spaces exist
689
+ sharding_key_as_index_obj = helpers .get_sharding_key_cache (g .cluster )
690
+ t .assert_equals (sharding_key_as_index_obj , {
691
+ customers_age_key = {parts = {{fieldno = 4 }}},
692
+ customers_name_age_key_different_indexes = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
693
+ customers_name_age_key_three_fields_index = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
694
+ customers_name_key = {parts = {{fieldno = 3 }}},
695
+ customers_name_key_non_uniq_index = {parts = {{fieldno = 3 }}},
696
+ customers_name_key_uniq_index = {parts = {{fieldno = 3 }}},
697
+ customers_secondary_idx_name_key = {parts = {{fieldno = 3 }}},
698
+ })
699
+
700
+ -- no error just warning
701
+ local space_name = ' customers_name_key'
702
+ helpers .call_on_servers (g .cluster , {' s1-master' , ' s2-master' }, function (server )
703
+ server .net_box :call (' set_sharding_key' , {space_name , {' non_existent_field' }})
704
+ end )
705
+
706
+ -- we get no error because we sent request for correct space
707
+ local sharding_key_as_index_obj , err = helpers .update_sharding_key_cache (g .cluster , ' customers_age_key' )
708
+ t .assert_equals (err , nil )
709
+ t .assert_equals (sharding_key_as_index_obj , {parts = {{fieldno = 4 }}})
710
+
711
+ -- cache['customers_name_key'] == nil (space with incorrect key)
712
+ -- other records for correct spaces exist in cache
713
+ sharding_key_as_index_obj = helpers .get_sharding_key_cache (g .cluster )
714
+ t .assert_equals (sharding_key_as_index_obj , {
715
+ customers_age_key = {parts = {{fieldno = 4 }}},
716
+ customers_name_age_key_different_indexes = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
717
+ customers_name_age_key_three_fields_index = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
718
+ customers_name_key_non_uniq_index = {parts = {{fieldno = 3 }}},
719
+ customers_name_key_uniq_index = {parts = {{fieldno = 3 }}},
720
+ customers_secondary_idx_name_key = {parts = {{fieldno = 3 }}},
721
+ })
722
+
723
+ -- get data from cache for space with incorrect sharding key
724
+ local space_name = ' customers_name_key'
725
+ helpers .call_on_servers (g .cluster , {' s1-master' , ' s2-master' }, function (server )
726
+ server .net_box :call (' set_sharding_key' , {space_name , {' non_existent_field' }})
727
+ end )
728
+
729
+ -- we get an error because we sent request for incorrect space
730
+ local sharding_key_as_index_obj , err = helpers .update_sharding_key_cache (g .cluster , space_name )
731
+ t .assert_equals (sharding_key_as_index_obj , nil )
732
+ t .assert_str_contains (err .err , " No such field (non_existent_field) in a space format (customers_name_key)" )
733
+
734
+ -- cache['customers_name_key'] == nil (space with incorrect key)
735
+ -- other records for correct spaces exist in cache
736
+ sharding_key_as_index_obj = helpers .get_sharding_key_cache (g .cluster )
737
+ t .assert_equals (sharding_key_as_index_obj , {
738
+ customers_age_key = {parts = {{fieldno = 4 }}},
739
+ customers_name_age_key_different_indexes = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
740
+ customers_name_age_key_three_fields_index = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
741
+ customers_name_key_non_uniq_index = {parts = {{fieldno = 3 }}},
742
+ customers_name_key_uniq_index = {parts = {{fieldno = 3 }}},
743
+ customers_secondary_idx_name_key = {parts = {{fieldno = 3 }}},
744
+ })
745
+ end
0 commit comments