()
| 2699 | } |
| 2700 | |
| 2701 | func (p *Pipeline) getResultsQueryStatement() (*ResultReader, error) { |
| 2702 | err := p.receiveBindComplete("QueryStatement") |
| 2703 | if err != nil { |
| 2704 | return nil, err |
| 2705 | } |
| 2706 | |
| 2707 | msg, err := p.receiveMessage() |
| 2708 | if err != nil { |
| 2709 | return nil, err |
| 2710 | } |
| 2711 | |
| 2712 | sd, resultFormats := p.state.ExtractFrontStatementData() |
| 2713 | if sd == nil { |
| 2714 | return nil, errors.New("BUG: missing statement description or result formats for QueryStatement") |
| 2715 | } |
| 2716 | sdFields := sd.Fields |
| 2717 | fieldDescriptions := p.conn.getFieldDescriptionSlice(len(sdFields)) |
| 2718 | err = combineFieldDescriptionsAndResultFormats(fieldDescriptions, sdFields, resultFormats) |
| 2719 | if err != nil { |
| 2720 | return nil, err |
| 2721 | } |
| 2722 | |
| 2723 | switch msg := msg.(type) { |
| 2724 | case *pgproto3.DataRow: |
| 2725 | rr := ResultReader{ |
| 2726 | pgConn: p.conn, |
| 2727 | pipeline: p, |
| 2728 | ctx: p.ctx, |
| 2729 | fieldDescriptions: fieldDescriptions, |
| 2730 | } |
| 2731 | rr.preloadRowValues(msg.Values) |
| 2732 | p.conn.resultReader = rr |
| 2733 | return &p.conn.resultReader, nil |
| 2734 | case *pgproto3.CommandComplete: |
| 2735 | p.conn.resultReader = ResultReader{ |
| 2736 | commandTag: p.conn.makeCommandTag(msg.CommandTag), |
| 2737 | commandConcluded: true, |
| 2738 | closed: true, |
| 2739 | fieldDescriptions: fieldDescriptions, |
| 2740 | } |
| 2741 | return &p.conn.resultReader, nil |
| 2742 | case *pgproto3.ErrorResponse: |
| 2743 | pgErr := ErrorResponseToPgError(msg) |
| 2744 | p.state.HandleError(pgErr) |
| 2745 | p.conn.resultReader.closed = true |
| 2746 | return nil, pgErr |
| 2747 | default: |
| 2748 | return nil, p.handleUnexpectedMessage("QueryStatement", msg) |
| 2749 | } |
| 2750 | } |
| 2751 | |
| 2752 | func (p *Pipeline) getResultsDeallocate() (*CloseComplete, error) { |
| 2753 | msg, err := p.receiveMessage() |
no test coverage detected