runExtendedQueryMessage dispatches an extended-query protocol message (Parse/Bind/Describe/Execute/Close), implementing the protocol's error recovery rule: after an error while processing any extended-query message the server must discard subsequent extended-protocol messages until Sync arrives. Wit
(handler func([]byte), body []byte)
| 908 | if err != nil { |
| 909 | result, err, _ = recoverAbortedTransaction( |
| 910 | err, |
| 911 | c.txStatus == txStatusIdle, |
| 912 | func() error { |
| 913 | _, rollbackErr := c.executor.ExecContext(context.Background(), "ROLLBACK") |
| 914 | return rollbackErr |
| 915 | }, |
| 916 | runExec, |
| 917 | ) |
| 918 | } |
| 919 | if err != nil { |
| 920 | queryFinalErr = err |
| 921 | errCode := classifyErrorCode(err) |
| 922 | errMsg := err.Error() |