MCPcopy
hub / github.com/jmoiron/sqlx / TestCompileQuery

Function TestCompileQuery

named_test.go:9–100  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

7)
8
9func TestCompileQuery(t *testing.T) {
10 table := []struct {
11 Q, R, D, T, N string
12 V []string
13 }{
14 // basic test for named parameters, invalid char ',' terminating
15 {
16 Q: `INSERT INTO foo (a,b,c,d) VALUES (:name, :age, :first, :last)`,
17 R: `INSERT INTO foo (a,b,c,d) VALUES (?, ?, ?, ?)`,
18 D: `INSERT INTO foo (a,b,c,d) VALUES ($1, $2, $3, $4)`,
19 T: `INSERT INTO foo (a,b,c,d) VALUES (@p1, @p2, @p3, @p4)`,
20 N: `INSERT INTO foo (a,b,c,d) VALUES (:name, :age, :first, :last)`,
21 V: []string{"name", "age", "first", "last"},
22 },
23 // This query tests a named parameter ending the string as well as numbers
24 {
25 Q: `SELECT * FROM a WHERE first_name=:name1 AND last_name=:name2`,
26 R: `SELECT * FROM a WHERE first_name=? AND last_name=?`,
27 D: `SELECT * FROM a WHERE first_name=$1 AND last_name=$2`,
28 T: `SELECT * FROM a WHERE first_name=@p1 AND last_name=@p2`,
29 N: `SELECT * FROM a WHERE first_name=:name1 AND last_name=:name2`,
30 V: []string{"name1", "name2"},
31 },
32 {
33 Q: `SELECT "::foo" FROM a WHERE first_name=:name1 AND last_name=:name2`,
34 R: `SELECT ":foo" FROM a WHERE first_name=? AND last_name=?`,
35 D: `SELECT ":foo" FROM a WHERE first_name=$1 AND last_name=$2`,
36 T: `SELECT ":foo" FROM a WHERE first_name=@p1 AND last_name=@p2`,
37 N: `SELECT ":foo" FROM a WHERE first_name=:name1 AND last_name=:name2`,
38 V: []string{"name1", "name2"},
39 },
40 {
41 Q: `SELECT 'a::b::c' || first_name, '::::ABC::_::' FROM person WHERE first_name=:first_name AND last_name=:last_name`,
42 R: `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=? AND last_name=?`,
43 D: `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=$1 AND last_name=$2`,
44 T: `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=@p1 AND last_name=@p2`,
45 N: `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=:first_name AND last_name=:last_name`,
46 V: []string{"first_name", "last_name"},
47 },
48 {
49 Q: `SELECT @name := "name", :age, :first, :last`,
50 R: `SELECT @name := "name", ?, ?, ?`,
51 D: `SELECT @name := "name", $1, $2, $3`,
52 N: `SELECT @name := "name", :age, :first, :last`,
53 T: `SELECT @name := "name", @p1, @p2, @p3`,
54 V: []string{"age", "first", "last"},
55 },
56 /* This unicode awareness test sadly fails, because of our byte-wise worldview.
57 * We could certainly iterate by Rune instead, though it's a great deal slower,
58 * it's probably the RightWay(tm)
59 {
60 Q: `INSERT INTO foo (a,b,c,d) VALUES (:あ, :b, :キコ, :名前)`,
61 R: `INSERT INTO foo (a,b,c,d) VALUES (?, ?, ?, ?)`,
62 D: `INSERT INTO foo (a,b,c,d) VALUES ($1, $2, $3, $4)`,
63 N: []string{"name", "age", "first", "last"},
64 },
65 */
66 }

Callers

nothing calls this directly

Calls 3

compileNamedQueryFunction · 0.85
ErrorMethod · 0.80
ErrorfMethod · 0.80

Tested by

no test coverage detected