Skip to content

Commit

Permalink
Fix a bug in REPLACE query. ([GitHub #79](#79))
Browse files Browse the repository at this point in the history
  • Loading branch information
mithrandie committed Jun 30, 2022
1 parent 983ca8d commit e9f552a
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/query/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ func setup() {
_ = copyfile(filepath.Join(TestDir, "rename_column.csv"), filepath.Join(TestDataDir, "table1.csv"))
_ = copyfile(filepath.Join(TestDir, "updated_file_1.csv"), filepath.Join(TestDataDir, "table1.csv"))
_ = copyfile(filepath.Join(TestDir, "dup_name.csv"), filepath.Join(TestDataDir, "dup_name.csv"))
_ = copyfile(filepath.Join(TestDir, "table_empty.csv"), filepath.Join(TestDataDir, "table_empty.csv"))

_ = copyfile(filepath.Join(TestDir, "table3.tsv"), filepath.Join(TestDataDir, "table3.tsv"))
_ = copyfile(filepath.Join(TestDir, "dup_name.tsv"), filepath.Join(TestDataDir, "dup_name.tsv"))
Expand Down
51 changes: 51 additions & 0 deletions lib/query/query_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2426,6 +2426,57 @@ var replaceTests = []struct {
},
}),
},
{
Name: "Replace Query to Empty Table",
Query: parser.ReplaceQuery{
Table: parser.Table{Object: parser.Identifier{Literal: "table_empty"}},
Fields: []parser.QueryExpression{
parser.FieldReference{Column: parser.Identifier{Literal: "column1"}},
parser.FieldReference{Column: parser.Identifier{Literal: "column2"}},
},
Keys: []parser.QueryExpression{
parser.FieldReference{Column: parser.Identifier{Literal: "column1"}},
},
ValuesList: []parser.QueryExpression{
parser.RowValue{
Value: parser.ValueList{
Values: []parser.QueryExpression{
parser.NewIntegerValueFromString("4"),
parser.NewStringValue("str4"),
},
},
},
},
},
ResultFile: &FileInfo{
Path: GetTestFilePath("table_empty.csv"),
Delimiter: ',',
NoHeader: false,
Encoding: text.UTF8,
LineBreak: text.LF,
ForUpdate: true,
},
UpdateCount: 1,
ViewCache: GenerateViewMap([]*View{
{
FileInfo: &FileInfo{
Path: GetTestFilePath("table_empty.csv"),
Delimiter: ',',
NoHeader: false,
Encoding: text.UTF8,
LineBreak: text.LF,
ForUpdate: true,
},
Header: NewHeader("table_empty", []string{"column1", "column2"}),
RecordSet: []Record{
NewRecord([]value.Primary{
value.NewInteger(4),
value.NewString("str4"),
}),
},
},
}),
},
{
Name: "Replace Query For Temporary View",
Query: parser.ReplaceQuery{
Expand Down
2 changes: 1 addition & 1 deletion lib/query/view.go
Original file line number Diff line number Diff line change
Expand Up @@ -2222,7 +2222,7 @@ func (view *View) replace(ctx context.Context, flags *cmd.Flags, fields []parser
return 0, err
}

sortValuesInInsertRecords := make([]SortValues, view.RecordLen())
sortValuesInInsertRecords := make([]SortValues, len(records))
if err := NewGoroutineTaskManager(len(records), -1, flags.CPU).Run(ctx, func(index int) error {
sortValues := make(SortValues, len(keyIndices))
for j, idx := range keyIndices {
Expand Down
1 change: 1 addition & 0 deletions testdata/csv/table_empty.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
column1,column2

0 comments on commit e9f552a

Please sign in to comment.