@@ -884,6 +884,36 @@ TEST(NestedStringDictionary, GetCompare) {
884884 sortAndCompare (dict2->getCompare (" str6" , " <>" , 1 ), {0 });
885885}
886886
887+ TEST (NestedStringDictionary, GetRegexpLike) {
888+ auto dict1 =
889+ std::make_shared<StringDictionary>(DictRef{-1 , 1 }, -1 , g_cache_string_hash);
890+ ASSERT_EQ (dict1->getOrAdd (" str1" ), 0 );
891+ ASSERT_EQ (dict1->getOrAdd (" str2" ), 1 );
892+ ASSERT_EQ (dict1->getOrAdd (" str3" ), 2 );
893+
894+ ASSERT_EQ (dict1->getRegexpLike (" str." , ' \\ ' ), std::vector<int >({0 , 1 , 2 }));
895+ ASSERT_EQ (dict1->getRegexpLike (" str." , ' \\ ' , 2 ), std::vector<int >({0 , 1 }));
896+ ASSERT_EQ (dict1->getRegexpLike (" str[124]" , ' \\ ' ), std::vector<int >({0 , 1 }));
897+
898+ auto dict2 = std::make_shared<StringDictionary>(dict1, -1 , g_cache_string_hash);
899+ ASSERT_EQ (dict1->getOrAdd (" str4" ), 3 );
900+ ASSERT_EQ (dict2->getOrAdd (" str5" ), 3 );
901+ ASSERT_EQ (dict2->getOrAdd (" str6" ), 4 );
902+
903+ ASSERT_EQ (dict1->getRegexpLike (" str." , ' \\ ' ), std::vector<int >({0 , 1 , 2 , 3 }));
904+ ASSERT_EQ (dict1->getRegexpLike (" str." , ' \\ ' , 2 ), std::vector<int >({0 , 1 }));
905+ ASSERT_EQ (dict1->getRegexpLike (" str[124]" , ' \\ ' ), std::vector<int >({0 , 1 , 3 }));
906+
907+ ASSERT_EQ (dict2->getRegexpLike (" str." , ' \\ ' ), std::vector<int >({0 , 1 , 2 , 3 , 4 }));
908+ ASSERT_EQ (dict2->getRegexpLike (" str." , ' \\ ' , 2 ), std::vector<int >({0 , 1 }));
909+ ASSERT_EQ (dict2->getRegexpLike (" str[12467]" , ' \\ ' ), std::vector<int >({0 , 1 , 4 }));
910+
911+ ASSERT_EQ (dict1->getOrAdd (" str6" ), 4 );
912+ ASSERT_EQ (dict2->getOrAdd (" str7" ), 5 );
913+
914+ ASSERT_EQ (dict2->getRegexpLike (" str[12467]" , ' \\ ' ), std::vector<int >({0 , 1 , 4 , 5 }));
915+ }
916+
887917TEST (StringDictionaryProxy, BuildIntersectionTranslationMapToOtherProxy) {
888918 // Use existing dictionary from GetBulk
889919 const DictRef dict_ref1 (-1 , 1 );
0 commit comments