Beagle Logo
Beagle SQL - Development in Progress

[Home] [Documentation] [Download] [Features] [History]

Authors: Robert Klein & Jean-Claude Magras
Server Usage Statistics

Cool News

  • I've written an article for the February 98 issue of Linux Journal Magazine that provides an introduction to BeagleSQL.
  • Beagle has been mentioned in the the C/C++ User's Journal again in the Jan 1998.
  • Beagle has been mentioned in an article in the C/C++ User's Journal in the March 1997 issue on page 90.

    Mailing List

    To subscribe to the Beagle mailing list send a message to [email protected] with the body 'SUBSCRIBE beagle'. The address for the list is [email protected]

    Development Environment

  • Linux v2.0.27 - INTEL (RedHat Distribution)
  • gcc 2.7
  • Solaris 2.6 - Sparc
  • gcc 2.8.1

    Currently Supported Platforms

  • Linux (Intel/AXP)
  • SCO Openserver
  • FreeBSD 2.1R
  • SGI IRIX v5.3
  • Solaris v2.x
  • HP/UX

    Current Status

    01/25/1999 Version 0.86a released. Features now include JAVA 1.1 support thru JDBC !
    Authentication support has been added by using a new Protocol. Support for encryption is also included in the new login protocol.
  • The default authentication is SHA-1 and no encryption.
  • Future work will include OIF format exchange utilities called dbload" and "odbdump".
  • The Java code can be found in the jdbc directory. Look at for more info on using ResultSet and ResultSetMetaData objects.
    As the email addresses above suggest, I have taken over most of the work on Beagle. Rob said something about family. Oh well...
    03/05/1998 Version 0.80a released. Features include system tables (sys_db, sys_user, sys_table, sys_field, sys_auth, sys_index), mild authentication, bug fixes. This release was a major rewrite of some areas. Make sure you check the documentaion at /docs for installation instructions and other documentation

    02/17/1998 Beagle is going Object Relational. I just finished reading Won Kim's paper "On Object-Oriented Database Technology". The direction I've been taking this database is close to what he regards as the union of OODBs and RDBs. The first step was the use of the RECIDs or 'oid' in OO terms. I'm going to concentrate on the underlying code needed to implement OO features of the extented SQL outlined in his paper. Here are some of the features will be implemented:
  • inhertence
  • complex data types. Any table that you create will also be treated as a datatype. For Example: CREATE TABLE emp (name char, dob char, salary integer, manager emp).This allows you to issue queries like: SELECT * from emp where emp.salary > emp.manager.salary returning all employees who make more than thier boss.
  • entensible data types. The oid (was RECID) data type will be a canned example and will be defined as three integers.

    I'll be releasing the code for anyone to try out but be fore-warned, data structures will change frequently in the next six months.

    BTW: I've completed the following:
  • changed SYS_RECID data type to 'oid' to reflect the object oritented usage of the field
  • system catalog
  • user authentification
  • and scripts
  • use of system variables BG_PATH (beagle executables) and BG_DATA (where databases are stored)

    02/02/1998 Jean-Claude has added Integer support and is working on TIME and DATE. There was also a problem with connecting from a remote client that has been taken care of. I had the source and destination in a memcpy reversed...Scary...

    01/20/1998 As it's been very difficult to handle the entire development effort on my own I'd like to put together a small development team of 4-5 reliable and experienced programmers to help me get Beagle up to par with commercial database packages. If you're interested, let me know.

    12/02/1997 While working on the UPDATE statement I found a very nasty bug in the join operation. Although the join still worked, it caused a performance and storage problem that would get exponentially worse the greater the number of records in the table. The posted source has the partially completed UPDATE code if you want to take a look at it. It's disabled in the backend of course....

    10/24/1997 I'm currently working on the UPDATE statement. Before I could start it I needed to add a system field to all tables called SYS_RECID. This is the system assigned unquie id for each record in a table. Note that it is only unique per table. I doing this I've also allowed for an integer datatype. There are still a few kinks to work out before I release the code. These include adding index support for non character datatypes and modifying the expression parser to correctly evaluate numeric comparisions. I'll be done shortly. IMPORTANT: This new version will be incompatible with data files from previous versions. I've tried to keep this from happening but sometimes you just have to bite the bullet. I should add a database dump feaure to isql to make conversion easier if it ever happens again.

    To perform a SELECT that includes the SYS_RECID field you need to explicitly include it in the field list of the SELECT. Wildcards will not return system fields. For example:

    SELECT SYS_RECID, * FROM phonebook

    9/03/1997 Solaris problem fixed & tested on Solaris 2.6. Also updated the README. Thanks to Michael Kim of Hard Drive Recovery Group in Irvine, California for giving me an account on their Dell PowerEdge to do my debugging. Also thanks to White Vector and Jacques Laporte

    8/25/1997 Still having problems with Solaris 2.5.1 but HP/UX seems OK. Today's release fixes some bugs in the Perl client code and API. The new Perl client (still called contains all the functionality of the isql demo.sql script.

    8/20/1997 Fixed some not so portable code that was causing the backend to crash on HP/UX and Solaris.

    8/13/1997 Perl advocates rejoice! I've added a small Perl API. It's much simlper than the C API. Several of the C functions necessary to build a client aren't needed by Perl. The BSQLQueryDB subroutine returns a list to the client. Normally the list has a single value, a status code. When a SELECT is set though, the list contains a bunch of stuff. The status code, # of tuples, # fields, field info, and all the values that matched your select. See the perl API module for the gory details. The Perl demo client is called oddly enough

    8/5/1997 I've posted a new version of Beagle complete with Memory Leak fixes as well as a bunch of other bug fixes. The backend was extremely "sensitive" to SQL syntax errors. Often times it just crashed when a bad SQL statement was processed. Much of this has been fixed. I've also replaced the demo client with an interactive monitor program called 'isql'. The SQL statements in the old demo client have been placed in a script called demo.sql which you can execute from isql. See the README for more details.

    You'll also notice a program called malloc_stats.c. It's just a little utility I wrote to analyze the beagled.log file to help track down memory leaks. Please note that there is a TON of info written to this log file (2 Meg from the demo.sql script alone!). Before you do any real work, turn logging off before you compile the backend. In the furture I'll add the ability to toggle logging on the fly.


    Here are some great references I'm using for the project. I highly recommend all of them:

  • On Object-Oriented Database Technology
    Won Kim, Ph.D., UniSQL, Inc.
  • Practical Algorithms for Programmers
    Andrew Binstock and John Rex, Addison Wesley.
  • Logical Introduction to Databases
    John Grant, Hardcourt Brace Jovanovich, Publishers.
  • Internetworking With TCP/IP Volume III, Client-Server Programming And Applications
    Douglas E. Comer & David L. Stevens, Prentice Hall
  • Database Systems Laboratory - Dept. of C.S., University of Massachusetts, Amherst - A great store of database development resources