func appendResult(qr, innerqr *mproto.QueryResult) { if qr.Fields == nil { qr.Fields = innerqr.Fields } qr.RowsAffected += innerqr.RowsAffected if innerqr.InsertId != 0 { qr.InsertId = innerqr.InsertId } qr.Rows = append(qr.Rows, innerqr.Rows...) }
func testStreamExecuteKeyspaceIds(t *testing.T, conn *vtgateconn.VTGateConn) { ctx := context.Background() execCase := execMap["request1"] packets, errFunc := conn.StreamExecuteKeyspaceIds(ctx, execCase.keyspaceIdQuery.Sql, execCase.keyspaceIdQuery.Keyspace, execCase.keyspaceIdQuery.KeyspaceIds, execCase.keyspaceIdQuery.BindVariables, execCase.keyspaceIdQuery.TabletType) var qr mproto.QueryResult for packet := range packets { if len(packet.Fields) != 0 { qr.Fields = packet.Fields } if len(packet.Rows) != 0 { qr.Rows = append(qr.Rows, packet.Rows...) } } wantResult := *execCase.reply.Result wantResult.RowsAffected = 0 wantResult.InsertId = 0 if !reflect.DeepEqual(qr, wantResult) { t.Errorf("Unexpected result from Execute: got %+v want %+v", qr, wantResult) } err := errFunc() if err != nil { t.Error(err) } packets, errFunc = conn.StreamExecuteKeyspaceIds(ctx, "none", "", []key.KeyspaceId{}, nil, "") for packet := range packets { t.Errorf("packet: %+v, want none", packet) } err = errFunc() want := "no match for: none" if err == nil || !strings.Contains(err.Error(), want) { t.Errorf("none request: %v, want %v", err, want) } execCase = execMap["errorRequst"] packets, errFunc = conn.StreamExecuteKeyspaceIds(ctx, execCase.keyspaceIdQuery.Sql, execCase.keyspaceIdQuery.Keyspace, execCase.keyspaceIdQuery.KeyspaceIds, execCase.keyspaceIdQuery.BindVariables, execCase.keyspaceIdQuery.TabletType) for packet := range packets { t.Errorf("packet: %+v, want none", packet) } err = errFunc() want = "app error" if err == nil || !strings.Contains(err.Error(), want) { t.Errorf("errorRequst: %v, want %v", err, want) } }