YaK:: Trying Versant ODBMS 7.0.1 [Changes]   [Calendar]   [Search]   [Index]   [PhotoTags]   
[mega_changes]
[photos]

Trying Versant ODBMS 7.0.1

I used to work for Versant, from 1989 to 1999 -- I was employee number 11 (decimal).

After not touching the product in almost 10 years, I decided to download a free trial copy of the ODBMS and see if I still recognized it.

I do! In the /bin/ directory, I see commands that I wrote 20 years ago: sch2db, db2tty, verr, verrindx, dropclass. I'm pretty sure I'm also largely responsible for many files including these: h/cxxcls/linkvstr.h h/cxxcls/infovstr.h h/cxxcls/check.h h/cxxcls/cxxerr.h lib/error.msi And I still feel pretty proud of the brilliant C Preprocessor hackery in h/cxxcls/try.h

Here's a quick plog of stuff that worked for me, if you want to try it, too!

I installed in /gwarn/versant as my own user (strick). Because I didn't install as root, I had to do my own /etc/xinetd.d file for the ss.d program that accepts client connections.


export PATH=/gwarn/versant/7.0.1/bin/:/opt/gwarn/ActiveTcl8.4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/home/strick/bin

562 $ export VERSANT_ROOT=/gwarn/versant/7.0.1


563 $ export VERSANT_DB=/gwarn/versant/db


564 $ export VERSANT_DBID=/gwarn/versant/dbid


565 $ export VERSANT_DBID_NODE=gwarn

578 $ dbid -N
UT_ER_DBID_CREATE: Cannot create database ID file at /gwarn/versant/dbid/osc-dbid ("ut/utlog.c", line 113)
E7066: UT_ER_DBID_CREATE: Cannot create database ID file at %s
]]


$ mkdir /gwarn/versant/dbid

581 $ dbid -N

612 $ verr 7066
====== SEARCHING FOR `7066' ======
7066, UT_ER_DBID_CREATE:  Cannot create database ID file at %s


613 $ sch2db
Usage:  sch2db [-options....] file1.sch file2.sch ...
        -D db   database: use database db (or use O_DBNAME environment)
        -n      no: make no changes
        -y      yes: make any changes
        -i      interactive (default): ask yes or no (stdin must be tty)
        -e      evolution: schema evolution is a potential strategy
        -r      rename: rename attribute is a potential strategy
        -f      force: dropping classes is a potential strategy
        -u      user: run as this DB user
        -p      password: enter password for the DB user entered in -u


614 $ db2tty
Usage 1:        db2tty   -D databaseName  [options] [ classnames ... ]
Usage 2:        db2tty   -D databaseName  [-l] -o loids
                -i      show instances
                -a      show all classes (including system)
                -u      username to access the DB
                -p      password for the user accessing the db
                -s      show schema infomation only
                -t LX   operate in long transaction LX
                -l      use read locks (default is NOLOCK)
                -n      number of objects per cursor fetch (default is 200,valid only with -i option)
                -c loids        set default configuration list to specified
                                loids and query with O_CM_VALIDATE option
                -b              do query with O_CM_MUST_HAVE_SMART option
                -o loids        display objects with specified loids


623 $ dropclass
Usage:  dropclass [-options....] class1 class2 ...
        -D db   database: use database db (or use O_DBNAME environment)
        -n      no: make no changes
        -y      yes: make any changes
        -i      interactive (default): ask yes or no (stdin must be tty)
        -u      user: run as this DB user
        -p      password: enter password for the DB user entered in -u


616 $ oscp -v
7.0.1


617 $ oscp -b

Versant Release Version: 7.0.1.4.11.0
Platform: Red Hat Enterprise Linux
Operating System: 5.0
OS Patch Info:
C Version: gcc 4.1.2
C++ Version: g++ 4.1.2
C++ Patch Info:
...


# A license.xml file came in the email.
$ mv ~/Downloads/license.xml /gwarn/versant/7.0.1

$ makedb -p  uno
VERSANT Utility MAKEDB Version 7.0.1.4
Copyright (c) 1988-2008 VERSANT Corporation

Making directory at /gwarn/versant/db/uno ...

Back end profile created at /gwarn/versant/db/uno/profile.be

Front end profile created at /home/strick/.osc/uno

626 $ createdb
Usage: createdb [options] <dbname>
options:
        -i              pre-allocate and initialize the database
        -il             pre-initialize the physical and logical logs to logvolmaxsize
        -noprint        suppress display messages
dbname: database name


627 $ createdb -i uno
VERSANT Utility CREATEDB Version 7.0.1.4
Copyright (c) 1988-2008 VERSANT Corporation

database ID is 1

Physical log volume created at /gwarn/versant/db/uno/physical.log
size=1024 pages ( page size = 2048 bytes )

Logical log volume created at /gwarn/versant/db/uno/logical.log
size=1024 pages ( page size = 2048 bytes )

System volume created at /gwarn/versant/db/uno/system
size=8192 pages ( page size=16384 bytes ), extent size=2, number of extents=4096
Formatting system volume ...
Creating system classes ...

631 $ startdb uno
VERSANT Utility STARTDB Version 7.0.1.4
Copyright (c) 1988-2008 VERSANT Corporation

Beginning physical recovery phase

Ending physical recovery phase

Beginning logical recovery phase

Ending logical recovery phase

Database is in multi-user mode ...

665 $ dblist
VERSANT Utility DBLIST Version 7.0.1.4
Copyright (c) 1988-2008 VERSANT Corporation

ID           = 1
DB name      = uno@gwarn
creator      = strick
date created = Thu Oct 22 18:50:23 2009
db type      = PERSONAL DATABASE
db version   = 7.0.1.4


##### CREATE A SERVICE IN XINETD, AND HUP IT: #####
root@gwarn:~# cat /etc/xinetd.d/oscssd
service oscssd
{
        id              = oscssd
        server          = /gwarn/versant/7.0.1/bin/ss.d
        flags           = REUSE
        type            = UNLISTED
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = strick
        disable         = no
        port            = 5019
}

698 $ db2tty -D uno -a -i

====== CLASS `class' ======
[no superclasses]
attributes:
  name                           :  char[]
  supclses                       -> class[]
  subclses                       -> class[]
  numattrs                       :  o_4b
  attrs                          -> attribute[]
  nummeths                       :  o_4b
  meths                          -> method[]
  defaultval                     :  o_u1b[]
  memlen                         :  o_4b
  storlen                        :  o_4b
  status                         :  o_4b
  storseg                        :  o_4b
  storcls                        :  o_4b
  auxinfo                        :  o_u1b[]
  auxobj                         -> (NULL_DOMAIN)
  prevvsn                        :  o_u1b[0]

