summaryrefslogtreecommitdiffstats
path: root/docs/05_releases.mkd
blob: bd3c85397ace168c6fecbcd0b3cb9f7cb9efd3c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
## Release History

### Current Release

<span class="warning">iciql is undergoing rapid development so api and configuration are subject to change from release to release</span>

**%VERSION%** ([zip](http://code.google.com/p/iciql/downloads/detail?name=%ZIP%)|[jar](http://code.google.com/p/iciql/downloads/detail?name=%JAR%)) &nbsp; *released %BUILDDATE%*

- api change release (API v6)
- Finished MySQL dialect implementation.  MySQL 5.0.51b passes 100% of tests.
- Added PostgreSQL dialect.  PostgreSQL 9.0 passes all but the boolean-as-int tests.
- Added Db.dropTable(T) method
- Overhauled test suite and included more database configurations.
- Renamed StatementLogger to IciqlLogger
- Added IciqlLogger.warn method
- Added IciqlLogger.drop method

### Older Releases

**0.6.6** &nbsp; *released 2011-08-15*

- api change release (API v5)
- Disabled two 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

**0.6.5** &nbsp; *released 2011-08-12*

- fixed failure of db.delete(PrimitiveModel) and db.update(PrimitiveModel)

**0.6.4** &nbsp; *released 2011-08-12*

- api change release (API v4)
- @IQTable.createIfRequired -> @IQTable.create
- don't INSERT primitive autoIncrement fields, let database assign value
- full support for primitives in all clauses
- DECIMAL(length, scale) support
- unspecified length String fields are now CLOB instead of TEXT.  dialects can intercept this and convert to another type. e.g. MySQL dialect can change CLOB to TEXT.
- java.lang.Boolean now maps to BOOLEAN instead of BIT
- expressions on unmapped fields will throw an IciqlException
- expressions on unsupported types will throw an IciqlException
- improved exception reporting by including generated statement, if available 
- moved dialects back to main package
- improved automatic dialect determination on pooled connections
- moved create table and create index statement generation into dialects
- 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 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)
- All **Object** columns are assumed NULLABLE unless explicitly set *@IQColumn(nullable = false)*
- All **Primitive** columns are assumed NOT NULLABLE unless explicitly set *@IQColumn(nullable = true)*
- allow using objects to assign default values<br/>
%BEGINCODE%
// CREATE TABLE ... myDate DATETIME DEFAULT '2000-02-01 00:00:00'
@IQColumn
Date myDate = new Date(100, 1, 1);
%ENDCODE%
- changed @IQTable.primaryKey definition to use array of column names<br/>
%BEGINCODE%
@IQTable( primaryKey = {"name", "nickname"})
%ENDCODE%

**0.6.3** &nbsp; *released 2011-08-08*

- api change release (API v3)
- finished enum support (issue 4)
- added UUID type support (H2 databases only)
- added partial primitives support *(primitives may not be used for compile-time condition clauses)*
- added *between(A y).and(A z)* condition syntax
- moved dialects into separate package

**0.6.2** &nbsp; *released 2011-08-05*

- api change release (API v2)
- fix to versioning to support H2 1.3.158+
- added BLOB support (issue 1)
- added java.lang.Enum support (issue 2)
- allow runtime flexible mapping of BOOL columns to Integer fields
- allow runtime flexible mapping of INT columns to Boolean fields
- annotations overhaul to reduce verbosity
    - @IQSchema(name="public") -> @IQSchema("public")
    - @IQDatabase(version=2) -> @IQVersion(2)
    - @IQTable(version=2) -> @IQVersion(2)
    - @IQIndex annotation simplified to be used for one index definition and expanded to specify index name
    - added @IQIndexes annotation to specify multiple IQIndex annotations<br/>
%BEGINCODE%
@IQIndexes({ @IQIndex("name"), @IQIndex(name="myindexname" value={"name", "nickname"}) })
%ENDCODE%
    - @IQColumn(maxLength=20) -> @IQColumn(length=20)
    - @IQColumn(trimString=true) -> @IQColumn(trim=true)
    
**0.5.0** &nbsp; *released 2011-08-03*

- initial release (API v1)

*API changes compared to JaQu from H2 1.3.157 sources*

- deprecated model class interface configuration
- added *Db.open(Connection conn)* method, changed constructor to default scope
- added *Db.registerDialect* static methods to register custom dialects
- added *Query.where(String fragment, Object... args)* method to build a runtime query fragment when compile-time queries are too strict
- added *Db.executeQuery(String query, Object... args)* to execute a complete sql query with optional arguments
- added *Db.executeQuery(Class modelClass, String query, Object... args)* to execute a complete sql query, with optional arguments, and build objects from the result
- added *Db.buildObjects(Class modelClass, ResultSet rs)* method to build objects from the ResultSet of a plain sql query
- added *ThreadLocal&lt;T&gt; com.iciql.Utils.newThreadLocal(final Class&lt;? extends T&gt; clazz)* method
- added optional console statement logger and SLF4J statement logger
- refactored dialect support
- throw *IciqlException* (which is a RuntimeException) instead of RuntimeException
- synchronized *Db.classMap* for concurrent sharing of a Db instance
- Database/table versioning uses the <b>_iq_versions </b> table, the <b>_ jq_versions</b> table, if present, is ignored
- Changed the following class names:
    - org.h2.jaqu.Table =&gt; com.iciql.Iciql
    - org.h2.jaqu.JQSchema =&gt; com.iciql.IQSchema
    - org.h2.jaqu.JQDatabase =&gt; com.iciql.IQDatabase
    - org.h2.jaqu.JQIndex =&gt; com.iciql.IQIndex
    - org.h2.jaqu.JQTable =&gt; com.iciql.IQTable
    - org.h2.jaqu.JQColumn =&gt; com.iciql.IQColumn
- Changed the following method names:
    - org.h2.jaqu.Table.define() =&gt; com.iciql.Iciql.defineIQ()
    - QueryConditon.bigger =&gt; QueryCondition.exceeds
    - QueryConditon.biggerEqual =&gt; QueryCondition.atLeast
    - QueryConditon.smaller =&gt; QueryCondition.lessThan
    - QueryConditon.smallEqual =&gt; QueryCondition.atMost