suppressing "file not found" errors for indices, fall back to 404 error; correctly return seek position when inserting into SBPlusTrees

This commit is contained in:
real_nowhereman 2008-09-08 15:20:07 +00:00
parent 13dc0b6cb4
commit 29a9e6bbd1
4 changed files with 40 additions and 6 deletions

View File

@ -2537,6 +2537,7 @@ class SBPlusTree extends BPlusTree {
function setitem($key, $val) {
$seek = $this->setstring($val);
parent::setitem($key, $seek);
return $seek;
}
function walker(

View File

@ -6,6 +6,7 @@
var $nodesize = 30;
var $keylen = 12;
/**
* opens the index belonging to a given category
* @params int $id_cat
@ -15,6 +16,7 @@
if (!file_exists($F)) {
trigger_error ("Can't find index '{$F}'", E_USER_ERROR);
}
parent::caching_SBPT(
@ -121,8 +123,8 @@
$main =& $this->get_index();
$main->delitem($key);
if (isset($entry['categories']) && is_array($entry['categories'])) {
foreach ($entry['categories'] as $cat) {
if (isset($entry['CATEGORIES']) && is_array($entry['CATEGORIES'])) {
foreach ($entry['CATEGORIES'] as $cat) {
if (!is_numeric($cat)) continue;
$this_index =& $this->get_index($cat);
$this_index->delitem($key);
@ -323,6 +325,21 @@
return $entry_index;
}
function &entry_cached_index($id_cat) {
$F = INDEX_DIR.'index-'.$id_cat.'.dat';
if (!file_exists($F)) {
$o = false;
} else {
$o =& new entry_cached_index($id_cat);
}
return $o;
}
/*
function entry_query($params=array()){

View File

@ -163,6 +163,15 @@
$fpdb->init();
$entry_index =& $fpdb->get_index($this->params->category);
$this->counter++;
if (!$entry_index) {
$this->params->start = 0;
$this->params->count = 0;
$this->pointer = 0;
return;
}
if ($this->single) {
$this->_prepare_single($entry_index);
@ -173,7 +182,6 @@
}
}
$this->counter++;
}
@ -324,7 +332,12 @@
function &peekEntry() {
global $post;
if (!$this->hasMore()) {
$false = array(false, false);
return $false;
}
$qp =& $this->params;
@ -368,7 +381,8 @@
}
if (!$cont) {
return false;
$cont = false;
return $cont;
}
if ($qp->comments) {
@ -563,7 +577,7 @@
function &get_index($cat_id = 0) {
if (!isset($this->_indexer[$cat_id])) {
$this->_indexer[$cat_id] =& new entry_cached_index($cat_id);
$this->_indexer[$cat_id] =& entry_cached_index($cat_id);
}
return $this->_indexer[$cat_id];
}

View File

@ -7,6 +7,8 @@
if(check_write(SETUPTEMP_FILE, 2)) {
$r = fs_mkdir(CACHE_DIR);
$r &= fs_mkdir(INDEX_DIR);
$r &= fs_copy(CONFIG_DEFAULT, CONFIG_FILE);