diff --git a/exp/select_clauses.go b/exp/select_clauses.go index f5443caf..04cfc14b 100644 --- a/exp/select_clauses.go +++ b/exp/select_clauses.go @@ -112,7 +112,7 @@ func (c *selectClauses) clone() *selectClauses { selectColumns: c.selectColumns, distinct: c.distinct, from: c.from, - joins: c.joins, + joins: c.joins[0:len(c.joins):len(c.joins)], where: c.where, alias: c.alias, groupBy: c.groupBy, diff --git a/exp/select_clauses_test.go b/exp/select_clauses_test.go index f5e0be1f..c0573959 100644 --- a/exp/select_clauses_test.go +++ b/exp/select_clauses_test.go @@ -160,21 +160,33 @@ func (scs *selectClausesSuite) TestJoins() { func (scs *selectClausesSuite) TestJoinsAppend() { jc := NewConditionedJoinExpression( LeftJoinType, - NewIdentifierExpression("", "test", ""), + NewIdentifierExpression("", "test1", ""), nil, ) jc2 := NewUnConditionedJoinExpression( LeftJoinType, - NewIdentifierExpression("", "test", ""), + NewIdentifierExpression("", "test2", ""), + ) + jc3 := NewUnConditionedJoinExpression( + InnerJoinType, + NewIdentifierExpression("", "test3", ""), ) c := NewSelectClauses() c2 := c.JoinsAppend(jc) c3 := c2.JoinsAppend(jc2) + c4 := c3.JoinsAppend(jc2) // len(c4.joins) == 3, cap(c4.joins) == 4 + // next two appends shouldn't affect one another + c5 := c4.JoinsAppend(jc2) + c6 := c4.JoinsAppend(jc3) + scs.Nil(c.Joins()) scs.Equal(JoinExpressions{jc}, c2.Joins()) scs.Equal(JoinExpressions{jc, jc2}, c3.Joins()) + scs.Equal(JoinExpressions{jc, jc2, jc2}, c4.Joins()) + scs.Equal(JoinExpressions{jc, jc2, jc2, jc2}, c5.Joins()) + scs.Equal(JoinExpressions{jc, jc2, jc2, jc3}, c6.Joins()) } func (scs *selectClausesSuite) TestWhere() {