The Axion news feed is on hiatus, yet Axion is still being actively developed. The mailing lists may be a better source for up-to-date news.
November was a quiet month for Axion development, but one that brought big news.
- News
The Apache DB Project has accepted Axion's proposal to become a part of the Apache Software Foundation. (Unfortunately, the general@db mailing list doesn't seem to be archived anywhere on the web. Send a mail to general-thread.243@db.apache.org to read the [VOTE] thread or to general-thread.257@db.apache.org to read the [RESULT] thread.) Next step: the Apache Incubator, where Morgan Delagrange has volunteered to act as "mentor".
- Changes
Morgan fixed a bug causing non-ASCII characters used in straight SQL to be mangled. In previous versions, only bind variables were handling non-ASCII characters properly. See http://radio.weblogs.com/0116794/2003/11/24.html and the commit message for details.
- Discussion
James Cassidy noted an issue with timezone handling in Axion's Timestamp type.
Changes to the HEAD of Commons-Collections caused versioning problems for a number of our users. (See the archive for details.) This post describes the JARs required for the Milestone 2 release in some detail.
Statistics
Mailing List Traffic | Count | Previous Month | % Change |
---|---|---|---|
users@axion: | 18 | 14 | +28.6% |
dev@axion: | 23 | 67 | -65.7% |
cvs@axion: | 16 | 67 | -76.1% |
Source Code Statistics | Count | Previous Month | % Change |
NCLOC: | 21,817 | 21,817 | 0.0% |
Methods: | 2,879 | 2,879 | 0.0% |
Classes: | 293 | 293 | 0.0% |
Packages: | 11 | 11 | 0.0% |
Unit Test Coverage | Percentage | Previous Month | Change |
Total: | 80.4% | 80.4% | 0.0% |
Conditionals: | 77.0% | 76.9% | +0.1% |
Statements: | 81.2% | 81.1% | +0.1% |
Methods: | 81.9% | 81.9% | 0.0% |
Better late than never, it's the Axion database project's October 2003 month in review. A number of interesting things developed in October.
- News
The Axion team has voted to join the Apache DB project. A plan for executing the move is currently under discussion.
As previously noted, Ahimanikya Satapathy has been named a committer.
- Changes
Support for an "INSERT or UPDATE" statement (UPSERT or MERGE) was added, following an Oracle 9-style syntax. See Ahi's summary for the grammar, examples, and additional details.
Changes were made to the DML command processing to allow DML statements to utilize an index, at least in limited circumstances, improving performance. See C1492 and others.
Support for sub-selects in INSERT statements was added, allowing constructs such as "INSERT INTO mytable SELECT * from anothertable" See Ahi's post for details.
Several changes were made to improve the performance and memory requirements of inserting data in large, densely BTree-indexed tables, in response to Malte Stenzel experiments as discussed last month. See Rod's summary for details.
A critical bug that appears when deleting non-unique key values from a BTree index was discovered and patched. This bug is present in both the Milestone 1 and Milestone 2 releases of Axion, but only impacts databases that use BTree indices over non-unique columns, and execute deletes over this column.
Basic GROUP BY support was added to Axion, based upon a slight variation of Rahul Dwivedi's patch. HAVING is not yet supported, but GROUP BY is now supported without limitation.
- Discussion
Paul Hammant introduced a number of design ideas based upon his experience with the Avalon DB project, leading to a bit of discussion.
There was some discussion on the development list on supporting updatable ResultSets.
Statistics
Mailing List Traffic | Count | Previous Month | % Change |
---|---|---|---|
users@axion: | 14 | 22 | -36.4% |
dev@axion: | 67 | 37 | +81.1% |
cvs@axion: | 67 | 10 | +570.0% |
Source Code Statistics | Count | Previous Month | % Change |
NCLOC: | 21,817 | 18,663 | +16.9% |
Methods: | 2,879 | 2,461 | +17.0% |
Classes: | 293 | 255 | +14.9% |
Packages: | 11 | 11 | 0.0% |
Unit Test Coverage | Percentage | Previous Month | Change |
Total: | 80.4% | 79.3% | +1.1% |
Conditionals: | 76.9% | 77.1% | -0.2% |
Statements: | 81.1% | 79.7% | +1.4% |
Methods: | 81.9% | 80.7% | +1.2% |
The Axion team is pleased to announce that long-time contributor Ahimanikya Satapathy has been nominated and approved for committer status. See the voting thread at "[RESULT] RE: [VOTE] Make Ahimanikya Satapathy a committer".
Welcome, Ahi.
- Discussion
There was some discussion on the dev list on approaches to adding GROUP BY functionality to Axion. (See [D593], [D606], and others). A patch adding basic GROUP BY functionality was contributed by Rahul Dwivedi ([D613]), although this patch has not yet been reviewed.
There was some discussion on the dev list on approaches to adding sub-select functionality to Axion. (See [D602], [D610], [D617], and others).
Goutham Bharadwaj shared some experiences running Axion behind the Perl DBD-JDBC Bridge Server and found some performance issues ([D601]). It's not clear at this time where exactly the bottleneck lies ([D611]).
Malte Stenzel shared some experiments using Axion with very large, multiple index tables (see [U112], [U118], and others), and found that Axion compares reasonably well with other open source Java database engines in his use cases ([U121]). Malte's findings suggest we need to add a mechanism for purging BTree index nodes to better support very large indexes, and that some optimization for LIKE clause handling may be in order.
- Changes
Two small changes were made to Connection to more closely follow the JDBC specification: (a) Connection.close method can be called multiple times (when the Connection is already closed, the method is a no-op); (b) Connection.commit and Connection.rollback throw a SQLException when auto-commit is true. See [C1431] for details.
In response to a user's request ([U107]]), a "lock file" mechanism was added to ensure at most one instance of the engine is using a disk database at a time. See [U108] for details.
A patch supplied by Goutham Bharadwaj which prevents a NullPointerException when multiple SHUTDOWN statements are executed against the same database was applied. See [D595] for details.
A patch supplied by Goutham Bharadwaj which corrects Axion's handling of NULL values in aggregate functions like SUM, MIN and MAX, was applied. Axion now ignores NULL values in these aggregate functions, in accordance with the SQL specification. See [D595] for details.
A number of functions contributed by Ahimanikya Satapathy and Sudhendra Seshachala were added, including ABS, ASCII, AVG, BITAND, BITOR, DIFFERENCE, INSTRING, LENGTH, LOG10, LPAD, LTRIM, MOD, REPLACE, ROUND, RPAD, RTRIM, SIGN, SPACE, SUBSTRING, and TRUNCATE. See [D613] for details.
Statistics
Mailing List Traffic | Count | Previous Month | % Change |
---|---|---|---|
users@axion: | 22 | 9 | +144.4% |
dev@axion: | 37 | 27 | +37.0% |
cvs@axion: | 10 | 75 | -86.6% |
Source Code Statistics | Count | Previous Month | % Change |
NCLOC: | 19,764 | 18,663 | +5.9% |
Methods: | 2,569 | 2,461 | +4.4% |
Classes: | 275 | 255 | +7.8% |
Packages: | 11 | 11 | 0.0% |
Unit Test Coverage | Percentage | Previous Month | Change |
Total: | 79.2% | 79.3% | -0.1% |
Conditionals: | 76.2% | 77.1% | -0.9% |
Statements: | 79.7% | 79.7% | 0.0% |
Methods: | 81.1% | 80.7% | +0.4% |
Links
[D593] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=593
[D606] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=606
[D613] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=613
[D602] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=602
[D610] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=610
[D617] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=617
[D601] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=601
[D611] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=611
[U112] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=112
[U118] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=118
[U121] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=121
[C1431] http://axion.tigris.org/servlets/ReadMsg?list=cvs&msgNo=1431
[U107] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=107
[U108] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=108
[D595] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=595
[D613] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=613
August brought a large number of small improvements to both the functionality and the implementation of the Axion database engine.
A DROP INDEX command was added.
In response to a user's request [U98], support for IF NOT EXISTS and IF EXISTS clauses was added to the various CREATE and DROP commands (respectively).
Support for compound expressions--expressions joined by logical (AND, OR, NOT) and
mathematical (+, -, *, /) operators--has been significantly improved.
Arbitrary expressions are now allowed wherever a column or Boolean expression
might be used. (For example, queries like
"SELECT (6*5)/2, salary*2 > 1000 OR name IS NULL FROM mytable WHERE dept_no + 3 < 2
".)
Arithmetic operators and functions (including MAX, MIN, SUM, etc.)
now support arbitrary numeric types, with Java-like automatic widening.
(For example, an expression like "(2.2+1)
" evaluates
to 3.2
.)
Several users inquired about or shared experiences with running the Axion database on J2ME platforms. [D580] [D581] [D582] [U102] [U103] Some minor changes were made to the head version of Axion to better support J2ME platforms. [W1]
Some issues reported against the latest stable release (1.0 Milestone 2) have been fixed:
Several issues introduced in the development version of Axion (1.0 Milestone 3-dev) have been fixed:
Issue #9: Multiple LOB columns within a single table are once again supported. [B9]
Issue #10: An issue with column resolution with IN clauses was fixed. [B10]
Issue #13: An issue with the placement of the DEFAULT keyword within CREATE TABLE statements has been fixed. [B13]
Issue #17: Arithmetic functions on values with a scale other than 2 are once again supported. [B17]
Some enhancement requests entered in Issuezilla have been addressed:
The implementation of WHERE clauses, expressions, join conditions and functions
has been dramatically simplified. All of these are treated internally as
Function
s, allowing us to remove several types (including
WhereNode and Expression) and to consolidate the internal processing logic.
Statistics
Mailing List Traffic | Count | Year to Date |
---|---|---|
users@axion: | 9 | 87 |
dev@axion: | 27 | 227 |
cvs@axion: | 75 | 375 |
Source Code Statistics | Count | |
NCLOC: | 18,663 | |
Methods: | 2,461 | |
Classes: | 255 | |
Packages: | 11 | |
Unit Test Coverage | Percentage | |
Total: | 79.3% | |
Conditionals: | 77.1% | |
Statements: | 79.7% | |
Methods: | 80.7% |
Links
[U98] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=98
[D580] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=580
[D581] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=581
[D582] http://axion.tigris.org/servlets/ReadMsg?list=dev&msgNo=582
[U102] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=102
[U103] http://axion.tigris.org/servlets/ReadMsg?list=users&msgNo=103
[W1] http://radio.weblogs.com/0122027/2003/07/24.html#a64
[B11] http://axion.tigris.org/issues/show_bug.cgi?id=11
[B16] http://axion.tigris.org/issues/show_bug.cgi?id=16
[B9] http://axion.tigris.org/issues/show_bug.cgi?id=9
[B10] http://axion.tigris.org/issues/show_bug.cgi?id=10
[B13] http://axion.tigris.org/issues/show_bug.cgi?id=13
[B17] http://axion.tigris.org/issues/show_bug.cgi?id=17
The Axion Development Team is pleased to announce the availability of Axion 1.0 Milestone 2.
Visit http://axion.tigris.org/releases/1.0M2/index.html for release notes and download links.
Notable improvements in this release include increased DML and BTree index performance, support for OUTER JOINs, LIKE clauses, and JDBC 3/JDK 1.4.
The Axion Development Team is pleased to announce the availability of Axion 1.0 Milestone 1.
Visit http://axion.tigris.org/releases/1.0M1/index.html for release notes and download links.
This release adds a number of new features, notably support for true JDBC transactions, BTree indices, new datatypes, and more.
Axion is mentioned (along with a number of other open source projects) in the java.sun.com feature story Britannica Enters New Era with Java Technology.
The article discusses the use of Axion in Encyclopedia Britannica's 2003 CD and DVD product line, and is based upon interviews with two Axion committers.
Axion now fully supports the BTree index type for both numeric and non-numeric values.
See [PATCH] ObjectBTree for details.
The CVS head of Axion now supports TRANSACTION_SERIALIZABLE transactions in the form of "snapshot isolation" transactions.
See A Critique of ANSI SQL Isolation Levels for a review of snapshot isolation relative to other transaction isolation levels.
See Transaction Support for details.
The first binary release of Axion is now available from http://axion.tigris.org/releases/1.0M0/index.html.