nsmcp::AccessAnalytics method drop (protected)
<instance of nsmcp::AccessAnalytics> drop reason cutoff \ [ limit ]
Defined in /usr/local/ns/tcl/nsmcp/access-analytics.tcl
- Parameters:
- reason (required)
- cutoff (required)
- limit (optional, defaults to
"0")- Testcases:
- No testcase defined.
Source code: set db ${:db} set now [clock seconds] if {$reason eq "age"} { set where {start < $cutoff} } else { set where {rowid IN (SELECT rowid FROM nsmcp_access_requests ORDER BY start LIMIT $limit)} } set count 0 $db execute -arrayName row -script { set count $row(n) set first $row(first) set last $row(last) } "SELECT count(*) AS n,coalesce(min(start),0) AS first,coalesce(max(start),0) AS last FROM nsmcp_access_requests WHERE $where" if {$count==0} { return } $db execute "DELETE FROM nsmcp_access_requests WHERE $where" incr :rowCount -$count $db execute {INSERT INTO nsmcp_access_evictions(dropped_at,first_time,last_time,rows,reason) VALUES(:now,:first,:last,:count,:reason)} set old [$db scalar {SELECT value FROM nsmcp_access_metadata WHERE key='droppedThrough'}] set through [expr {$old eq "" ? $last : max(double($old),$last)}] $db execute {INSERT OR REPLACE INTO nsmcp_access_metadata VALUES('droppedThrough',:through); INSERT OR REPLACE INTO nsmcp_access_metadata VALUES('lastEvictionAt',:now)} set limit ${:evictionLimit} $db execute {DELETE FROM nsmcp_access_evictions WHERE id NOT IN (SELECT id FROM nsmcp_access_evictions ORDER BY id DESC LIMIT :limit)}XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)