rowIterToRecord converts given rows with schema provided to rowIter containing array of pgtypes.RecordValue.
(ctx *sql.Context, rowIter sql.RowIter, sch sql.Schema)
| 307 | |
| 308 | // rowIterToRecord converts given rows with schema provided to rowIter containing array of pgtypes.RecordValue. |
| 309 | func rowIterToRecord(ctx *sql.Context, rowIter sql.RowIter, sch sql.Schema) (sql.RowIter, error) { |
| 310 | rows, err := sql.RowIterToRows(ctx, rowIter) |
| 311 | if err != nil { |
| 312 | return nil, err |
| 313 | } |
| 314 | var newRows = make([]sql.Row, len(rows)) |
| 315 | for i, row := range rows { |
| 316 | if len(row) != len(sch) { |
| 317 | return nil, errors.New("number of row values does not match number of schema columns") |
| 318 | } |
| 319 | var r = make([]pgtypes.RecordValue, len(sch)) |
| 320 | for j, col := range sch { |
| 321 | r[j] = pgtypes.RecordValue{ |
| 322 | Type: col.Type.(*pgtypes.DoltgresType), |
| 323 | Value: row[j], |
| 324 | } |
| 325 | } |
| 326 | newRows[i] = sql.Row{r} |
| 327 | } |
| 328 | return sql.RowsToRowIter(newRows...), nil |
| 329 | } |
| 330 | |
| 331 | // convertToVitess is set by init and is used to avoid import cycles |
| 332 | var convertToVitess func(postgresStmt parser.Statement) (sqlparser.Statement, error) |