NAME
Genezzo::Row::RSIdx1.pm - Row Source InDeX tied hash class. A hierarchical pushhash (see Genezzo::PushHash::hph) class that stores a pushhash as a btree via Genezzo::Row::RSTable.
SYNOPSIS
use Genezzo::Row::RSIdx1;
# see Tablespace.pm -- implementation and usage is tightly tied
# to genezzo engine...
my %args = (
# need tablename, bufcache, etc...
tablename => ...
tso => ...
bufcache => ...
);
my %td_hash;
$tie_val =
tie %td_hash, 'Genezzo::Row::RSIdx1', %args;
# pushhash style
my @rowarr = ("this is a test", "and this is too");
my $newkey = $tie_val->HPush(\@rowarr);
@rowarr = ("update this entry", "and this is too");
$tied_hash{$newkey} = \@rowarr;
my $getcount = $tie_val->HCount();
DESCRIPTION
RSIdx1 is index-only table class that packs complex objects into byte buffers via Genezzo::Block::RDBlock, maintaining a b-tree index on the primary key columns. Unlike a standard index, all of the table data (keys and value columns) is stored in a single b-tree.
ARGUMENTS
- tablename (Required) - the name of the table
- tso (Required) - tablespace object from Genezzo::Tablespace
- bufcache (Required) - buffer cache object from Genezzo::BufCa::BCFile
CONCEPTS
FUNCTIONS
EXPORT
LIMITATIONS
various
TODO
- HSuck:
- FirstCount/NextCount: do real estimate vs fake
- should pass leftmost blockno explicitly versus rely on RSTab FIRSTKEY
- rectify some overlap between btHash and this module
- could encode multiple column key into single col rid using MIME::Base64 encode of a packed row. should check dependency for perl 5.6 and add to Makefile.PL.
AUTHOR
Jeffrey I. Cohen, jcohen@genezzo.com
SEE ALSO
Genezzo::PushHash::HPHRowBlk, Genezzo::PushHash::hph, Genezzo::PushHash::PushHash, Genezzo::Tablespace, Genezzo::Row::RSTab, Genezzo::Block::RDBlock, Genezzo::BufCa::BCFile, Genezzo::BufCa::BufCaElt, perl(1).
Copyright (c) 2003, 2004 Jeffrey I Cohen. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Address bug reports and comments to: jcohen@genezzo.com
For more information, please visit the Genezzo homepage at http://www.genezzo.com