Despite its beta state, Axion is not a toy database. It has been (and continues to be) used in commercial products containing millions of rows and gigabytes of data, and has been shown to readily process thousands of transactions a second (on mediocre desktop hardware).
These early applications had somewhat peculiar needs--a high performance, small footprint but fairly large, primarily write-once, in-process database. Hence most of the initial development has focused on these features. Yet the Axion team aims to provide a complete engine as well, and we believe we are well on our way to that goal.
- DDL
ALTER TABLE [DROP|ADD] CONSTRAINT
CREATE TABLE [IF NOT EXISTS]
CREATE [UNIQUE] INDEX [IF NOT EXISTS]
CREATE SEQUENCE [IF NOT EXISTS] ... [ STARTS WITH ...]
CREATE VIEW
DROP TABLE [IF EXISTS] ...
DROP SEQUENCE [IF EXISTS] ...
DROP INDEX [IF EXISTS] ...
DROP VIEW
DEFAULT expression (in column definitions)
- DML
DELETE
INSERT
INSERT INTO ... SELECT ..
UPDATE
TRUNCATE TABLE
- DQL
SELECT [ALL|DISTINCT] ... [FROM ...] [WHERE ...] [ORDER BY ...] [LIMIT expression] [OFFSET expression]
CASE (WHEN ... THEN)+
LEFT and RIGHT OUTER joins, INNER joins, cross joins
LIMIT (SELECT ... LIMIT n)
OFFSET (SELECT ... [LIMIT n] OFFSET m)
ORDER BY (including functions, non-selected columns, etc.)
GROUP BY
- WHERE
<, <=, =, >, >=, !=, <>
IS [NOT] NULL
IN (literal1, literal2, ...)
AND, NOT, OR
LIKE
- JDBC
BLOBs (including compressed BLOBs)
CLOBs (including compressed CLOBs)
Driver
DataSource
most (relevant) JDBC meta-data
- Miscellaneous
aggregate functions (operating on multiple rows, like COUNT or MAX)
auto-number columns (via sequences and column defaults)
configurable data type and function names
pluggable index types
pluggable table types
ROWNUM and SYSDATE (like Oracle's pseudo-columns)
scalar functions (operating on a single row, like UPPER/UCASE or CONCAT)
sequences (including NEXTVAL and CURRVAL)
transactions (snapshot isolation, stronger than TRANSACTION_SERIALIZABLE, with no locking)
sub-selects
See Axion's test suite for examples of these features in action. See the tidbits page for some additional features.
HAVING
client/server mode
stored procedures
triggers (note that default column values are supported)
user-level security
Many of these features aren't that far away, we simply haven't had significant need for them just yet. If there are missing features that are critical to you, let us know, we may be able to provide them sooner than you think. (Of course, you're welcome to join us as well.)