Instances of class 'class' :

## L {=0xf7c5e010;c_l_();;0} #0xf7c5e010[0.0.1:class]  T=0xf7c62090 {reg,sch} (uno)
##      name                   6="class"
##      supclses               0=( )
##      subclses               0=( )
##      numattrs               16
##      attrs                  16=( #0xf7c5e120[0.0.18:attribute] #0xf7c5e130[0.0.19:attribute] #0xf7c5e140[0.0.20:attribute] #0xf7c5e150[0.0.21:attribute]
##              4... #0xf7c5e160[0.0.22:attribute] #0xf7c5e170[0.0.23:attribute] #0xf7c5e180[0.0.24:attribute] #0xf7c5e190[0.0.25:attribute]
##              8... #0xf7c5e1a0[0.0.26:attribute] #0xf7c5e1b0[0.0.27:attribute] #0xf7c5e1c0[0.0.28:attribute] #0xf7c5e1d0[0.0.29:attribute]
##              12... #0xf7c5e1e0[0.0.30:attribute] #0xf7c5e1f0[0.0.31:attribute] #0xf7c5e200[0.0.32:attribute] #0xf7c5e210[0.0.33:attribute] )
##      nummeths               0
##      meths                  0=( )
##      defaultval             0=""
##      memlen                 100
##      storlen                100
##      status                 0
##      storseg                -1
##      storcls                -1
##      auxinfo                0=""
##      auxobj                 #NIL
##      prevvsn                0=""

...
...
...

Trying the tutorial demo:

Notice I had to add CC=' gcc -m32 -static ' because I installed 32-bit RedHat5.0 Versant on a somewhat-64-bit Ubuntu Hardy box. (I had been getting errors like this:

/usr/bin/ld: skipping incompatible /gwarn/versant/7.0.1//lib/libosc.so when searching for -losc
/usr/bin/ld: skipping incompatible /gwarn/versant/7.0.1//lib/libosc.a when searching for -losc
/usr/bin/ld: cannot find -losc
)

