From a02ee539363e38019735a61a5cc37c47610f75da Mon Sep 17 00:00:00 2001 From: Stephanie You Date: Fri, 20 Oct 2023 16:37:52 -0700 Subject: [PATCH] fix panic for mismatched column schema --- go/cmd/dolt/commands/tblcmds/import.go | 6 +++++- integration-tests/bats/default-values.bats | 4 +++- .../bats/import-update-tables.bats | 20 +++++++++++++------ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/go/cmd/dolt/commands/tblcmds/import.go b/go/cmd/dolt/commands/tblcmds/import.go index bf5f6e3869..3263fd45c2 100644 --- a/go/cmd/dolt/commands/tblcmds/import.go +++ b/go/cmd/dolt/commands/tblcmds/import.go @@ -529,7 +529,11 @@ func move(ctx context.Context, rd table.SqlRowReader, wr *mvdata.SqlEngineTableW if row != nil && rowErr == nil && !options.contOnErr { var sqlRowWithColumns []string for i, val := range row { - sqlRowWithColumns = append(sqlRowWithColumns, fmt.Sprintf("\t%s: %v\n", rowSchema.Schema[i].Name, val)) + columnName := "" + if len(rowSchema.Schema) > i { + columnName = rowSchema.Schema[i].Name + } + sqlRowWithColumns = append(sqlRowWithColumns, fmt.Sprintf("\t%s: %v\n", columnName, val)) } formattedSqlRow := strings.Join(sqlRowWithColumns, "") diff --git a/integration-tests/bats/default-values.bats b/integration-tests/bats/default-values.bats index abf661d600..93169c172a 100644 --- a/integration-tests/bats/default-values.bats +++ b/integration-tests/bats/default-values.bats @@ -486,7 +486,9 @@ DELIM run dolt table import -u test bad-update.csv [ "$status" -eq "1" ] [[ "$output" =~ "bad row" ]] || false - [[ "$output" =~ "[5,,5]" ]] || false + [[ "$output" =~ "pk: 5" ]] || false + [[ "$output" =~ "v1: " ]] || false + [[ "$output" =~ "v2: 5" ]] || false [[ "$output" =~ "column name 'v1' is non-nullable but attempted to set a value of null" ]] || false } diff --git a/integration-tests/bats/import-update-tables.bats b/integration-tests/bats/import-update-tables.bats index 7d482f530a..8b4c4ce967 100644 --- a/integration-tests/bats/import-update-tables.bats +++ b/integration-tests/bats/import-update-tables.bats @@ -281,7 +281,8 @@ DELIM [ "$status" -eq 1 ] [[ "$output" =~ "An error occurred while moving data" ]] || false [[ "$output" =~ "A bad row was encountered" ]] || false - [[ "$output" =~ "[1,123456]" ]] || false + [[ "$output" =~ "pk: 1" ]] || false + [[ "$output" =~ "c: 123456" ]] || false [[ "$output" =~ 'too large for column' ]] || false } @@ -314,9 +315,11 @@ DELIM dolt sql < check-constraint-sch.sql run dolt table import -u persons persons.csv [ "$status" -eq 1 ] - [[ "$output" =~ "A bad row was encountered" ]] || false - [[ "$output" =~ "[2,little,doe,10]" ]] || false + [[ "$output" =~ "ID: 2" ]] || false + [[ "$output" =~ "LastName: little" ]] || false + [[ "$output" =~ "FirstName: doe" ]] || false + [[ "$output" =~ "Age: 10" ]] || false run dolt table import -u --continue persons persons.csv [ "$status" -eq 0 ] @@ -404,7 +407,7 @@ DELIM run dolt table import -u test bad-updates.csv [ "$status" -eq 1 ] [[ "$output" =~ "A bad row was encountered" ]] || false - [[ "$output" =~ "[100]" ]] || false + [[ "$output" =~ "pk: 100" ]] || false run dolt table import -u --continue test bad-updates.csv [ "$status" -eq 0 ] @@ -806,7 +809,9 @@ DELIM run dolt table import -u objects objects-bad.csv [ "$status" -eq 1 ] [[ "$output" =~ "A bad row was encountered" ]] || false - [[ "$output" =~ "[6,bottle,gray]" ]] || false + [[ "$output" =~ "id: 6" ]] || false + [[ "$output" =~ "name: bottle" ]] || false + [[ "$output" =~ "color: gray" ]] || false [[ "$output" =~ "cannot add or update a child row - Foreign key violation" ]] || false run dolt table import -u objects objects-bad.csv --continue @@ -886,7 +891,10 @@ DELIM run dolt table import -u objects multi-key-bad.csv [ "$status" -eq 1 ] [[ "$output" =~ "A bad row was encountered" ]] || false - [[ "$output" =~ "[6,bottle,blue,steel]" ]] || false + [[ "$output" =~ "id: 6" ]] || false + [[ "$output" =~ "name: bottle" ]] || false + [[ "$output" =~ "color: blue" ]] || false + [[ "$output" =~ "material: steel" ]] || false [[ "$output" =~ "cannot add or update a child row - Foreign key violation" ]] || false run dolt table import -u objects multi-key-bad.csv --continue