SQL database system
 
Manual page for specs(&)

SHSQL specs and limitations at-a-glance

Home pagehttp://shsql.sourceforge.net       Overview       Download
License termsGPL
Year of initial release 2003
OSSolaris, Linux, other unix.
External dependenciesNone. Distributed as C source code; a C compiler such as gcc is required.
Required environment variable SHSQL_DB
Test suite A compact test suite is included with the source code; see ./sqlexampledb/testruns. A test suite involving larger tables may be downloaded separately.
SQLBasic core is supported, with some syntax exceptions and extensions, most of which are noted in this table or here.
Data typesSHSQL is basically "typeless". All fields are stored in character form. ORDER BY and CREATE INDEX have numeric options.
SELECT Standard basic syntax supported. DISTINCT, INTO, GROUP BY, ORDER BY, LIMIT are all supported. Limitations: no arithmetic or functions (except aggregation functions mentioned below) in the select item list; certain where clause limitations; compound constructs such as sub-selects not supported. Aggregation functions: count(), sum(), avg(), min(), max().
JOIN Described here. Two- or three-table joins are supported, with these join types available: INNER, LEFT, RIGHT, OUTER. Must use ..JOIN..ON.. syntax. Extensions for explicitly handling multiple rows having the same key.
INSERT & DELETEStandard basic syntax supported.
UPDATEStandard basic syntax supported, plus a convenience extension ORINSERT, which causes UPDATE to add a new record if one doesn't already exist.
WHERE clauseDescribed here. Supports list operators such as IN and INLIKE numeric range operators INRANGE and OUTRANGE, and multiword text operator CONTAINS. Non-standard syntax for some comparisons. Arithmetic expressions, functions, full regexp not supported. Fixed presidence (OR over AND) for compound conditionals, and parentheses cannot be used to alter this. Default wild card character is * (configurable).
CREATE, DROP, ALTER CREATE, DROP, and ALTER are supported ; some non-standard syntax.
NULL handling Described here. The symbol used to represent NULL in data files is configurable.
Temporary tablesTemp tables may be created using SELECT INTO and are generally private to one unix process. Temporary table names always begin with a dollar sign ($) in shsql queries.
Queries involving large row sets Default maximum on the number of rows retrieved/updated is 2000 rows, but this figure can be changed via the config file or within a query using the MAXROWS keyword.
Sequencesshsql includes a facility for automatic allocation of sequences or serial numbers for use as keys.
IndexingISAM, alphanumeric or numeric ordering. Not updated on-the-fly; indexes are rebuilt from time to time. Index tags are truncated at 15 chars (configurable). Several index types available, including DIRECT and WORD indexes with "very common words" omitted.
Locking / concurrency controlTable locking and record locking.
Offline maintenanceDatabase writes are blocked to a table during routine maintenance (essentially a procedure for cleaning up dead entries and rebuilding indexes). Maintenance is typically done at off-peak times via a cron job.
Data representation Data are stored as tabular ASCII files. Fields are delimited by a certain ASCII character (space by default but this is configurable).
LogsAutomatic transaction and error logging
Maximum field length255 characters
Maximum number of fields in a table80 fields
Maximum number of fields in a retrieval result, including join results80 fields
Maximum length of any single data row (record)3000 characters.
Maximum length of a field name 48 characters. This limit includes any table prefix for join result fields, eg people.lastname
Code sizeExecutable size of shsql(1) is ~180 kB on solaris
Memory footprint
of an executing shsql(1) process
Approximately 1 MB



Copyright Steve Grubb  


Markup created by unroff 1.0,    April 28, 2004.