55 "testing"
66 "time"
77
8+ "github.com/samber/lo"
89 "github.com/apache/arrow-go/v18/arrow"
910 "github.com/apache/arrow-go/v18/arrow/array"
1011 "github.com/apache/arrow-go/v18/arrow/memory"
@@ -177,55 +178,58 @@ func (s *WriterTestSuite) testDeleteRecordBasic(ctx context.Context, t *testing.
177178 r .NoErrorf (err , "failed to read" )
178179 r .EqualValuesf (1 , TotalRows (records ), "unexpected amount of items" )
179180
180- r .NoError (s .plugin .WriteAll (ctx , s .toMessageBatch (table , 1 )), "failed to delete record" )
181+ r .NoError (s .plugin .WriteAll (ctx , s .toMessageBatch (table , toDeleteValue ( table , 1 ) )), "failed to delete record" )
181182
182183 records , err = s .plugin .readAll (ctx , table )
183184 r .NoErrorf (err , "failed to read after delete with no match" )
184185 r .EqualValuesf (1 , TotalRows (records ), "unexpected amount of items after delete with no match" )
185186 r .Emptyf (RecordsDiff (table .ToArrowSchema (), records , []arrow.Record {record1 }), "record differs after delete with no match" )
186187
187- r .NoError (s .plugin .WriteAll (ctx , s .toMessageBatch (table , 0 )), "failed to delete record" )
188+ r .NoError (s .plugin .WriteAll (ctx , s .toMessageBatch (table , toDeleteValue ( table , 0 ) )), "failed to delete record" )
188189
189190 records , err = s .plugin .readAll (ctx , table )
190191 r .NoErrorf (err , "failed to read after delete with match" )
191192 r .EqualValuesf (0 , TotalRows (records ), "unexpected amount of items after delete with match" )
192193}
193194
194- func (s * WriterTestSuite ) toMessageBatch (table * schema.Table , val int64 ) []message.WriteMessage {
195- batchSize := 1
196- if s .tests .DeleteRecordBatchSize > 0 {
197- batchSize = s .tests .DeleteRecordBatchSize
198- }
199-
200- messages := make ([]message.WriteMessage , batchSize )
201-
195+ func toDeleteValue (table * schema.Table , val int64 ) * arrow.Record {
202196 builder := array .NewRecordBuilder (memory .DefaultAllocator , (& schema.Table {
203197 Name : table .Name ,
204198 Columns : schema.ColumnList {
205199 schema.Column {Name : "id" , Type : arrow .PrimitiveTypes .Int64 },
206200 },
207201 }).ToArrowSchema ())
208202 builder .Field (0 ).(* array.Int64Builder ).Append (val )
209- deleteValue := builder .NewRecord ()
203+ return lo .ToPtr (builder .NewRecord ())
204+ }
205+
206+ func (s * WriterTestSuite ) toMessageBatch (table * schema.Table , deleteValue * arrow.Record ) []message.WriteMessage {
207+ batchSize := 1
208+ if s .tests .DeleteRecordBatchSize > 0 {
209+ batchSize = s .tests .DeleteRecordBatchSize
210+ }
211+
212+ messages := make ([]message.WriteMessage , batchSize )
210213
211214 for i , _ := range messages {
212- messages [ i ] = & message.WriteDeleteRecord {
213- DeleteRecord : message. DeleteRecord {
214- TableName : table . Name ,
215- WhereClause : message. PredicateGroups {
216- {
217- GroupingType : "AND" ,
218- Predicates : []message. Predicate {
219- {
220- Operator : "eq" ,
221- Column : "id " ,
222- Record : deleteValue ,
223- } ,
215+ record := message.DeleteRecord {
216+ TableName : table . Name ,
217+ }
218+ if deleteValue != nil {
219+ record . WhereClause = message. PredicateGroups {
220+ {
221+ GroupingType : "AND" ,
222+ Predicates : []message. Predicate {
223+ {
224+ Operator : "eq " ,
225+ Column : "id" ,
226+ Record : * deleteValue ,
224227 },
225228 },
226229 },
227- },
230+ }
228231 }
232+ messages [i ] = & message.WriteDeleteRecord {DeleteRecord : record }
229233 }
230234
231235 return messages
@@ -259,11 +263,7 @@ func (s *WriterTestSuite) testDeleteAllRecords(ctx context.Context, t *testing.T
259263 r .NoErrorf (err , "failed to read" )
260264 r .EqualValuesf (1 , TotalRows (records ), "unexpected amount of items" )
261265
262- r .NoErrorf (s .plugin .writeOne (ctx , & message.WriteDeleteRecord {
263- DeleteRecord : message.DeleteRecord {
264- TableName : table .Name ,
265- },
266- }), "failed to delete records" )
266+ r .NoError (s .plugin .WriteAll (ctx , s .toMessageBatch (table , nil )), "failed to delete record" )
267267
268268 records , err = s .plugin .readAll (ctx , table )
269269 r .NoErrorf (err , "failed to read after delete all records" )
@@ -276,11 +276,7 @@ func (s *WriterTestSuite) testDeleteAllRecords(ctx context.Context, t *testing.T
276276
277277 r .NoErrorf (s .plugin .writeOne (ctx , & message.WriteInsert {Record : record2 }), "failed to insert second record" )
278278
279- r .NoErrorf (s .plugin .writeOne (ctx , & message.WriteDeleteRecord {
280- DeleteRecord : message.DeleteRecord {
281- TableName : table .Name ,
282- },
283- }), "failed to delete records second time" )
279+ r .NoError (s .plugin .WriteAll (ctx , s .toMessageBatch (table , nil )), "failed to delete record" )
284280
285281 records , err = s .plugin .readAll (ctx , table )
286282 r .NoErrorf (err , "failed to read second time" )
0 commit comments