@@ -7,14 +7,15 @@ import (
77
88func TestCompileQuery (t * testing.T ) {
99 table := []struct {
10- Q , R , D , N string
11- V []string
10+ Q , R , D , T , N string
11+ V []string
1212 }{
1313 // basic test for named parameters, invalid char ',' terminating
1414 {
1515 Q : `INSERT INTO foo (a,b,c,d) VALUES (:name, :age, :first, :last)` ,
1616 R : `INSERT INTO foo (a,b,c,d) VALUES (?, ?, ?, ?)` ,
1717 D : `INSERT INTO foo (a,b,c,d) VALUES ($1, $2, $3, $4)` ,
18+ T : `INSERT INTO foo (a,b,c,d) VALUES (@p1, @p2, @p3, @p4)` ,
1819 N : `INSERT INTO foo (a,b,c,d) VALUES (:name, :age, :first, :last)` ,
1920 V : []string {"name" , "age" , "first" , "last" },
2021 },
@@ -23,20 +24,23 @@ func TestCompileQuery(t *testing.T) {
2324 Q : `SELECT * FROM a WHERE first_name=:name1 AND last_name=:name2` ,
2425 R : `SELECT * FROM a WHERE first_name=? AND last_name=?` ,
2526 D : `SELECT * FROM a WHERE first_name=$1 AND last_name=$2` ,
27+ T : `SELECT * FROM a WHERE first_name=@p1 AND last_name=@p2` ,
2628 N : `SELECT * FROM a WHERE first_name=:name1 AND last_name=:name2` ,
2729 V : []string {"name1" , "name2" },
2830 },
2931 {
3032 Q : `SELECT "::foo" FROM a WHERE first_name=:name1 AND last_name=:name2` ,
3133 R : `SELECT ":foo" FROM a WHERE first_name=? AND last_name=?` ,
3234 D : `SELECT ":foo" FROM a WHERE first_name=$1 AND last_name=$2` ,
35+ T : `SELECT ":foo" FROM a WHERE first_name=@p1 AND last_name=@p2` ,
3336 N : `SELECT ":foo" FROM a WHERE first_name=:name1 AND last_name=:name2` ,
3437 V : []string {"name1" , "name2" },
3538 },
3639 {
3740 Q : `SELECT 'a::b::c' || first_name, '::::ABC::_::' FROM person WHERE first_name=:first_name AND last_name=:last_name` ,
3841 R : `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=? AND last_name=?` ,
3942 D : `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=$1 AND last_name=$2` ,
43+ T : `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=@p1 AND last_name=@p2` ,
4044 N : `SELECT 'a:b:c' || first_name, '::ABC:_:' FROM person WHERE first_name=:first_name AND last_name=:last_name` ,
4145 V : []string {"first_name" , "last_name" },
4246 },
@@ -74,6 +78,11 @@ func TestCompileQuery(t *testing.T) {
7478 t .Errorf ("\n expected: `%s`\n got: `%s`" , test .D , qd )
7579 }
7680
81+ qt , _ , _ := compileNamedQuery ([]byte (test .Q ), AT )
82+ if qt != test .T {
83+ t .Errorf ("\n expected: `%s`\n got: `%s`" , test .T , qt )
84+ }
85+
7786 qq , _ , _ := compileNamedQuery ([]byte (test .Q ), NAMED )
7887 if qq != test .N {
7988 t .Errorf ("\n expected: `%s`\n got: `%s`\n (len: %d vs %d)" , test .N , qq , len (test .N ), len (qq ))
0 commit comments