The R Project SVN R-packages

Rev

Rev 3397 | Rev 3457 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3397 Rev 3419
Line 323... Line 323...
323
 
323
 
324
    /* test if we have to detach somebody */
324
    /* test if we have to detach somebody */
325
    if (nloaded == MAX_ATTACHED) {
325
    if (nloaded == MAX_ATTACHED) {
326
        /* have to evict */
326
        /* have to evict */
327
        sqlite3_prepare(g_workspace, "select internal_name from workspace "
327
        sqlite3_prepare(g_workspace, "select internal_name from workspace "
328
                "where loaded=1 order by uses", -1, &stmt, NULL);
328
                "where loaded=1 and used=0 order by uses", -1, &stmt, NULL);
329
        sqlite3_step(stmt);
329
        sqlite3_step(stmt);
330
        char *iname2;
330
        char *iname2;
331
        iname2 = (char *)sqlite3_column_text(stmt, 0);
331
        iname2 = (char *)sqlite3_column_text(stmt, 0);
332
        sprintf(g_sql_buf[2], "detach [%s]", iname2);
332
        sprintf(g_sql_buf[2], "detach [%s]", iname2);
333
        _sqlite_exec(g_sql_buf[2]);
333
        _sqlite_error(_sqlite_exec(g_sql_buf[2]));
334
        /* I don't know why I get away with this, but I think
-
 
335
         * I should finalize stmt before I can update workspace table */
334
        sprintf(g_sql_buf[2], "update workspace set loaded=0 where internal_name='%s'", iname2);
336
        sqlite3_finalize(stmt); 
335
        sqlite3_finalize(stmt); 
-
 
336
        _sqlite_error(_sqlite_exec(g_sql_buf[2]));
337
    }
337
    }
338
 
338
 
339
    return nloaded == MAX_ATTACHED;
339
    return nloaded == MAX_ATTACHED;
340
}
340
}
341
 
341