@@ -275,6 +275,24 @@ def testProfileTag(env):
275275 actual_res = conn .execute_command ('ft.profile' , 'idx' , 'search' , 'query' , '@t:{foo}' , 'nocontent' )
276276 env .assertEqual (actual_res [1 ][1 ][0 ][3 ], ['Type' , 'TAG' , 'Term' , 'foo' , 'Number of reading operations' , 2 , 'Estimated number of matches' , 2 ])
277277
278+ @skip (cluster = True )
279+ def testProfileMissingFieldQuery (env ):
280+ conn = getConnectionByEnv (env )
281+ env .cmd (config_cmd (), 'SET' , '_PRINT_PROFILE_CLOCK' , 'false' )
282+
283+ env .cmd ('ft.create' , 'idx' , 'SCHEMA' , 't' , 'text' , 'INDEXMISSING' )
284+ conn .execute_command ('hset' , '1' , 't' , 'hello' )
285+ conn .execute_command ('hset' , '2' , 'other' , 'value' )
286+
287+ actual_res = conn .execute_command ('ft.profile' , 'idx' , 'search' , 'query' , 'ismissing(@t)' , 'nocontent' , 'DIALECT' , 2 )
288+ env .assertEqual (actual_res [0 ], [1 , '2' ])
289+ env .assertEqual (actual_res [1 ][1 ][0 ][3 ], ['Type' , 'MISSING' , 'Field' , 't' , 'Number of reading operations' , 2 , 'Estimated number of matches' , 1 ])
290+
291+ actual_res = conn .execute_command ('ft.profile' , 'idx' , 'search' , 'query' , '-ismissing(@t)' , 'nocontent' )
292+ env .assertEqual (actual_res [0 ], [1 , '1' ])
293+ env .assertEqual (actual_res [1 ][1 ][0 ][3 ], ['Type' , 'NOT' , 'Number of reading operations' , 2 , 'Child iterator' ,
294+ ['Type' , 'MISSING' , 'Field' , 't' , 'Number of reading operations' , 2 , 'Estimated number of matches' , 1 ]])
295+
278296@skip (cluster = True )
279297def testProfileVector (env ):
280298 conn = getConnectionByEnv (env )
@@ -1498,4 +1516,3 @@ def testCoordinatorQueueTimeInProfile():
14981516 env .assertGreaterEqual (coord_queue_time , pause_duration_ms * 0.8 , # Allow 20% tolerance
14991517 message = f"Coordinator queue time ({ coord_queue_time } ms) should capture queue wait. "
15001518 f"Expected >= { pause_duration_ms * 0.8 } ms. Full result: { result } " )
1501-
0 commit comments