nsmcp::SQLiteDatabase method connect (public)

 <instance of nsmcp::SQLiteDatabase[i]> connect

Defined in /usr/local/ns/tcl/nsmcp/database.tcl

Check out a session from the dedicated SQLite cache pool. Validate the persistent datasource, apply private session settings and enforce the configured page budget; release resources on failure.

Returns:
A DatabaseSession object owning the checked-out handle.

Testcases:
No testcase defined.
Source code:
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 {
    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
}
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: