示例#1
0
func protoFromResult(r Result) driver.Response_Result {
	drr := driver.Response_Result{}
	if r.PErr != nil {
		drr.Error = proto.String(r.PErr.String())
	}
	switch r.Type {
	case parser.DDL:
		drr.Union = &driver.Response_Result_DDL_{
			DDL: &driver.Response_Result_DDL{},
		}
	case parser.RowsAffected:
		drr.Union = &driver.Response_Result_RowsAffected{
			RowsAffected: uint32(r.RowsAffected),
		}
	case parser.Rows:
		rows := &driver.Response_Result_Rows{
			Columns: make([]*driver.Response_Result_Rows_Column, 0, len(r.Columns)),
			Rows:    make([]driver.Response_Result_Rows_Row, 0, len(r.Rows)),
		}
		for _, col := range r.Columns {
			rows.Columns = append(rows.Columns, protoFromColumn(col))
		}
		for _, row := range r.Rows {
			rows.Rows = append(rows.Rows, protoFromRow(row))
		}
		drr.Union = &driver.Response_Result_Rows_{
			Rows: rows,
		}
	}
	return drr
}