diff options
author | James Moger <james.moger@gmail.com> | 2011-08-15 16:44:14 -0400 |
---|---|---|
committer | James Moger <james.moger@gmail.com> | 2011-08-15 16:44:14 -0400 |
commit | 66e810aaf212c5e37b0a1702b6c33480595408ce (patch) | |
tree | 2babeea368dec0023b9a2add5b3ddc2c1aaaeea8 /docs | |
parent | 3622ae0026718ac8466e13e8011f8db309d89106 (diff) | |
download | iciql-66e810aaf212c5e37b0a1702b6c33480595408ce.tar.gz iciql-66e810aaf212c5e37b0a1702b6c33480595408ce.zip |
Added Derby dialect. Finished HSQL dialect. Documentation.
* Improved DEFAULT value specifications.
* Fixed bug in buildObjects where the ResultSet could be closed by the
automatic create table attempt.
* DbInspector now uses the dialect's reported DATETIME class preference.
* Improved IciqlException SQLState code checks.
* Integrated LIMIT and OFFSET expression appending in dialects.
* Updated to H2 1.3.159
* Allow reopening of a memory database in the test suite.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/00_index.mkd | 12 | ||||
-rw-r--r-- | docs/02_usage.mkd | 24 | ||||
-rw-r--r-- | docs/03_natural_syntax.mkd | 23 | ||||
-rw-r--r-- | docs/03_performance.mkd | 16 | ||||
-rw-r--r-- | docs/05_building.mkd | 1 | ||||
-rw-r--r-- | docs/05_releases.mkd | 11 |
6 files changed, 58 insertions, 29 deletions
diff --git a/docs/00_index.mkd b/docs/00_index.mkd index f86e396..b3e8cbf 100644 --- a/docs/00_index.mkd +++ b/docs/00_index.mkd @@ -5,7 +5,7 @@ iciql **is**... - a model-based, database access wrapper for JDBC
- for modest database schemas and basic statement generation
- for those who want to write code, instead of SQL, using IDE completion and compile-time type-safety
-- small (120KB) with no runtime dependencies
+- small (125KB) with no runtime dependencies
- pronounced *icicle* (although it could be French: *ici ql* - here query language)
- a friendly fork of the H2 [JaQu][jaqu] project
@@ -35,9 +35,13 @@ select * from products </tr>
</table>
-### Supported Databases
-- [H2 1.3](http://h2database.com)
-- [HSQLDB 2.2](http://hsqldb.org)
+### Supported Databases (Unit-Tested)
+- [H2](http://h2database.com) 1.3.159
+- [HSQLDB](http://hsqldb.org) 2.2.4
+- [Derby](http://db.apache.org/derby) 10.7.1.1 & 10.8.1.2
+
+### Partially Supported Databases (not Unit-Tested)
+- [MySQL](http://mysql.com)
Support for others is planned and may only require creating a simple "dialect" class.
diff --git a/docs/02_usage.mkd b/docs/02_usage.mkd index 2659e86..fe4801b 100644 --- a/docs/02_usage.mkd +++ b/docs/02_usage.mkd @@ -65,6 +65,30 @@ List<Product> allProducts = db.buildObjects(Product.class, rs); JdbcUtils.closeSilently(rs, true);
%ENDCODE%
+### Natural Syntax
+
+**work-in-progress**
+
+The original JaQu source offers partial support for Java expressions in *where* clauses.
+
+This works by decompiling a Java expression, at runtime, to an SQL condition. The expression is written as an anonymous inner class implementation of the `com.iciql.Filter` interface.
+A proof-of-concept decompiler is included, but is incomplete.
+
+The proposed syntax is:
+%BEGINCODE%
+long count = db.from(co).
+ where(new Filter() { public boolean where() {
+ return co.id == x
+ && co.name.equals(name)
+ && co.value == new BigDecimal("1")
+ && co.amount == 1L
+ && co.birthday.before(new java.util.Date())
+ && co.created.before(java.sql.Timestamp.valueOf("2005-05-05 05:05:05"))
+ && co.time.before(java.sql.Time.valueOf("23:23:23"));
+ }
+ }).selectCount();
+%ENDCODE%
+
### JDBC Statements, ResultSets, and Exception Handling
Iciql opens and closes all JDBC objects automatically. SQLExceptions thrown during execution of a statement (except for *close()* calls), will be caught, wrapped, and rethrown as an `IciqlException`, which is a RuntimeException.
diff --git a/docs/03_natural_syntax.mkd b/docs/03_natural_syntax.mkd deleted file mode 100644 index a91c5b8..0000000 --- a/docs/03_natural_syntax.mkd +++ /dev/null @@ -1,23 +0,0 @@ -## Natural Syntax
-
-**work-in-progress**
-
-The original JaQu source offers partial support for Java expressions in *where* clauses.
-
-This works by decompiling a Java expression, at runtime, to an SQL condition. The expression is written as an anonymous inner class implementation of the `com.iciql.Filter` interface.
-A proof-of-concept decompiler is included, but is incomplete.
-
-The proposed syntax is:
-%BEGINCODE%
-long count = db.from(co).
- where(new Filter() { public boolean where() {
- return co.id == x
- && co.name.equals(name)
- && co.value == new BigDecimal("1")
- && co.amount == 1L
- && co.birthday.before(new java.util.Date())
- && co.created.before(java.sql.Timestamp.valueOf("2005-05-05 05:05:05"))
- && co.time.before(java.sql.Time.valueOf("23:23:23"));
- }
- }).selectCount();
-%ENDCODE%
\ No newline at end of file diff --git a/docs/03_performance.mkd b/docs/03_performance.mkd new file mode 100644 index 0000000..1996dc2 --- /dev/null +++ b/docs/03_performance.mkd @@ -0,0 +1,16 @@ +
+## Performance
+
+The information provided here may be based on flawed test procedures. You have to be the judge of what is performant and non-performant.
+
+### iciql statement generation
+
+Performance of iciql statement generation is not currently benchmarked but that is planned.
+
+### iciql+database performance comparison
+
+The following data was generated by running the iciql test suite. The suite is almost completely single-threaded. All databases are run in embedded *memory-only* mode through a JDBC connection. Since the suite is running in memory-only mode, disk IO bottlenecks should be removed from the equation and the results should be measuring raw statement processing.
+
+<pre>
+%DBPERFORMANCE%
+</pre>
\ No newline at end of file diff --git a/docs/05_building.mkd b/docs/05_building.mkd index 6e6196a..8a4f45b 100644 --- a/docs/05_building.mkd +++ b/docs/05_building.mkd @@ -10,6 +10,7 @@ Additionally, [eclipse-cs](http://eclipse-cs.sourceforge.net), [FindBugs](http:/ ### Build Dependencies (downloaded during build)
- [H2 Database](http://h2database.com) (Eclipse Public License 1.0)
- [HSQL Database Engine](http://hsqldb.org) (BSD)
+- [Apache Derby Database](http://db.apache.org/derby) (Apache 2.0)
- [JUnit](http://junit.org) (Common Public License)
- [commons-net](http://commons.apache.org/net) (Apache 2.0)
- [ant-googlecode](http://code.google.com/p/ant-googlecode) (New BSD)
diff --git a/docs/05_releases.mkd b/docs/05_releases.mkd index c6d84e1..91ef18f 100644 --- a/docs/05_releases.mkd +++ b/docs/05_releases.mkd @@ -6,10 +6,17 @@ **%VERSION%** ([zip](http://code.google.com/p/iciql/downloads/detail?name=%ZIP%)|[jar](http://code.google.com/p/iciql/downloads/detail?name=%JAR%)) *released %BUILDDATE%*
-- fixed failure of db.delete(PrimitiveModel) and db.update(PrimitiveModel)
+- Disabled 2 concurrency unit tests since I believe they are flawed and do not yield reproducible results
+- Added Derby database dialect. Derby 10.7.1.1 and 10.8.1.2 pass 100% of tests.
+- Implemented HSQL MERGE syntax. HSQL 2.2.4 fails 1 test which is a known [bug in HSQL](https://sourceforge.net/tracker/?func=detail&aid=3390047&group_id=23316&atid=378131)
+- Updated to H2 1.3.159
### Older Releases
+**0.6.5** *released 2011-08-12*
+
+- fixed failure of db.delete(PrimitiveModel) and db.update(PrimitiveModel)
+
**0.6.4** *released 2011-08-12*
- api change release (API v4)
@@ -28,7 +35,7 @@ - added HSQL dialect. HSQL fails 4 out of 50 unit tests.
- 2 failures are unimplemented merge
- 1 has been filed and accepted as a [bug in HSQL](https://sourceforge.net/tracker/?func=detail&aid=3390047&group_id=23316&atid=378131)
- - 1 is a concurrency issue, but the test may not be flawed
+ - 1 is a concurrency issue, but the test may be flawed
- added untested MySQL dialect
- renamed <b>_ iq_versions</b> table to *iq_versions* since leading _ character is troublesome for some databases.
- @IQColumn(allowNull=true) -> @IQColumn(nullable=true)
|