159 lines
6.9 KiB
Plaintext
159 lines
6.9 KiB
Plaintext
___ _____ _____
|
|
| | | | | ) / / /
|
|
|`'| _ -|- _ || | '_ _ .-. _ / / /
|
|
| | ( ) | ( \ `| | ) ( \ `-. ( ) `---. / /
|
|
| -'--`-- - `-' \/ ---' - - `-`- --'-- / <> / /
|
|
___________________________/\_____________________`.__/_____/____/_____________
|
|
|
|
Please read the dox /
|
|
'
|
|
|
|
|
|
WHAT'S NEW IN THIS RELEASE:
|
|
|
|
o SPEED
|
|
MetalBase 5.0 destroys even 4.1a speed-wise; queries are the same
|
|
speed, but adds/updates/deletes are always at least twice as fast, and
|
|
often over three times as fast! Internal caching of index pointers
|
|
just makes the whole world turn 'round better...
|
|
|
|
o CONVERSION
|
|
The utility MBCONV will convert 4.0 and 4.1a relations to 5.0 format.
|
|
It is absolutely perfectly safe, but requires that you have enough
|
|
free space to essentially make a copy of the relation.
|
|
|
|
o LOCKING
|
|
Previously, unless you compiled with -DUNIX_LOCKS (and had a *nix
|
|
machine), bad things would happen if a program shut down while
|
|
something was being changed. Now, since all indices are written at
|
|
once (caching is so nice), chances of corruption are much smaller; and
|
|
if a process does shut down with a system-placed lock in place, the
|
|
next process will detect the condition and remove the lock, and
|
|
decrement the number of users. A request queue has also been built
|
|
in, so that processes will always get equal timeshares.
|
|
|
|
o CREATE ON-THE-FLY
|
|
You can now design and create a relation at run-time:
|
|
rel = mb_new();
|
|
mb_addfield (rel, "Customer's last name", T_CHAR, 15);
|
|
mb_addfield (rel, "Customer's first name", T_CHAR, 10);
|
|
mb_addfield (rel, "Customer's number", T_SERIAL, 40);
|
|
mb_addindex (rel, "ix_name", 1, "0,1");
|
|
mb_addindex (rel, "ix_number", 1, "2");
|
|
mb_create (rel, "/usr/joe/simple.rel", 0);
|
|
Check out the code for BUILD and MBCONV; they both use it.
|
|
|
|
o SIMPLE PHONE NUMBERS
|
|
The schema type "phone" (C typedef == "mb_phone") has been added to
|
|
5.0 to make handling of phone numbers easier; phone types accept area
|
|
codes (of course), and extensions up to x99999. The routines
|
|
scn_phone() and fmt_phone() are included for quick handling of phone
|
|
numbers, just as scn_ and fmt_ are provided for date and time!
|
|
|
|
o ENCRYPTION
|
|
Encryption is now working for everyone, even MS-DOS users. Be
|
|
careful, though--I'm haphazard enough with encryption that, for
|
|
example, a bad encryption key passed to VR under DOS will usually
|
|
make you reboot your machine; under *nix it'll usually cause a seg
|
|
violation. Now THAT's encryption. :)
|
|
|
|
o DOCUMENTATION
|
|
The documentation, though still not perfect, is much more up to date
|
|
than it was for the 4.0 release. Included here are:
|
|
|
|
dox/mbase.dox -- General documentation (the important stuff)
|
|
|
|
dox/author.dox -- Information on where the hell I can be reached
|
|
dox/build.dox -- Information on schema and their compiler, build
|
|
dox/crypt.dox -- Information on MetalBase's encryption technique
|
|
dox/flow.dox -- Pseudocode for MetalBase's AVL-tree algorithms
|
|
dox/format.dox -- Character-by-character format for relations
|
|
dox/lock.dox -- Information on MetalBase's locking algorithms
|
|
dox/struct.dox -- Information on C structure interface
|
|
dox/report.dox -- Incomplete documentation on the report writer
|
|
dox/trouble.dox -- Troubleshooting ideas (not too many--sorry)
|
|
|
|
o NO DAMNED DEBUGGING TRAILS
|
|
If you got this release hoping I'd leave some debugging trails in the
|
|
code again, BZZZZZT! Sorry, but I'm only allowed to fuck up like that
|
|
once a year. I really, really feel stupid about that...
|
|
|
|
|
|
|
|
|
|
HOW TO BUILD THE STUPID THING:
|
|
|
|
o Go to the SRC directory.
|
|
|
|
o If you're using *nix.............type "MAKE"
|
|
If you're using Microsoft C......type "NMAKE -f makefile.dos"
|
|
If you're using something else...pick either makefile and modify it.
|
|
|
|
o It'll compile and run STRUCT (or STRUCT.EXE), which will tell you that
|
|
you're either screwed, or what to change in the makefile to make the
|
|
library appropriately for your compiler. If you're screwed, send me
|
|
mail (see dox/author.dox). If you're not, do as it says.
|
|
|
|
o Check the makefile to make sure it's going to put the headers, library
|
|
and executables wherever you want it to.
|
|
|
|
o Type "MAKE INSTALL" (or "NMAKE -f makefile.dos INSTALL" for Microsoft C).
|
|
|
|
o It'll compile the library and executables, and put them where you said
|
|
to.
|
|
|
|
o If you have any relations from MetalBase 4.0 or MetalBase 4.1a, go to
|
|
where they are and type "MBCONV relationname". It'll convert them to
|
|
5.0 (and hopefully the final) format and tell you it's done (it's really
|
|
quick, but IRREVERSABLE).
|
|
|
|
|
|
|
|
|
|
WHAT TOYS YOU GET:
|
|
|
|
o BLAST.EXE - Removes locks accidentally left around on a relation; sets
|
|
the internal number-of-users-on-this-relation to zero.
|
|
|
|
o BUILD.EXE - Compiles relations from schema files; erases all records
|
|
in a relation.
|
|
|
|
o FORM.EXE - Builds header files from data-entry templates; the DE
|
|
interface is really, really easy to program. It's not perfect, but
|
|
it's nice.
|
|
|
|
o MBCONV.EXE - Converts pre-5.0 relations to 5.0 format. Works great!
|
|
|
|
o REPORT.EXE - Generates reports from template files, interpereted at
|
|
run-time.
|
|
|
|
o VR.EXE - View Relation--one of my favorite toys. 4.0 users, NON-VI
|
|
emulation is now the default; it's much, MUCH easier to add and change
|
|
records. The basics of the new DE keys are:
|
|
CTRL-A, CTRL-return - Accept a transaction
|
|
CTRL-Q, CTRL-C - Abort a transaction
|
|
CTRL-U, - Undo a change within a field
|
|
Arrows, End, Home - As expected
|
|
|
|
|
|
|
|
|
|
HOW TO PLAY WITH THE STUPID THING:
|
|
|
|
I've included two programs with this; SAMPLE and BENCH. BENCH is just a
|
|
benchmark utility (see sample/readme), but SAMPLE is meant to be example
|
|
code, for hooking up the (suggested) data-entry interface, for adding/
|
|
deleting/changing records, etc.
|
|
|
|
Go to the directory SAMPLE and pick-n-edit a makefile. Note that you
|
|
don't need -DSTRUCT_ in these; that's just for building the library. But
|
|
you WILL need -DNEED_USHORT if your compiler doesn't contain ushort, etc.
|
|
|
|
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
Richid
|
|
-------------------------------------------------------------------------------
|
|
|