712 $ cd  /gwarn/versant/7.0.1/demo/c/tutorial
713 $ make CC=' gcc -m32 -static ' build_demo
gcc -m32 -static -g -I`oscp -p`/h   -c  basicemp.c
gcc -m32 -static   -o basicemp basicemp.o -g -L`oscp -p`/lib -losc -lm -lpthread -ldl -lstdc++
gcc -m32 -static -g -I`oscp -p`/h   -c  employee.c
gcc -m32 -static   -o employee employee.o -g -L`oscp -p`/lib -losc -lm -lpthread -ldl -lstdc++
gcc -m32 -static -g -I`oscp -p`/h   -c  depart.c
gcc -m32 -static   -o depart depart.o -g -L`oscp -p`/lib -losc -lm -lpthread -ldl -lstdc++
gcc -m32 -static -g -I`oscp -p`/h   -c  basics.c
gcc -m32 -static   -o basics basics.o -g -L`oscp -p`/lib -losc -lm -lpthread -ldl -lstdc++
gcc -m32 -static -g -I`oscp -p`/h   -c  updates.c
gcc -m32 -static   -o updates updates.o -g -L`oscp -p`/lib -losc -lm -lpthread -ldl -lstdc++
gcc -m32 -static -g -I`oscp -p`/h   -c  links.c
gcc -m32 -static   -o links links.o -g -L`oscp -p`/lib -losc -lm -lpthread -ldl -lstdc++

[ actually it was much noisier than that ]

723 $ PATH=.:$PATH make CC=' gcc -m32 ' run_demo
removedb -noprint -rmdir -f c_demo_db
makedb -p c_demo_db
VERSANT Utility MAKEDB Version 7.0.1.4
Copyright (c) 1988-2008 VERSANT Corporation

Making directory at /gwarn/versant/db/c_demo_db ...

Back end profile created at /gwarn/versant/db/c_demo_db/profile.be

Front end profile created at /home/strick/.osc/c_demo_db
createdb c_demo_db
VERSANT Utility CREATEDB Version 7.0.1.4
Copyright (c) 1988-2008 VERSANT Corporation

database ID is 4

Physical log volume created at /gwarn/versant/db/c_demo_db/physical.log
size=1024 pages ( page size = 2048 bytes )

Logical log volume created at /gwarn/versant/db/c_demo_db/logical.log
size=1024 pages ( page size = 2048 bytes )

System volume created at /gwarn/versant/db/c_demo_db/system
size=8192 pages ( page size=16384 bytes ), extent size=2, number of extents=4096
Formatting system volume ...
Creating system classes ...

basicemp c_demo_db
Created Employee class
basics c_demo_db Nick Tracy Bree
basics c_demo_db
Found Employee: Nick
Found Employee: Tracy
Found Employee: Bree
dropclass -y -D c_demo_db Employee
Schema changes needed:
Drop class `Employee' and all its instances
APPLYING SCHEMA CHANGES
employee c_demo_db
Created Employee class
updates c_demo_db < updates.data

Enter employee name to search for:      Select returned 0 employee objects.
l-ist c-hange d-elete i-nsert a-ll : Creating employee ...
Continue? y/n
Enter employee name to search for:      Select returned 0 employee objects.
l-ist c-hange d-elete i-nsert a-ll : Creating employee ...
Continue? y/n
Enter employee name to search for:      Select returned 0 employee objects.
l-ist c-hange d-elete i-nsert a-ll : Creating employee ...
Continue? y/n
Enter employee name to search for:      Select returned 1 employee objects.
l-ist c-hange d-elete i-nsert a-ll : Retrieving data for employees named Gery.
Gery Production $35000.00 #100022 Engineer
Continue? y/n
Enter employee name to search for:      Select returned 1 employee objects.
l-ist c-hange d-elete i-nsert a-ll : Change job description to: Change department to: Continue? y/n depart c_demo_db
Created Department class
links c_demo_db
=>Create new Employee managers...
=>Create new Departments...
=>Create new Employees...
=>Assign Employees to Departments...

------------ 3 Departments and their Employees ------------
The Production department is managed by Bob Black
and is staffed by the following 2 employees:
Larry Link Production $35000.00 #100022 Engineer
Ethel Murtz Production $35000.00 #100022 Engineer

The Research & Development department is managed by Bill Green
and is staffed by the following 1 employees:
Oliver Object Research & Development $35000.00 #100022 Engineer

The Quality Assurance department is managed by Tom White
and is staffed by the following 0 employees:
------------

=>Delete employee Larry Link...
=>Move Ethel Murtz from Production to Quality Assurance...

------------ 3 Departments and their Employees ------------
The Production department is managed by Bob Black
and is staffed by the following 0 employees:

The Research & Development department is managed by Bill Green
and is staffed by the following 1 employees:
Oliver Object Research & Development $35000.00 #100022 Engineer

The Quality Assurance department is managed by Tom White
and is staffed by the following 1 employees:
Ethel Murtz Quality Assurance $35000.00 #100022 Engineer
------------




725 $ db2tty -D c_demo_db -i

====== CLASS `Employee' ======
[no superclasses]
attributes:
  emp_name                       :  char[]
  emp_department                 :  char[]
  emp_salary                     :  o_float
  emp_number                     :  o_u4b
  emp_job_description            :  char[]

