GENDBA(1) User Contributed Perl Documentation GENDBA(1)NAMEgendba.pl - line mode for Genezzo database system
SYNOPSIS
gendba [options]
Options:
-help brief help message
-man full documentation
-init build a gnz_home installation if necessary
-gnz_home supply a directory for the gnz_home
-version print version information
-shutdown do not startup
-define key=val define a configuration parameter
-fileheader_define key=val define a file-specific configuration
parameter (not useful in general)
OPTIONS-help
Print a brief help message and exits.
-man
Prints the manual page and exits.
-init
Build the gnz_home dictionary and default tablespace if
it does not exist.
-gnz_home
Supply the location for the gnz_home installation. If
specified, it overrides the GNZ_HOME environment variable.
-version
Print version information.
-shutdown
If initializing a new database, then shutdown when
complete, versus continuing in interactive mode.
-define key=value
Define a configuration parameter for database
creation and/or initialization. Some important
database creation parameters are blocksize and dbsize,
which define the size of database blocks and
the size of the initial database file. An important
initialization parameter is use_havok=0, which
disables the havok extensibility subsystem on database
startup. Use "gendba.pl -define help=help"
for more information.
-fileheader_define key=value
Define a file-specific configuration parameter when the database
is created. For specialized extensions which cannot use the dictionary
preference table.
DESCRIPTION
Genezzo is an extensible, persistent datastore that uses a subset of
SQL. The gendba line-mode tool lets users interactively perform
management tasks, as well as define and modify tables, and manipulate
table data with updates and queries.
Commands
Genezzo supports some very basic SQL create/drop/alter/describe table,
select, insert, update and delete syntax, and like standard SQL, table
and column names are case-insensitive unless quoted. More complex SQL
parses, but is ignored. The only supported functions are count(*) and
ecount(*), a non-blocking count estimation function. The database also
supports commit to force changes to disk, but no rollback. NOTE: Data
definition (such as create table or ct) must be manually committed to
keep the database in a consistent state. Uncommitted inserts and
updates will only be block-consistent -- there is no guarantee that the
data will get flushed to disk, and no guarantee whether the changes
will or will not take effect.
rem Some simple SELECTs
select * from _col1;
select rid, rownum, tname, colname from _col1;
select count(*) from _col1;
select ecount(*) from _col1;
rem SELECTs with WHERE, perl and SQL style.
select * from _tab1 where tname =~ m/col/;
select * from _tab1 where tid < 5;
select * from _tab1 where numcols > 3 AND numcols < 6;
rem basic joins
select * from _tab1, _col1 where _tab1.tid = _col1.tid
and _tab1.tname =~ m/col/;
rem Column aliases and Expressions
select tid as Table_ID, tname Name, (tid+1)/2 from _tab1;
rem Basic INSERT
insert into test1 values ('a','b','c','d');
insert into test1(col2, col1) values ('a','b','c','d');
rem CREATE TABLE and INSERT...SELECT
create table test2(col1 char, col2 char);
insert into test2 (col1) select col1 from test1;
rem DELETE with WHERE
delete from test1 where col1 < 'bravo' and col2 > 5;
rem UPDATE with WHERE (no subqueries supported)
update test2 set col2 = 'foo' where col2 is null;
rem CREATE an INDEX
create index test1_ix on test1(col1);
rem ADD a CHECK CONSTRAINT
alter table test2 add constraint t2_cn1 check (col2 =~ m/(a|b|c|d)/x );
commit
Genezzo also supports the following "short" commands: ct, dt, s, i, d,
u
ct - create table
example: ct EMP NAME=c ID=n
SQL equivalent: CREATE TABLE EMP (NAME CHAR(10), ID NUMBER) ;
dt - drop table
example: dt EMP
SQL equivalent: DROP TABLE EMP ;
s - select
example: s EMP *
SQL equivalent: SELECT * FROM EMP ;
example: s EMP rid rownum *
SQL equivalent: SELECT ROWID, ROWNUM, * FROM EMP ;
example: s EMP NAME
SQL equivalent: SELECT NAME FROM EMP ;
i - insert
example: i EMP bob 1 orville 2
SQL equivalent:
INSERT INTO EMP VALUES ('bob', '1');
INSERT INTO EMP VALUES ('orville', '2');
d, u - delete and update
DELETE and UPDATE only work by rid
-- you cannot specify a predicate.
example: d emp 1.2.3
SQL equivalent: DELETE FROM EMP WHERE RID='1.2.3' ;
example: u emp 1.2.3 wilbur 4
SQL equivalent: UPDATE EMP SET NAME='wilbur',
ID='4' WHERE RID='1.2.3' ;
Genezzo stores information in a couple of subsidiary files: the default
install creates a file called default.dbf which contains the basic
dictionary information. Other data files can be added as needed.
While the default configuration uses a single, fixed-size datafile,
Genezzo can be configured to use datafiles that grow to some maximum
size, and it can also be configured to automatically create new
datafiles as necessary.
All tables are currently created in the system tablespace by default.
There are a couple of other useful commands:
HELP -- give help
DUMP -- dump out internal data structures
DUMP TABLES - list all tables
DUMP TS - dump tablespace information
RELOAD - reload all Genezzo perl modules (will lose uncommited changes,
though)
COMMIT - force write of changes to database. Note that even CREATE
TABLE is transactional -- you have to commit to update the persistent
dictionary. Forgetting to commit can cause weird behaviors, since the
buffer cache may flush data out to the dbf file. Then you can have the
condition where the tablespace reuses these "empty" blocks and they
already have data in them.
Environment
GNZ_HOME: If the user does not specify a gnz_home directory using the
'-gnz_home' option, Genezzo stores dictionary and table information in
the location specified by this variable. If GNZ_HOME is undefined, the
default location is $HOME/gnz_home.
AUTHORS
Copyright (c) 2003-2007 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 US
Address bug reports and comments to: jcohen@genezzo.com
For more information, please visit the Genezzo homepage at
<http://www.genezzo.com>
perl v5.20.2 2015-08-30 GENDBA(1)