Posted to tcl by colin at Tue Sep 10 00:20:41 GMT 2013view raw
- method prep {stmt} {
- variable stmts ;# here are some statements we prepared earlier
- variable max_prepcache
- if {[info exists stmts($stmt)]} {
- set s $stmts($stmt)
- if {$max_prepcache > 0} {
- # move matched element to end of cache (for LRU)
- unset stmts($stmt)
- set stmts($stmt) $s
- }
- } else {
- set s [my db prepare $stmt]
- set stmts($stmt) $s
- if {$max_prepcache > 0 && [array size stmts] > $max_prepcache} {
- Debug.store {removing LRU cached statement}
- array set stmts [lrange [array get stmts] 2 end]
- }
- }
- return $s
- }