|
5 | 5 | package builder |
6 | 6 |
|
7 | 7 | import ( |
| 8 | +sql2 "database/sql" |
8 | 9 | "fmt" |
9 | 10 | "io/ioutil" |
10 | 11 | "os" |
@@ -35,6 +36,10 @@ func TestBoundSQLConverter(t *testing.T) { |
35 | 36 | assert.NoError(t, err) |
36 | 37 | assert.EqualValues(t, placeholderBoundSQL, newSQL) |
37 | 38 |
|
| 39 | +newSQL, err = ConvertToBoundSQL(placeholderConverterSQL, []interface{}{1, 2.1, sql2.Named("any", "3"), uint(4), "5", true}) |
| 40 | +assert.NoError(t, err) |
| 41 | +assert.EqualValues(t, placeholderBoundSQL, newSQL) |
| 42 | + |
38 | 43 | newSQL, err = ConvertToBoundSQL(placeholderConverterSQL, []interface{}{1, 2.1, "3", 4, "5"}) |
39 | 44 | assert.Error(t, err) |
40 | 45 | assert.EqualValues(t, ErrNeedMoreArguments, err) |
@@ -162,3 +167,42 @@ func TestExecutableCheck(t *testing.T) { |
162 | 167 | err = f.executableCheck("SELECT * FROM table3") |
163 | 168 | assert.Error(t, err) |
164 | 169 | } |
| 170 | + |
| 171 | +func TestToSQLInDifferentDialects(t *testing.T) { |
| 172 | +sql, args, err := Postgres().Select().From("table1").Where(Eq{"a": "1"}.And(Neq{"b": "100"})).ToSQL() |
| 173 | +assert.NoError(t, err) |
| 174 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=$1 AND b<>$2", sql) |
| 175 | +assert.EqualValues(t, []interface{}{"1", "100"}, args) |
| 176 | + |
| 177 | +sql, args, err = MySQL().Select().From("table1").Where(Eq{"a": "1"}.And(Neq{"b": "100"})).ToSQL() |
| 178 | +assert.NoError(t, err) |
| 179 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=? AND b<>?", sql) |
| 180 | +assert.EqualValues(t, []interface{}{"1", "100"}, args) |
| 181 | + |
| 182 | +sql, args, err = MsSQL().Select().From("table1").Where(Eq{"a": "1"}.And(Neq{"b": "100"})).ToSQL() |
| 183 | +assert.NoError(t, err) |
| 184 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=@p1 AND b<>@p2", sql) |
| 185 | +assert.EqualValues(t, []interface{}{sql2.Named("p1", "1"), sql2.Named("p2", "100")}, args) |
| 186 | + |
| 187 | +// test sql.NamedArg in cond |
| 188 | +sql, args, err = MsSQL().Select().From("table1").Where(Eq{"a": sql2.NamedArg{Name: "param", Value: "1"}}.And(Neq{"b": "100"})).ToSQL() |
| 189 | +assert.NoError(t, err) |
| 190 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=@p1 AND b<>@p2", sql) |
| 191 | +assert.EqualValues(t, []interface{}{sql2.Named("p1", "1"), sql2.Named("p2", "100")}, args) |
| 192 | + |
| 193 | +sql, args, err = Oracle().Select().From("table1").Where(Eq{"a": "1"}.And(Neq{"b": "100"})).ToSQL() |
| 194 | +assert.NoError(t, err) |
| 195 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=:p1 AND b<>:p2", sql) |
| 196 | +assert.EqualValues(t, []interface{}{sql2.Named("p1", "1"), sql2.Named("p2", "100")}, args) |
| 197 | + |
| 198 | +// test sql.NamedArg in cond |
| 199 | +sql, args, err = Oracle().Select().From("table1").Where(Eq{"a": sql2.Named("a", "1")}.And(Neq{"b": "100"})).ToSQL() |
| 200 | +assert.NoError(t, err) |
| 201 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=:p1 AND b<>:p2", sql) |
| 202 | +assert.EqualValues(t, []interface{}{sql2.Named("p1", "1"), sql2.Named("p2", "100")}, args) |
| 203 | + |
| 204 | +sql, args, err = SQLite().Select().From("table1").Where(Eq{"a": "1"}.And(Neq{"b": "100"})).ToSQL() |
| 205 | +assert.NoError(t, err) |
| 206 | +assert.EqualValues(t, "SELECT * FROM table1 WHERE a=? AND b<>?", sql) |
| 207 | +assert.EqualValues(t, []interface{}{"1", "100"}, args) |
| 208 | +} |
0 commit comments