diff --git a/util/sqlgen/column_value.go b/util/sqlgen/column_value.go
index 63ca69dee5051cc0c18e8e377c8aee5b10e98813..a0d6fd47888c59d85f65f8aca7524ebb0c9475c6 100644
--- a/util/sqlgen/column_value.go
+++ b/util/sqlgen/column_value.go
@@ -53,8 +53,8 @@ type ColumnValues struct {
 	hash         string
 }
 
-// NewColumnValues returns an array of ColumnValue
-func NewColumnValues(values ...ColumnValue) *ColumnValues {
+// JoinColumnValues returns an array of ColumnValue
+func JoinColumnValues(values ...ColumnValue) *ColumnValues {
 	return &ColumnValues{ColumnValues: values}
 }
 
diff --git a/util/sqlgen/column_value_test.go b/util/sqlgen/column_value_test.go
index fe0107906fe5eba7a8caa60d6394f5aad68a5959..091f9ba0e812becd9af50a8649f740f91b0574b8 100644
--- a/util/sqlgen/column_value_test.go
+++ b/util/sqlgen/column_value_test.go
@@ -21,7 +21,7 @@ func TestColumnValueHash(t *testing.T) {
 func TestColumnValuesHash(t *testing.T) {
 	var s, e string
 
-	c := NewColumnValues(
+	c := JoinColumnValues(
 		ColumnValue{Column: Column{Name: "id"}, Operator: "=", Value: NewValue(1)},
 		ColumnValue{Column: Column{Name: "id"}, Operator: "=", Value: NewValue(2)},
 	)
@@ -61,7 +61,7 @@ func TestColumnValue(t *testing.T) {
 func TestColumnValues(t *testing.T) {
 	var s, e string
 
-	cvs := NewColumnValues(
+	cvs := JoinColumnValues(
 		ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(8)},
 		ColumnValue{Column: Column{Name: "other.id"}, Operator: "<", Value: NewValue(&Raw{Value: "100"})},
 		ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("Haruki Murakami")},
@@ -104,9 +104,9 @@ func BenchmarkColumnValueCompileNoCache(b *testing.B) {
 	}
 }
 
-func BenchmarkNewColumnValues(b *testing.B) {
+func BenchmarkJoinColumnValues(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		_ = NewColumnValues(
+		_ = JoinColumnValues(
 			ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(8)},
 			ColumnValue{Column: Column{Name: "other.id"}, Operator: "<", Value: NewValue(Raw{Value: "100"})},
 			ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("Haruki Murakami")},
@@ -117,7 +117,7 @@ func BenchmarkNewColumnValues(b *testing.B) {
 }
 
 func BenchmarkColumnValuesHash(b *testing.B) {
-	cvs := NewColumnValues(
+	cvs := JoinColumnValues(
 		ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(8)},
 		ColumnValue{Column: Column{Name: "other.id"}, Operator: "<", Value: NewValue(Raw{Value: "100"})},
 		ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("Haruki Murakami")},
@@ -130,7 +130,7 @@ func BenchmarkColumnValuesHash(b *testing.B) {
 }
 
 func BenchmarkColumnValuesCompile(b *testing.B) {
-	cvs := NewColumnValues(
+	cvs := JoinColumnValues(
 		ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(8)},
 		ColumnValue{Column: Column{Name: "other.id"}, Operator: "<", Value: NewValue(Raw{Value: "100"})},
 		ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("Haruki Murakami")},
@@ -144,7 +144,7 @@ func BenchmarkColumnValuesCompile(b *testing.B) {
 
 func BenchmarkColumnValuesCompileNoCache(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		cvs := NewColumnValues(
+		cvs := JoinColumnValues(
 			ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(8)},
 			ColumnValue{Column: Column{Name: "other.id"}, Operator: "<", Value: NewValue(Raw{Value: "100"})},
 			ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("Haruki Murakami")},
diff --git a/util/sqlgen/columns.go b/util/sqlgen/columns.go
index efe1a397c900dc0e28134db728061d2fbe850917..19b47739e0fbb8cb64045c9b83ad7126875b7f9b 100644
--- a/util/sqlgen/columns.go
+++ b/util/sqlgen/columns.go
@@ -23,8 +23,8 @@ func (c *Columns) Hash() string {
 	return c.hash
 }
 
-// NewColumns creates and returns an array of Column.
-func NewColumns(columns ...Column) *Columns {
+// JoinColumns creates and returns an array of Column.
+func JoinColumns(columns ...Column) *Columns {
 	return &Columns{Columns: columns}
 }
 
diff --git a/util/sqlgen/columns_test.go b/util/sqlgen/columns_test.go
index 77b093ddc20c25c92bee5b988ff0359f87e918f5..03f4fdecb7454de2e946ca1a0932b3d88322420f 100644
--- a/util/sqlgen/columns_test.go
+++ b/util/sqlgen/columns_test.go
@@ -7,7 +7,7 @@ import (
 func TestColumns(t *testing.T) {
 	var s, e string
 
-	columns := NewColumns(
+	columns := JoinColumns(
 		Column{Name: "id"},
 		Column{Name: "customer"},
 		Column{Name: "service_id"},
@@ -23,9 +23,9 @@ func TestColumns(t *testing.T) {
 	}
 }
 
-func BenchmarkNewColumns(b *testing.B) {
+func BenchmarkJoinColumns(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		_ = NewColumns(
+		_ = JoinColumns(
 			Column{Name: "a"},
 			Column{Name: "b"},
 			Column{Name: "c"},
@@ -34,7 +34,7 @@ func BenchmarkNewColumns(b *testing.B) {
 }
 
 func BenchmarkColumnsHash(b *testing.B) {
-	c := NewColumns(
+	c := JoinColumns(
 		Column{Name: "id"},
 		Column{Name: "customer"},
 		Column{Name: "service_id"},
@@ -47,7 +47,7 @@ func BenchmarkColumnsHash(b *testing.B) {
 }
 
 func BenchmarkColumnsCompile(b *testing.B) {
-	c := NewColumns(
+	c := JoinColumns(
 		Column{Name: "id"},
 		Column{Name: "customer"},
 		Column{Name: "service_id"},
@@ -61,7 +61,7 @@ func BenchmarkColumnsCompile(b *testing.B) {
 
 func BenchmarkColumnsCompileNoCache(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		c := NewColumns(
+		c := JoinColumns(
 			Column{Name: "id"},
 			Column{Name: "customer"},
 			Column{Name: "service_id"},
diff --git a/util/sqlgen/group_by.go b/util/sqlgen/group_by.go
index 595cfeb4cce464557a30fde986b218a5c2dd718c..2f849d56e6df319262cef9fdba4587fced9cdec6 100644
--- a/util/sqlgen/group_by.go
+++ b/util/sqlgen/group_by.go
@@ -22,9 +22,9 @@ func (g *GroupBy) Hash() string {
 	return g.hash
 }
 
-// NewGroupBy creates and returns a GroupBy with the given column.
-func NewGroupBy(columns ...Column) *GroupBy {
-	return &GroupBy{Columns: NewColumns(columns...)}
+// GroupByColumns creates and returns a GroupBy with the given column.
+func GroupByColumns(columns ...Column) *GroupBy {
+	return &GroupBy{Columns: JoinColumns(columns...)}
 }
 
 // Compile transforms the GroupBy into an equivalent SQL representation.
diff --git a/util/sqlgen/group_by_test.go b/util/sqlgen/group_by_test.go
index 08ddff5de8b9c8207b5d210f05d4bd7de0dc8d76..e43b284035d91cd95451e49c49cacdcf9a1f33bc 100644
--- a/util/sqlgen/group_by_test.go
+++ b/util/sqlgen/group_by_test.go
@@ -7,7 +7,7 @@ import (
 func TestGroupBy(t *testing.T) {
 	var s, e string
 
-	columns := NewGroupBy(
+	columns := GroupByColumns(
 		Column{Name: "id"},
 		Column{Name: "customer"},
 		Column{Name: "service_id"},
@@ -23,9 +23,9 @@ func TestGroupBy(t *testing.T) {
 	}
 }
 
-func BenchmarkNewGroupBy(b *testing.B) {
+func BenchmarkGroupByColumns(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		_ = NewGroupBy(
+		_ = GroupByColumns(
 			Column{Name: "a"},
 			Column{Name: "b"},
 			Column{Name: "c"},
@@ -34,7 +34,7 @@ func BenchmarkNewGroupBy(b *testing.B) {
 }
 
 func BenchmarkGroupByHash(b *testing.B) {
-	c := NewGroupBy(
+	c := GroupByColumns(
 		Column{Name: "id"},
 		Column{Name: "customer"},
 		Column{Name: "service_id"},
@@ -47,7 +47,7 @@ func BenchmarkGroupByHash(b *testing.B) {
 }
 
 func BenchmarkGroupByCompile(b *testing.B) {
-	c := NewGroupBy(
+	c := GroupByColumns(
 		Column{Name: "id"},
 		Column{Name: "customer"},
 		Column{Name: "service_id"},
@@ -61,7 +61,7 @@ func BenchmarkGroupByCompile(b *testing.B) {
 
 func BenchmarkGroupByCompileNoCache(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		c := NewGroupBy(
+		c := GroupByColumns(
 			Column{Name: "id"},
 			Column{Name: "customer"},
 			Column{Name: "service_id"},
diff --git a/util/sqlgen/order_by.go b/util/sqlgen/order_by.go
index 3c8ccedf1948ec835660436b381633da1bf8e0f1..5606cddc16cce6a5730070824ca2f35736d581c5 100644
--- a/util/sqlgen/order_by.go
+++ b/util/sqlgen/order_by.go
@@ -43,13 +43,13 @@ type orderByT struct {
 	SortColumns string
 }
 
-// NewSortColumns creates and returns an array of column-order relations.
-func NewSortColumns(values ...SortColumn) *SortColumns {
+// JoinSortColumns creates and returns an array of column-order relations.
+func JoinSortColumns(values ...SortColumn) *SortColumns {
 	return &SortColumns{Columns: values}
 }
 
-// NewOrderBy creates an returns an OrderBy using the given SortColumns.
-func NewOrderBy(sc *SortColumns) *OrderBy {
+// JoinWithOrderBy creates an returns an OrderBy using the given SortColumns.
+func JoinWithOrderBy(sc *SortColumns) *OrderBy {
 	return &OrderBy{SortColumns: sc}
 }
 
diff --git a/util/sqlgen/order_by_test.go b/util/sqlgen/order_by_test.go
index 6f6732c4ab7051487a1f76d4fef11de57590f57f..3df754b272e69a050a734e033989410f6eee6a3c 100644
--- a/util/sqlgen/order_by_test.go
+++ b/util/sqlgen/order_by_test.go
@@ -5,8 +5,8 @@ import (
 )
 
 func TestOrderBy(t *testing.T) {
-	o := NewOrderBy(
-		NewSortColumns(
+	o := JoinWithOrderBy(
+		JoinSortColumns(
 			SortColumn{Column: Column{Name: "foo"}},
 		),
 	)
@@ -20,8 +20,8 @@ func TestOrderBy(t *testing.T) {
 }
 
 func TestOrderByDesc(t *testing.T) {
-	o := NewOrderBy(
-		NewSortColumns(
+	o := JoinWithOrderBy(
+		JoinSortColumns(
 			SortColumn{Column: Column{Name: "foo"}, Order: Descendent},
 		),
 	)
@@ -36,8 +36,8 @@ func TestOrderByDesc(t *testing.T) {
 
 func BenchmarkOrderBy(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		NewOrderBy(
-			NewSortColumns(
+		JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: "foo"}},
 			),
 		)
@@ -46,7 +46,7 @@ func BenchmarkOrderBy(b *testing.B) {
 
 func BenchmarkOrderByHash(b *testing.B) {
 	o := OrderBy{
-		SortColumns: NewSortColumns(
+		SortColumns: JoinSortColumns(
 			SortColumn{Column: Column{Name: "foo"}},
 		),
 	}
@@ -57,7 +57,7 @@ func BenchmarkOrderByHash(b *testing.B) {
 
 func BenchmarkCompileOrderByCompile(b *testing.B) {
 	o := OrderBy{
-		SortColumns: NewSortColumns(
+		SortColumns: JoinSortColumns(
 			SortColumn{Column: Column{Name: "foo"}},
 		),
 	}
@@ -68,8 +68,8 @@ func BenchmarkCompileOrderByCompile(b *testing.B) {
 
 func BenchmarkCompileOrderByCompileNoCache(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		o := NewOrderBy(
-			NewSortColumns(
+		o := JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: "foo"}},
 			),
 		)
@@ -113,7 +113,7 @@ func BenchmarkSortColumnCompileNoCache(b *testing.B) {
 }
 
 func BenchmarkSortColumnsHash(b *testing.B) {
-	s := NewSortColumns(
+	s := JoinSortColumns(
 		SortColumn{Column: Column{Name: "foo"}},
 		SortColumn{Column: Column{Name: "bar"}},
 	)
@@ -123,7 +123,7 @@ func BenchmarkSortColumnsHash(b *testing.B) {
 }
 
 func BenchmarkSortColumnsCompile(b *testing.B) {
-	s := NewSortColumns(
+	s := JoinSortColumns(
 		SortColumn{Column: Column{Name: "foo"}},
 		SortColumn{Column: Column{Name: "bar"}},
 	)
@@ -134,7 +134,7 @@ func BenchmarkSortColumnsCompile(b *testing.B) {
 
 func BenchmarkSortColumnsCompileNoCache(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		s := NewSortColumns(
+		s := JoinSortColumns(
 			SortColumn{Column: Column{Name: "foo"}},
 			SortColumn{Column: Column{Name: "bar"}},
 		)
diff --git a/util/sqlgen/statement_test.go b/util/sqlgen/statement_test.go
index c618e375a8797d3df6bd0aa193b745e5c66dd8aa..84b7f195135ba318361ae8be8bd9e9566186c08e 100644
--- a/util/sqlgen/statement_test.go
+++ b/util/sqlgen/statement_test.go
@@ -109,7 +109,7 @@ func TestCountWhere(t *testing.T) {
 	stmt = Statement{
 		Type:  Count,
 		Table: TableWithName("table_name"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "a"}, Operator: "=", Value: NewValue(RawValue("7"))},
 		),
 	}
@@ -163,7 +163,7 @@ func TestSelectStarFromRawWhere(t *testing.T) {
 	stmt = Statement{
 		Type:  Select,
 		Table: TableWithName("table.name AS foo"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&Raw{Value: "foo.id = bar.foo_id"},
 		),
 	}
@@ -178,7 +178,7 @@ func TestSelectStarFromRawWhere(t *testing.T) {
 	stmt = Statement{
 		Type:  Select,
 		Table: TableWithName("table.name AS foo"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&Raw{Value: "foo.id = bar.foo_id"},
 			&Raw{Value: "baz.id = exp.baz_id"},
 		),
@@ -216,7 +216,7 @@ func TestSelectArtistNameFrom(t *testing.T) {
 	stmt = Statement{
 		Type:  Select,
 		Table: TableWithName("artist"),
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "artist.name"},
 		),
 	}
@@ -236,7 +236,7 @@ func TestSelectRawFrom(t *testing.T) {
 	stmt = Statement{
 		Type:  Select,
 		Table: TableWithName(`artist`),
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: `artist.name`},
 			Column{Name: Raw{Value: `CONCAT(artist.name, " ", artist.last_name)`}},
 		),
@@ -256,7 +256,7 @@ func TestSelectFieldsFrom(t *testing.T) {
 
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -279,7 +279,7 @@ func TestSelectFieldsFromWithLimitOffset(t *testing.T) {
 	// LIMIT only.
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -298,7 +298,7 @@ func TestSelectFieldsFromWithLimitOffset(t *testing.T) {
 	// OFFSET only.
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -317,7 +317,7 @@ func TestSelectFieldsFromWithLimitOffset(t *testing.T) {
 	// LIMIT AND OFFSET.
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -342,12 +342,12 @@ func TestStatementGroupBy(t *testing.T) {
 	// Simple GROUP BY
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		GroupBy: NewGroupBy(
+		GroupBy: GroupByColumns(
 			Column{Name: "foo"},
 		),
 		Table: TableWithName("table_name"),
@@ -362,12 +362,12 @@ func TestStatementGroupBy(t *testing.T) {
 
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		GroupBy: NewGroupBy(
+		GroupBy: GroupByColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 		),
@@ -389,13 +389,13 @@ func TestSelectFieldsFromWithOrderBy(t *testing.T) {
 	// Simple ORDER BY
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		OrderBy: NewOrderBy(
-			NewSortColumns(
+		OrderBy: JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: "foo"}},
 			),
 		),
@@ -412,13 +412,13 @@ func TestSelectFieldsFromWithOrderBy(t *testing.T) {
 	// ORDER BY field ASC
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		OrderBy: NewOrderBy(
-			NewSortColumns(
+		OrderBy: JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: "foo"}, Order: Ascendent},
 			),
 		),
@@ -435,13 +435,13 @@ func TestSelectFieldsFromWithOrderBy(t *testing.T) {
 	// ORDER BY field DESC
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		OrderBy: NewOrderBy(
-			NewSortColumns(
+		OrderBy: JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: "foo"}, Order: Descendent},
 			),
 		),
@@ -458,13 +458,13 @@ func TestSelectFieldsFromWithOrderBy(t *testing.T) {
 	// ORDER BY many fields
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		OrderBy: NewOrderBy(
-			NewSortColumns(
+		OrderBy: JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: "foo"}, Order: Descendent},
 				SortColumn{Column: Column{Name: "bar"}, Order: Ascendent},
 				SortColumn{Column: Column{Name: "baz"}, Order: Descendent},
@@ -483,13 +483,13 @@ func TestSelectFieldsFromWithOrderBy(t *testing.T) {
 	// ORDER BY function
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
-		OrderBy: NewOrderBy(
-			NewSortColumns(
+		OrderBy: JoinWithOrderBy(
+			JoinSortColumns(
 				SortColumn{Column: Column{Name: Raw{Value: "FOO()"}}, Order: Descendent},
 				SortColumn{Column: Column{Name: Raw{Value: "BAR()"}}, Order: Ascendent},
 			),
@@ -511,13 +511,13 @@ func TestSelectFieldsFromWhere(t *testing.T) {
 
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
 		Table: TableWithName("table_name"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		),
 	}
@@ -536,13 +536,13 @@ func TestSelectFieldsFromWhereLimitOffset(t *testing.T) {
 
 	stmt = Statement{
 		Type: Select,
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
 		),
 		Table: TableWithName("table_name"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		),
 		Limit:  10,
@@ -564,7 +564,7 @@ func TestDelete(t *testing.T) {
 	stmt = Statement{
 		Type:  Delete,
 		Table: TableWithName("table_name"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		),
 	}
@@ -584,10 +584,10 @@ func TestUpdate(t *testing.T) {
 	stmt = Statement{
 		Type:  Update,
 		Table: TableWithName("table_name"),
-		ColumnValues: NewColumnValues(
+		ColumnValues: JoinColumnValues(
 			ColumnValue{Column: Column{Name: "foo"}, Operator: "=", Value: NewValue(76)},
 		),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		),
 	}
@@ -602,11 +602,11 @@ func TestUpdate(t *testing.T) {
 	stmt = Statement{
 		Type:  Update,
 		Table: TableWithName("table_name"),
-		ColumnValues: NewColumnValues(
+		ColumnValues: JoinColumnValues(
 			ColumnValue{Column: Column{Name: "foo"}, Operator: "=", Value: NewValue(76)},
 			ColumnValue{Column: Column{Name: "bar"}, Operator: "=", Value: NewValue(Raw{Value: "88"})},
 		),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		),
 	}
@@ -626,7 +626,7 @@ func TestInsert(t *testing.T) {
 	stmt = Statement{
 		Type:  Insert,
 		Table: TableWithName("table_name"),
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -654,7 +654,7 @@ func TestInsertExtra(t *testing.T) {
 		Type:  Insert,
 		Table: TableWithName("table_name"),
 		Extra: "RETURNING id",
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -678,7 +678,7 @@ func BenchmarkStatementSimpleQuery(b *testing.B) {
 	stmt := Statement{
 		Type:  Count,
 		Table: TableWithName("table_name"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "a"}, Operator: "=", Value: NewValue(Raw{Value: "7"})},
 		),
 	}
@@ -692,7 +692,7 @@ func BenchmarkStatementSimpleQueryHash(b *testing.B) {
 	stmt := Statement{
 		Type:  Count,
 		Table: TableWithName("table_name"),
-		Where: NewWhere(
+		Where: WhereConditions(
 			&ColumnValue{Column: Column{Name: "a"}, Operator: "=", Value: NewValue(Raw{Value: "7"})},
 		),
 	}
@@ -707,7 +707,7 @@ func BenchmarkStatementSimpleQueryNoCache(b *testing.B) {
 		stmt := Statement{
 			Type:  Count,
 			Table: TableWithName("table_name"),
-			Where: NewWhere(
+			Where: WhereConditions(
 				&ColumnValue{Column: Column{Name: "a"}, Operator: "=", Value: NewValue(Raw{Value: "7"})},
 			),
 		}
@@ -719,7 +719,7 @@ func BenchmarkStatementComplexQuery(b *testing.B) {
 	stmt := Statement{
 		Type:  Insert,
 		Table: TableWithName("table_name"),
-		Columns: NewColumns(
+		Columns: JoinColumns(
 			Column{Name: "foo"},
 			Column{Name: "bar"},
 			Column{Name: "baz"},
@@ -741,7 +741,7 @@ func BenchmarkStatementComplexQueryNoCache(b *testing.B) {
 		stmt := Statement{
 			Type:  Insert,
 			Table: TableWithName("table_name"),
-			Columns: NewColumns(
+			Columns: JoinColumns(
 				Column{Name: "foo"},
 				Column{Name: "bar"},
 				Column{Name: "baz"},
diff --git a/util/sqlgen/where.go b/util/sqlgen/where.go
index 1e7b165b6622c4da63159640ff32f597a57964ac..60ea15465221f2cecd582ad6bfd6cd5a97e806be 100644
--- a/util/sqlgen/where.go
+++ b/util/sqlgen/where.go
@@ -21,18 +21,18 @@ type conds struct {
 	Conds string
 }
 
-// NewWhere creates and retuens a new Where.
-func NewWhere(conditions ...cc) *Where {
+// WhereConditions creates and retuens a new Where.
+func WhereConditions(conditions ...cc) *Where {
 	return &Where{Conditions: conditions}
 }
 
-// NewOr creates and returns a new Or.
-func NewOr(conditions ...cc) *Or {
+// JoinWithOr creates and returns a new Or.
+func JoinWithOr(conditions ...cc) *Or {
 	return &Or{Conditions: conditions}
 }
 
-// NewAnd creates and returns a new And.
-func NewAnd(conditions ...cc) *And {
+// JoinWithAnd creates and returns a new And.
+func JoinWithAnd(conditions ...cc) *And {
 	return &And{Conditions: conditions}
 }
 
diff --git a/util/sqlgen/where_test.go b/util/sqlgen/where_test.go
index f070183d719bd306909fcf3bf6a0b4c0fae98f1f..7fc918462623098879e085458f875e07b3bf1d82 100644
--- a/util/sqlgen/where_test.go
+++ b/util/sqlgen/where_test.go
@@ -7,7 +7,7 @@ import (
 func TestWhereAnd(t *testing.T) {
 	var s, e string
 
-	and := NewAnd(
+	and := JoinWithAnd(
 		&ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(&Raw{Value: "8"})},
 		&ColumnValue{Column: Column{Name: "id"}, Operator: "<", Value: NewValue(&Raw{Value: "99"})},
 		&ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("John")},
@@ -24,7 +24,7 @@ func TestWhereAnd(t *testing.T) {
 func TestWhereOr(t *testing.T) {
 	var s, e string
 
-	or := NewOr(
+	or := JoinWithOr(
 		&ColumnValue{Column: Column{Name: "id"}, Operator: "=", Value: NewValue(&Raw{Value: "8"})},
 		&ColumnValue{Column: Column{Name: "id"}, Operator: "=", Value: NewValue(&Raw{Value: "99"})},
 	)
@@ -40,11 +40,11 @@ func TestWhereOr(t *testing.T) {
 func TestWhereAndOr(t *testing.T) {
 	var s, e string
 
-	and := NewAnd(
+	and := JoinWithAnd(
 		&ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(&Raw{Value: "8"})},
 		&ColumnValue{Column: Column{Name: "id"}, Operator: "<", Value: NewValue(&Raw{Value: "99"})},
 		&ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("John")},
-		NewOr(
+		JoinWithOr(
 			&ColumnValue{Column: Column{Name: "last_name"}, Operator: "=", Value: NewValue("Smith")},
 			&ColumnValue{Column: Column{Name: "last_name"}, Operator: "=", Value: NewValue("Reyes")},
 		),
@@ -61,18 +61,18 @@ func TestWhereAndOr(t *testing.T) {
 func TestWhereAndRawOrAnd(t *testing.T) {
 	var s, e string
 
-	where := NewWhere(
-		NewAnd(
+	where := WhereConditions(
+		JoinWithAnd(
 			&ColumnValue{Column: Column{Name: "id"}, Operator: ">", Value: NewValue(&Raw{Value: "8"})},
 			&ColumnValue{Column: Column{Name: "id"}, Operator: "<", Value: NewValue(&Raw{Value: "99"})},
 		),
 		&ColumnValue{Column: Column{Name: "name"}, Operator: "=", Value: NewValue("John")},
 		&Raw{Value: "city_id = 728"},
-		NewOr(
+		JoinWithOr(
 			&ColumnValue{Column: Column{Name: "last_name"}, Operator: "=", Value: NewValue("Smith")},
 			&ColumnValue{Column: Column{Name: "last_name"}, Operator: "=", Value: NewValue("Reyes")},
 		),
-		NewAnd(
+		JoinWithAnd(
 			&ColumnValue{Column: Column{Name: "age"}, Operator: ">", Value: NewValue(&Raw{Value: "18"})},
 			&ColumnValue{Column: Column{Name: "age"}, Operator: "<", Value: NewValue(&Raw{Value: "41"})},
 		),
@@ -88,14 +88,14 @@ func TestWhereAndRawOrAnd(t *testing.T) {
 
 func BenchmarkWhere(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		_ = NewWhere(
+		_ = WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		)
 	}
 }
 
 func BenchmarkCompileWhere(b *testing.B) {
-	w := NewWhere(
+	w := WhereConditions(
 		&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 	)
 	for i := 0; i < b.N; i++ {
@@ -105,7 +105,7 @@ func BenchmarkCompileWhere(b *testing.B) {
 
 func BenchmarkCompileWhereNoCache(b *testing.B) {
 	for i := 0; i < b.N; i++ {
-		w := NewWhere(
+		w := WhereConditions(
 			&ColumnValue{Column: Column{Name: "baz"}, Operator: "=", Value: NewValue(99)},
 		)
 		w.Compile(defaultTemplate)