Class ::nsmcp::SQLiteDatabase (public)
::nx::Class ::nsmcp::SQLiteDatabase
Defined in /usr/local/ns/tcl/nsmcp/lib/database.tcl
- Testcases:
- No testcase defined.
Source code: :property pool:required :property {maxBytes:integer 1073741824} :variable path :method init {} { if {${:maxBytes}<4194304} {error "database maxBytes must be at least 4 MiB"} set db [:connect]; $db close } :public method connect {} { if {![llength [info commands ns_db]]} {error "databasePool requires nsdb/nsdbsqlite loaded before nsmcp"} set handle [ns_db gethandle -timeout 2 ${:pool}] if {$handle eq ""} {error "MCP database pool timed out"} try { if {[ns_db dbtype $handle] ne "sqlite"} {error "MCP databasePool must use nsdbsqlite"} set source [ns_db datasource $handle] if {$source eq "" || $source eq ":memory:" || [string match file:* $source]} {error "MCP cache requires a persistent file datasource"} set :path [file normalize $source] file attributes ${:path} -permissions 0600 set db [::nsmcp::DatabaseSession new -handle $handle] } on error {message options} { ns_db releasehandle $handle return -options $options $message } try { $db execute {PRAGMA busy_timeout=2000; PRAGMA journal_mode=DELETE; PRAGMA synchronous=FULL; PRAGMA temp_store=MEMORY} set pages [expr {int(${:maxBytes}*0.45)/[$db scalar {PRAGMA page_size}]}] set current [$db scalar {PRAGMA page_count}] if {$current>$pages} {error "existing database exceeds configured byte budget"} $db execute "PRAGMA max_page_count=$pages" return $db } on error {message options} { $db close return -options $options $message } } :public method path {} {return ${:path}}XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)