@@ -694,3 +694,70 @@ pgroup.test_update_cache = function(g)
694
694
t .assert_equals (err , nil )
695
695
t .assert_equals (sharding_key_as_index_obj , {parts = {{fieldno = 3 }}})
696
696
end
697
+
698
+ pgroup .test_update_cache_with_incorrect_key = function (g )
699
+ -- get data from cache for space with correct sharding key
700
+ local space_name = ' customers_name_key'
701
+
702
+ local sharding_key_as_index_obj , err = helpers .update_sharding_key_cache (g .cluster , space_name )
703
+ t .assert_equals (err , nil )
704
+ t .assert_equals (sharding_key_as_index_obj , {parts = {{fieldno = 3 }}})
705
+
706
+ -- records for all spaces exist
707
+ sharding_key_as_index_obj = helpers .get_sharding_key_cache (g .cluster )
708
+ t .assert_equals (sharding_key_as_index_obj , {
709
+ customers_age_key = {parts = {{fieldno = 4 }}},
710
+ customers_name_age_key_different_indexes = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
711
+ customers_name_age_key_three_fields_index = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
712
+ customers_name_key = {parts = {{fieldno = 3 }}},
713
+ customers_name_key_non_uniq_index = {parts = {{fieldno = 3 }}},
714
+ customers_name_key_uniq_index = {parts = {{fieldno = 3 }}},
715
+ customers_secondary_idx_name_key = {parts = {{fieldno = 3 }}},
716
+ })
717
+
718
+ -- no error just warning
719
+ local space_name = ' customers_name_key'
720
+ helpers .call_on_servers (g .cluster , {' s1-master' , ' s2-master' }, function (server )
721
+ server .net_box :call (' set_sharding_key' , {space_name , {' non_existent_field' }})
722
+ end )
723
+
724
+ -- we get no error because we sent request for correct space
725
+ local sharding_key_as_index_obj , err = helpers .update_sharding_key_cache (g .cluster , ' customers_age_key' )
726
+ t .assert_equals (err , nil )
727
+ t .assert_equals (sharding_key_as_index_obj , {parts = {{fieldno = 4 }}})
728
+
729
+ -- cache['customers_name_key'] == nil (space with incorrect key)
730
+ -- other records for correct spaces exist in cache
731
+ sharding_key_as_index_obj = helpers .get_sharding_key_cache (g .cluster )
732
+ t .assert_equals (sharding_key_as_index_obj , {
733
+ customers_age_key = {parts = {{fieldno = 4 }}},
734
+ customers_name_age_key_different_indexes = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
735
+ customers_name_age_key_three_fields_index = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
736
+ customers_name_key_non_uniq_index = {parts = {{fieldno = 3 }}},
737
+ customers_name_key_uniq_index = {parts = {{fieldno = 3 }}},
738
+ customers_secondary_idx_name_key = {parts = {{fieldno = 3 }}},
739
+ })
740
+
741
+ -- get data from cache for space with incorrect sharding key
742
+ local space_name = ' customers_name_key'
743
+ helpers .call_on_servers (g .cluster , {' s1-master' , ' s2-master' }, function (server )
744
+ server .net_box :call (' set_sharding_key' , {space_name , {' non_existent_field' }})
745
+ end )
746
+
747
+ -- we get an error because we sent request for incorrect space
748
+ local sharding_key_as_index_obj , err = helpers .update_sharding_key_cache (g .cluster , space_name )
749
+ t .assert_equals (sharding_key_as_index_obj , nil )
750
+ t .assert_str_contains (err .err , " No such field (non_existent_field) in a space format (customers_name_key)" )
751
+
752
+ -- cache['customers_name_key'] == nil (space with incorrect key)
753
+ -- other records for correct spaces exist in cache
754
+ sharding_key_as_index_obj = helpers .get_sharding_key_cache (g .cluster )
755
+ t .assert_equals (sharding_key_as_index_obj , {
756
+ customers_age_key = {parts = {{fieldno = 4 }}},
757
+ customers_name_age_key_different_indexes = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
758
+ customers_name_age_key_three_fields_index = {parts = {{fieldno = 3 }, {fieldno = 4 }}},
759
+ customers_name_key_non_uniq_index = {parts = {{fieldno = 3 }}},
760
+ customers_name_key_uniq_index = {parts = {{fieldno = 3 }}},
761
+ customers_secondary_idx_name_key = {parts = {{fieldno = 3 }}},
762
+ })
763
+ end
0 commit comments