1package driver
2
3import "database/sql/driver"
4
5func namedValues(args []driver.Value) []driver.NamedValue {
6 named := make([]driver.NamedValue, len(args))
7 for i, v := range args {
8 named[i] = driver.NamedValue{
9 Ordinal: i + 1,
10 Value: v,
11 }
12 }
13 return named
14}
15
16func notWhitespace(sql string) bool {
17 const (
18 code = iota
19 slash
20 minus
21 ccomment
22 sqlcomment
23 endcomment
24 )
25
26 state := code
27 for _, b := range ([]byte)(sql) {
28 if b == 0 {
29 break
30 }
31
32 switch state {
33 case code:
34 switch b {
35 case '/':
36 state = slash
37 case '-':
38 state = minus
39 case ' ', ';', '\t', '\n', '\v', '\f', '\r':
40 continue
41 default:
42 return true
43 }
44 case slash:
45 if b != '*' {
46 return true
47 }
48 state = ccomment
49 case minus:
50 if b != '-' {
51 return true
52 }
53 state = sqlcomment
54 case ccomment:
55 if b == '*' {
56 state = endcomment
57 }
58 case sqlcomment:
59 if b == '\n' {
60 state = code
61 }
62 case endcomment:
63 switch b {
64 case '/':
65 state = code
66 case '*':
67 state = endcomment
68 default:
69 state = ccomment
70 }
71 }
72 }
73 return state == slash || state == minus
74}