MCPcopy Create free account
hub / github.com/apecloud/myduckserver / rowToBytes

Method rowToBytes

pgserver/duck_handler.go:856–897  ·  view source on GitHub ↗
(ctx *sql.Context, s sql.Schema, fields []pgproto3.FieldDescription, row sql.Row)

Source from the content-addressed store, hash-verified

854 return &Result{Fields: nil}, nil
855}
856
857// resultForMax1RowIter ensures that an empty iterator returns at most one row
858func (h *DuckHandler) resultForMax1RowIter(ctx *sql.Context, schema sql.Schema, iter sql.RowIter, resultFields []pgproto3.FieldDescription) (*Result, error) {
859 defer trace.StartRegion(ctx, "DuckHandler.resultForMax1RowIter").End()
860 row, err := iter.Next(ctx)
861 if err == io.EOF {
862 return &Result{Fields: resultFields}, nil
863 } else if err != nil {
864 return nil, err
865 }
866
867 if _, err = iter.Next(ctx); err != io.EOF {
868 return nil, fmt.Errorf("result max1Row iterator returned more than one row")
869 }
870 if err := iter.Close(ctx); err != nil {
871 return nil, err
872 }
873
874 outputRow, err := h.rowToBytes(ctx, schema, resultFields, row)
875 if err != nil {
876 return nil, err
877 }
878
879 ctx.GetLogger().Tracef("spooling result row %s", outputRow)
880
881 return &Result{Fields: resultFields, Rows: []Row{{outputRow}}, RowsAffected: 1}, nil
882}
883
884// resultForDefaultIter reads batches of rows from the iterator
885// and writes results into the callback function.
886func (h *DuckHandler) resultForDefaultIter(ctx *sql.Context, schema sql.Schema, iter sql.RowIter, callback func(*Result) error, resultFields []pgproto3.FieldDescription) (r *Result, processedAtLeastOneBatch bool, returnErr error) {
887 defer trace.StartRegion(ctx, "DuckHandler.resultForDefaultIter").End()
888
889 eg, ctx := ctx.NewErrgroup()
890
891 var rowChan = make(chan sql.Row, 512)
892
893 pan2err := func() {
894 if recoveredPanic := recover(); recoveredPanic != nil {
895 returnErr = fmt.Errorf("DoltgresHandler caught panic: %v", recoveredPanic)
896 }
897 }
898
899 wg := sync.WaitGroup{}
900 wg.Add(2)

Callers 2

resultForMax1RowIterMethod · 0.95
resultForDefaultIterMethod · 0.95

Calls 2

SQLMethod · 0.80
EncodeMethod · 0.45

Tested by

no test coverage detected