From e2e1ca02790b6f50cc96b7ab60a99d56d4be9a89 Mon Sep 17 00:00:00 2001 From: Stephanie You Date: Fri, 20 Oct 2023 14:37:29 -0700 Subject: [PATCH] add table name to import table error --- go/cmd/dolt/commands/tblcmds/import.go | 8 ++++---- go/libraries/doltcore/mvdata/engine_table_writer.go | 4 ++-- integration-tests/bats/import-append-tables.bats | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go/cmd/dolt/commands/tblcmds/import.go b/go/cmd/dolt/commands/tblcmds/import.go index b21ecd7038..6b562012a5 100644 --- a/go/cmd/dolt/commands/tblcmds/import.go +++ b/go/cmd/dolt/commands/tblcmds/import.go @@ -513,7 +513,7 @@ func newImportSqlEngineMover(ctx context.Context, dEnv *env.DoltEnv, rdSchema sc return mv, nil } -type badRowFn func(row sql.Row, rowSchema sql.PrimaryKeySchema, err error) (quit bool) +type badRowFn func(row sql.Row, rowSchema sql.PrimaryKeySchema, tableName string, err error) (quit bool) func move(ctx context.Context, rd table.SqlRowReader, wr *mvdata.SqlEngineTableWriter, options *importOptions) (int64, error) { g, ctx := errgroup.WithContext(ctx) @@ -524,7 +524,7 @@ func move(ctx context.Context, rd table.SqlRowReader, wr *mvdata.SqlEngineTableW var printBadRowsStarted bool var badCount int64 - badRowCB := func(row sql.Row, rowSchema sql.PrimaryKeySchema, err error) (quit bool) { + badRowCB := func(row sql.Row, rowSchema sql.PrimaryKeySchema, tableName string, err error) (quit bool) { // record the first error encountered unless asked to ignore it if row != nil && rowErr == nil && !options.contOnErr { var sqlRowWithColumns []string @@ -533,7 +533,7 @@ func move(ctx context.Context, rd table.SqlRowReader, wr *mvdata.SqlEngineTableW } formattedSqlRow := strings.Join(sqlRowWithColumns, "") - rowErr = fmt.Errorf("A bad row was encountered\n%s", formattedSqlRow) + rowErr = fmt.Errorf("A bad row was encountered inserting into table %s:\n%s", tableName, formattedSqlRow) if wie, ok := err.(sql.WrappedInsertError); ok { if e, ok := wie.Cause.(*errors.Error); ok { if ue, ok := e.Cause().(sql.UniqueKeyError); ok { @@ -624,7 +624,7 @@ func moveRows( if err != nil { if table.IsBadRow(err) { - quit := badRowCb(sqlRow, rdSqlSch, err) + quit := badRowCb(sqlRow, rdSqlSch, options.destTableName, err) if quit { return err } diff --git a/go/libraries/doltcore/mvdata/engine_table_writer.go b/go/libraries/doltcore/mvdata/engine_table_writer.go index c01f9a1df2..a247e82b08 100644 --- a/go/libraries/doltcore/mvdata/engine_table_writer.go +++ b/go/libraries/doltcore/mvdata/engine_table_writer.go @@ -128,7 +128,7 @@ func NewSqlEngineTableWriter(ctx context.Context, dEnv *env.DoltEnv, createTable }, nil } -func (s *SqlEngineTableWriter) WriteRows(ctx context.Context, inputChannel chan sql.Row, badRowCb func(row sql.Row, rowSchema sql.PrimaryKeySchema, err error) bool) (err error) { +func (s *SqlEngineTableWriter) WriteRows(ctx context.Context, inputChannel chan sql.Row, badRowCb func(row sql.Row, rowSchema sql.PrimaryKeySchema, tableName string, err error) bool) (err error) { err = s.forceDropTableIfNeeded() if err != nil { return err @@ -219,7 +219,7 @@ func (s *SqlEngineTableWriter) WriteRows(ctx context.Context, inputChannel chan offendingRow = n.OffendingRow } - quit := badRowCb(offendingRow, s.tableSchema, err) + quit := badRowCb(offendingRow, s.tableSchema, s.tableName, err) if quit { return err } diff --git a/integration-tests/bats/import-append-tables.bats b/integration-tests/bats/import-append-tables.bats index 41895ea8c1..21a04f06fc 100644 --- a/integration-tests/bats/import-append-tables.bats +++ b/integration-tests/bats/import-append-tables.bats @@ -102,7 +102,7 @@ CSV [ "${#lines[@]}" -eq 6 ] } -@test "import-append-tables: import error message lists columns with row" { +@test "import-append-tables: import error message contains useful information" { dolt sql -q "CREATE TABLE shirts (name VARCHAR(40), size ENUM('x-small', 'small', 'medium', 'large', 'x-large'), color ENUM('red', 'blue'));" run dolt table import -a shirts <