@@ -535,74 +535,60 @@ def execute_stmt(self, sql: str, messages: List[ClientMessage], config: 'Configu
535535 use_pipeline = (self .configuration .pipeline and
536536 self .context .has_capability (constants .CAPABILITY .BULK_OPERATIONS ))
537537
538- if use_pipeline :
539- # Pipeline mode: write prepare and all execute messages before reading
540- self .write_payload (prepare_message .payload (self .context ), prepare_message .type (), True )
541-
542- for message in messages :
543- self .write_payload (message .payload (self .context ), message .type (), True )
544- self .reset_buffer ()
545-
546- prepareResult = None
547- first_error = None
548- try :
549- prepareResult = self ._parse_prepare_response (self .read_payload (), sql )
550- except DatabaseError as e :
551- first_error = e
552- finally :
553- # Ensure reading, even if prepared has an error
554-
555- all_completions = []
538+ prepareResult = None
539+ first_error = None
540+ all_completions = []
541+
542+ try :
543+ if use_pipeline :
544+ # Pipeline mode: write prepare and all execute messages before reading
545+ self .write_payload (prepare_message .payload (self .context ), prepare_message .type (), True )
546+
547+ for message in messages :
548+ self .write_payload (message .payload (self .context ), message .type (), True )
549+ self .reset_buffer ()
550+
551+ try :
552+ prepareResult = self ._parse_prepare_response (self .read_payload (), sql )
553+ except DatabaseError as e :
554+ first_error = e
555+
556+ # Read all execute results (even if prepare failed)
556557 for message in messages :
557558 try :
558559 completions = self ._read_result (message .is_binary (), config , buffered , prepareResult )
559560 all_completions .append (completions )
560561 except DatabaseError as e :
561562 if not first_error :
562563 first_error = e
563-
564- if prepareResult :
565- if self .configuration .cache_prep_stmts :
566- self .prepared_statement_cache [key ] = prepareResult
567- prepareResult .close ()
568-
569- if first_error :
570- raise first_error
571- return all_completions
572- else :
573- # Non-pipeline mode: read prepare response before writing execute messages
574- self .write_payload (prepare_message .payload (self .context ), prepare_message .type (), True )
575- self .reset_buffer ()
576-
577- prepareResult = None
578- first_error = None
579- try :
580- prepareResult = self ._parse_prepare_response (self .read_payload (), sql )
581- except DatabaseError as e :
582- first_error = e
583- raise
584-
585- # Now write and read execute messages
586- all_completions = []
587- for message in messages :
588- message .statement_id = prepareResult .statement_id
589- self .write_payload (message .payload (self .context ), message .type (), True )
564+ else :
565+ # Non-pipeline mode: read prepare response before writing execute messages
566+ self .write_payload (prepare_message .payload (self .context ), prepare_message .type (), True )
590567 self .reset_buffer ()
591- try :
592- completions = self ._read_result (message .is_binary (), config , buffered , prepareResult )
593- all_completions .append (completions )
594- except DatabaseError as e :
595- if not first_error :
596- first_error = e
597-
568+
569+ prepareResult = self ._parse_prepare_response (self .read_payload (), sql )
570+
571+ # Now write and read execute messages
572+ for message in messages :
573+ message .statement_id = prepareResult .statement_id
574+ self .write_payload (message .payload (self .context ), message .type (), True )
575+ self .reset_buffer ()
576+ try :
577+ completions = self ._read_result (message .is_binary (), config , buffered , prepareResult )
578+ all_completions .append (completions )
579+ except DatabaseError as e :
580+ if not first_error :
581+ first_error = e
582+ finally :
583+ # Cache and close prepared statement
598584 if prepareResult :
599585 if self .configuration .cache_prep_stmts :
600586 self .prepared_statement_cache [key ] = prepareResult
601587 prepareResult .close ()
602-
603- if first_error :
604- raise first_error
605- return all_completions
588+
589+ if first_error :
590+ raise first_error
591+ return all_completions
606592
607593 except DatabaseError as e :
608594 raise e
0 commit comments