@@ -658,6 +658,50 @@ func TestBuildTwoColumnUnionParts(t *testing.T) {
658658 require .Equal (t , []interface {}{3 , 17 , 3 , 103 , 103 , 117 }, explodedArgs )
659659}
660660
661+ func TestBuildRangeInsertQueryTwoColumnGuards (t * testing.T ) {
662+ databaseName := "mydb"
663+ originalTableName := "tbl"
664+ ghostTableName := "ghost"
665+ sharedColumnsListing := "id, name, position"
666+ uniqueKey := "name_position_uidx"
667+ uniqueKeyColumns := NewColumnList ([]string {"name" , "position" })
668+ validValues := []string {"@v1" , "@v2" }
669+ validArgs := []interface {}{3 , 17 }
670+
671+ call := func (rangeStartValues , rangeEndValues []string , rangeStartArgs , rangeEndArgs []interface {}) error {
672+ _ , _ , err := buildRangeInsertQueryTwoColumn (
673+ databaseName , originalTableName , ghostTableName ,
674+ sharedColumnsListing , sharedColumnsListing ,
675+ uniqueKey , uniqueKeyColumns ,
676+ rangeStartValues , rangeEndValues ,
677+ rangeStartArgs , rangeEndArgs ,
678+ GreaterThanOrEqualsComparisonSign , "" ,
679+ )
680+ return err
681+ }
682+
683+ {
684+ // rangeStartValues length mismatch.
685+ err := call ([]string {"@v1" }, validValues , validArgs , validArgs )
686+ require .ErrorContains (t , err , "got 2 columns but 1 rangeStartValues" )
687+ }
688+ {
689+ // rangeEndValues length mismatch.
690+ err := call (validValues , []string {"@v1" , "@v2" , "@v3" }, validArgs , validArgs )
691+ require .ErrorContains (t , err , "got 2 columns but 3 rangeEndValues" )
692+ }
693+ {
694+ // rangeStartArgs length mismatch.
695+ err := call (validValues , validValues , []interface {}{3 }, validArgs )
696+ require .ErrorContains (t , err , "got 2 columns but 1 rangeStartArgs" )
697+ }
698+ {
699+ // rangeEndArgs length mismatch.
700+ err := call (validValues , validValues , validArgs , []interface {}{})
701+ require .ErrorContains (t , err , "got 2 columns but 0 rangeEndArgs" )
702+ }
703+ }
704+
661705func TestBuildUniqueKeyMinValuesPreparedQuery (t * testing.T ) {
662706 databaseName := "mydb"
663707 originalTableName := "tbl"
0 commit comments