11package bench
22
33import (
4- "database/sql"
5- "github.com/efectn/go-orm-benchmarks/helper"
64 "testing"
75
6+ "github.com/efectn/go-orm-benchmarks/helper"
7+
88 "github.com/efectn/go-orm-benchmarks/bench/sqlc/db"
9+ "github.com/jackc/pgx/v5"
910)
1011
1112type Sqlc struct {
1213 helper.ORMInterface
1314 conn * db.Queries
14- db * sql. DB
15+ db * pgx. Conn
1516}
1617
1718func CreateSqlc () helper.ORMInterface {
@@ -24,7 +25,7 @@ func (sqlc *Sqlc) Name() string {
2425
2526func (sqlc * Sqlc ) Init () error {
2627 var err error
27- sqlc .db , err = sql . Open ( "pgx" , helper .OrmSource )
28+ sqlc .db , err = pgx . Connect ( ctx , helper .OrmSource )
2829 if err != nil {
2930 return err
3031 }
@@ -35,18 +36,39 @@ func (sqlc *Sqlc) Init() error {
3536}
3637
3738func (sqlc * Sqlc ) Close () error {
38- return sqlc .db .Close ()
39+ return sqlc .db .Close (ctx )
3940}
4041
4142func (sqlc * Sqlc ) Insert (b * testing.B ) {
4243 m := NewModel ()
4344
45+ args := db.CreateModelParams {
46+ Name : m .Name ,
47+ Title : m .Title ,
48+ Fax : m .Fax ,
49+ Web : m .Web ,
50+ Age : int32 (m .Age ),
51+ Right : m .Right ,
52+ Counter : m .Counter ,
53+ }
54+
4455 b .ReportAllocs ()
4556 b .ResetTimer ()
4657
4758 for i := 0 ; i < b .N ; i ++ {
4859 m .Id = 0
49- _ , err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
60+ err := sqlc .conn .CreateModel (ctx , args )
61+ if err != nil {
62+ helper .SetError (b , sqlc .Name (), "Insert" , err .Error ())
63+ }
64+ }
65+ }
66+
67+ func (sqlc * Sqlc ) InsertMulti (b * testing.B ) {
68+ ms := make ([]db.InsertMultiParams , 0 , 100 )
69+ m := NewModel ()
70+ for i := 0 ; i < 100 ; i ++ {
71+ ms = append (ms , db.InsertMultiParams {
5072 Name : m .Name ,
5173 Title : m .Title ,
5274 Fax : m .Fax ,
@@ -55,20 +77,22 @@ func (sqlc *Sqlc) Insert(b *testing.B) {
5577 Right : m .Right ,
5678 Counter : m .Counter ,
5779 })
80+ }
81+
82+ b .ReportAllocs ()
83+ b .ResetTimer ()
84+
85+ for i := 0 ; i < b .N ; i ++ {
86+ _ , err := sqlc .conn .InsertMulti (ctx , ms )
5887 if err != nil {
59- helper .SetError (b , sqlc .Name (), "Insert " , err .Error ())
88+ helper .SetError (b , sqlc .Name (), "InsertMulti " , err .Error ())
6089 }
6190 }
6291}
6392
64- func (sqlc * Sqlc ) InsertMulti (b * testing.B ) {
65- helper .SetError (b , sqlc .Name (), "InsertMulti" , "bulk-insert is not supported" )
66- }
67-
6893func (sqlc * Sqlc ) Update (b * testing.B ) {
6994 m := NewModel ()
70-
71- _ , err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
95+ err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
7296 Name : m .Name ,
7397 Title : m .Title ,
7498 Fax : m .Fax ,
@@ -81,20 +105,21 @@ func (sqlc *Sqlc) Update(b *testing.B) {
81105 helper .SetError (b , sqlc .Name (), "Update" , err .Error ())
82106 }
83107
108+ args := db.UpdateModelParams {
109+ Name : m .Name ,
110+ Title : m .Title ,
111+ Fax : m .Fax ,
112+ Web : m .Web ,
113+ Age : int32 (m .Age ),
114+ Right : m .Right ,
115+ Counter : m .Counter ,
116+ ID : int32 (m .Id ),
117+ }
84118 b .ReportAllocs ()
85119 b .ResetTimer ()
86120
87121 for i := 0 ; i < b .N ; i ++ {
88- err := sqlc .conn .UpdateModel (ctx , db.UpdateModelParams {
89- Name : m .Name ,
90- Title : m .Title ,
91- Fax : m .Fax ,
92- Web : m .Web ,
93- Age : int32 (m .Age ),
94- Right : m .Right ,
95- Counter : m .Counter ,
96- ID : int32 (m .Id ),
97- })
122+ err := sqlc .conn .UpdateModel (ctx , args )
98123 if err != nil {
99124 helper .SetError (b , sqlc .Name (), "Update" , err .Error ())
100125 }
@@ -104,7 +129,7 @@ func (sqlc *Sqlc) Update(b *testing.B) {
104129func (sqlc * Sqlc ) Read (b * testing.B ) {
105130 m := NewModel ()
106131
107- output , err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
132+ err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
108133 Name : m .Name ,
109134 Title : m .Title ,
110135 Fax : m .Fax ,
@@ -113,7 +138,7 @@ func (sqlc *Sqlc) Read(b *testing.B) {
113138 Right : m .Right ,
114139 Counter : m .Counter ,
115140 })
116- m .Id = int ( output . ID )
141+ m .Id = 1
117142 if err != nil {
118143 helper .SetError (b , sqlc .Name (), "Read" , err .Error ())
119144 }
@@ -135,7 +160,7 @@ func (sqlc *Sqlc) ReadSlice(b *testing.B) {
135160 for i := 0 ; i < 100 ; i ++ {
136161 m .Id = 0
137162
138- _ , err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
163+ err := sqlc .conn .CreateModel (ctx , db.CreateModelParams {
139164 Name : m .Name ,
140165 Title : m .Title ,
141166 Fax : m .Fax ,
@@ -153,10 +178,7 @@ func (sqlc *Sqlc) ReadSlice(b *testing.B) {
153178 b .ResetTimer ()
154179
155180 for i := 0 ; i < b .N ; i ++ {
156- _ , err := sqlc .conn .ListModels (ctx , db.ListModelsParams {
157- ID : 0 ,
158- Limit : 100 ,
159- })
181+ _ , err := sqlc .conn .ListModels (ctx )
160182 if err != nil {
161183 helper .SetError (b , sqlc .Name (), "ReadSlice" , err .Error ())
162184 }
0 commit comments