Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  GENEZZO::DICT (3)

.ds Aq ’

NAME - The Genezzo data dictionary



 use Genezzo::Dict;

 # create a new dictionary

 my $dictobj = Genezzo::Dict->new(
                  gnz_home => $gnz_home,
                  init_db => $init);

 # see if a table exists

 if ($dictobj->DictTableExists (
                   tname => $tablename,
                   silent_exists => 0,
                   silent_notexists => 1 )))...

 # create a new table

 $dictobj->DictTableCreate (
                   tname => $tablename,
                   tabdef => \%coldatatype,
                   tablespace => "SYSTEM");

 # drop a table

 $dictobj->DictTableDrop (tname => $tablename);

 # save the state of the dictionary to disk


 my $colhash =
     $dictobj->DictTableGetCols (tname => $tablename);

 $dictobj->RowInsert (tname => $tablename,
                      rowval => \@rowarr );

 $dictobj->RowDelete (tname => $tablename,
                      rid => $rid);

 $dictobj->RowUpdate (tname => $tablename,
                      rid => $rid,
                      rowval => \@rowarr);

 # return the table as a tied hash

 my $tablehash =
     $dictobj->DictTableGetTable (tname => $tablename) ;


The dictionary is a complete description of the Genezzo system, recording information on table structure and physical layout. It provides an interface to create, destroy, query, and manipulate tables.

    Dictionary concepts

Tablespace — a physical space to store the contents of tables. A tablespace is a collection of files. The default install of Genezzo creates a single SYSTEM tablespace in a single file.

    Core Tables

The dictionary itself is just a set of tables stored in the system tablespace. Genezzo only uses six core tables to describe its basic dictionary. NOTE: Modifying any dictionary tables will framboozle your nimwits. You have been warned.
_pref1 — a set of key/value pairs that describe the database configuration
_tspace — the list of tablespaces for this Genezzo instance.
_tsfiles — the list of files which compose each tablespace
_tab1 — the list of tables and their associated tablespaces
_col1 — the list of columns for each table
allfileused — the list of files actually used by each table


I want to reduce the interface to a simple tied hash, something like:

 my $errormsg;

 %args = (errormsg => \$errormsg );

 my $dicthash = DictGetDictHash(%args);

Checking for the existance of a table would be something like:

 my $tablename = "kitchentable";

 if (exists($dicthash->{tableinfo}->{$tablename}))
    # do stuff...
    # errormsg was reference in tie of dicthash,
    # contains last error status
    print $errormsg;



pref1 - distinguish fixed/mutable parameters
cons1 - distinguish user constraint names from system-defined names
IDXTAB indexed tables don’t give a constraint error, or primary key error. They don’t have constraints because they are themselves indexes. Need to give better error message.
Fix t/Cons1 constraint error
DictTableAllTab: need index on allfileused for delete
DictTableAllTab: update tsfiles for usefile
need some combo _get_table/corecolnum/getcol - create a custom iterator that returns specified cols
non-unique index support using bt2 use_keycount. Need to separate notion of SQL uniqueness from btree concept of unique, since a non-unique SQL index is a unique btree with the rid as least-significant key col (vs rid as value col).
need drop table/drop index linkage, delete constraints for table, etc
constraints: can fix check constraint in update case — don’t need to check insert if check columns aren’t modified.
constraints: need not null/foreign key constraints
constraints: need to limit one primary key per table, prevent creation of duplicate indexes on same ordered key columns
expose drop index, drop constraint. tie drop index/drop table?
check usage of HCount for max tid, max fileidx, max consid. This won’t work if have deletions
DictTableUseFile: update space management to use this function correctly
DictDefineCoreTabs, tsfiles: need to save file headersize as a tsfile column.
deal with dict->{headersize} attribute in some rational way. Currently set via tablespace->TSAddFile...


Jeffrey I. Cohen,



Copyright (c) 2003, 2004, 2005, 2006 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
    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:

For more information, please visit the Genezzo homepage at <>

Search for    or go to Top of page |  Section 3 |  Main Index

perl v5.20.3 GENEZZO::DICT (3) 2007-06-26

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.