Instances of class 'Employee' :

## L {=0xf7c56840;c_l_();;0} #0xf7c56840[4.0.5135:Employee]  T=0xf7c6a0b0 {reg} (c_demo_db)
##      emp_name               5="John"
##      emp_department         3="rd"
##      emp_salary             35000
##      emp_number             91
##      emp_job_description    9="engineer"

## L {=0xf7c56850;c_l_();;0} #0xf7c56850[4.0.5136:Employee]  T=0xf7c6a0d8 {reg} (c_demo_db)
##      emp_name               5="Gery"
##      emp_department         11="Production"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    9="Engineer"

## L {=0xf7c56860;c_l_();;0} #0xf7c56860[4.0.5137:Employee]  T=0xf7c6a100 {reg} (c_demo_db)
##      emp_name               4="Joe"
##      emp_department         11="Production"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    9="Engineer"

## L {=0xf7c56870;c_l_();;0} #0xf7c56870[4.0.7187:Employee]  T=0xf7c6a128 {reg} (c_demo_db)
##      emp_name               10="Bob Black"
##      emp_department         11="Production"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    8="Manager"

## L {=0xf7c56880;c_l_();;0} #0xf7c56880[4.0.7188:Employee]  T=0xf7c6a150 {reg} (c_demo_db)
##      emp_name               11="Bill Green"
##      emp_department         23="Research & Development"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    8="Manager"

## L {=0xf7c56890;c_l_();;0} #0xf7c56890[4.0.7189:Employee]  T=0xf7c6a178 {reg} (c_demo_db)
##      emp_name               10="Tom White"
##      emp_department         18="Quality Assurance"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    8="Manager"

## L {=0xf7c568a0;c_l_();;0} #0xf7c568a0[4.0.7194:Employee]  T=0xf7c6a1a0 {reg} (c_demo_db)
##      emp_name               12="Ethel Murtz"
##      emp_department         18="Quality Assurance"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    9="Engineer"

## L {=0xf7c568b0;c_l_();;0} #0xf7c568b0[4.0.7195:Employee]  T=0xf7c6a1c8 {reg} (c_demo_db)
##      emp_name               14="Oliver Object"
##      emp_department         23="Research & Development"
##      emp_salary             35000
##      emp_number             100022
##      emp_job_description    9="Engineer"


****** Total 8 instances of class 'Employee' ******

====== CLASS `Department' ======
[no superclasses]
attributes:
  dep_name                       :  char[]
  dep_manager                    -> Employee
  dep_employees                  -> Employee[]

Instances of class 'Department' :

## L {=0xf7c56870;c_l_();;0} #0xf7c56870[4.0.7190:Department]  T=0xf7c5e0d0 {reg} (c_demo_db)
##      dep_name               11="Production"
##      dep_manager            #0xf7c568a0[4.0.7187:]
##      dep_employees          0=( )

## L {=0xf7c56880;c_l_();;0} #0xf7c56880[4.0.7191:Department]  T=0xf7c5e0f0 {reg} (c_demo_db)
##      dep_name               23="Research & Development"
##      dep_manager            #0xf7c568b0[4.0.7188:]
##      dep_employees          1=( #0xf7c568c0[4.0.7195:] )

## L {=0xf7c56890;c_l_();;0} #0xf7c56890[4.0.7192:Department]  T=0xf7c5e130 {reg} (c_demo_db)
##      dep_name               18="Quality Assurance"
##      dep_manager            #0xf7c568d0[4.0.7189:]
##      dep_employees          1=( #0xf7c568e0[4.0.7194:] )


****** Total 3 instances of class 'Department' ******


strick ... formerly@ versant.com

$ find /gwarn/versant/7.0.1 -type f | xargs grep -i strick
/gwarn/versant/7.0.1/h/check.h: *  $Id: check.h,v 1.30 91/09/30 12:59:50 strick Exp $
/gwarn/versant/7.0.1/h/osc.h: *  $Id: osc.h,v 1.41 94/11/22 17:34:29 strick Exp $
...
(unless otherwise marked) Copyright 2002-2014 YakPeople. All rights reserved.
(last modified 2009-10-23)       [Login]
(No back references.)