Преглед изворни кода

query: Improve efficiency of 'USE' statement detection

Benchmark results for a 80 character statement that does not start with
'use':

Before: 1927 ns/op   192 B/op   2 allocs/op
After:  142 ns/op      6 B/op   2 allocs/op
Adrien Bustany пре 10 година
родитељ
комит
9a1b30652d
1 измењених фајлова са 9 додато и 1 уклоњено
  1. 9 1
      session.go

+ 9 - 1
session.go

@@ -609,10 +609,18 @@ func (q *Query) Exec() error {
 	return iter.err
 }
 
+func isUseStatement(stmt string) bool {
+	if len(stmt) < 3 {
+		return false
+	}
+
+	return strings.ToLower(stmt[0:3]) == "use"
+}
+
 // Iter executes the query and returns an iterator capable of iterating
 // over all results.
 func (q *Query) Iter() *Iter {
-	if strings.Index(strings.ToLower(q.stmt), "use") == 0 {
+	if isUseStatement(q.stmt) {
 		return &Iter{err: ErrUseStmt}
 	}
 	return q.session.executeQuery(q)