summaryrefslogtreecommitdiff
path: root/RELEASE-NOTES.txt
blob: 36528b173fccc177a37af15ee0994b48be3aaad8 (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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
Carbonado version 1.2
---------------------

Carbonado is an extensible, high performance persistence abstraction layer for
Java applications with a relational view to the underlying persistence
technology.

http://carbonado.sourceforge.net/


Carbonado change history
------------------------

1.1 to 1.2
-------------------------------
- Builds using JDK1.6, but targets JDK1.5.
- Added support for sequences for SQL databases that don't natively support sequences.
- Added @Automatic annotation, which also supports auto-increment columns.
- JDBC repository supports optional automatic version management, eliminating
  the requirement that triggers be installed on the database.
- FilteredCursor ensures that filter being used is bound.
- BDBRepository detects if changes are made to primary key definition and throws exception.
- Added support for derived properties.
- Enhanced query engine to optimize for covering indexes.
- Added methods to access Storable properties by name.
- JDBCRepository allows more column types to be represented by Strings -- numbers and dates.
- JDBCRepository supports char and Character property if column is char type of length 1.
- JDBCRepository allows non-null column to be @Nullable if also @Independent.
- Fixed bug in generating SQL with nullable primary key properties.
- Added convenience method, Query.exists().
- Added support for defining alternate keys in synthetic Storables.
- Added trigger support for after loads and queries.
- Removed vestigial support for wrapping Storables.
- Storable toString and toStringKeyOnly methods skip uninitialized properties.
- Calling Storable.update when there are no dirty properties actually does an
  update instead of being "smart" and ignoring the update request. The old
  behavior was non-intuitive and interfered with expected trigger behavior.
- Many-to-one join properties which don't exist always return null now, instead
  of throwing FetchNoneException. Behavior now matches that of nullable join
  properties, which never threw FetchNoneException. Nullable join properties
  which resolve to null are cached as before, but non-nullable join properties
  do not cache null.
- Added support for "where exists" in queries via new syntax.
- Added support for outer joins via new syntax.
- Transactions can be detached and attached from/to the current thread.
- Storables can be serialized for temporary persistence or remote calls.
- Support fetching slices of queries, which translates to a SQL offset and limit.
- Added volatile map repository.
- Added listener callback for replicated repository resync.
- Added support for BigInteger and BigDecimal property types.

1.1.2 to 1.1.3
-------------------------------
- Reduce creation of unnecessary nested transactions.
- Added feature to JDBCRepository to suppress Storable reloading after insert
  or update.
- Fixed query plan bug which sometimes caused a correctly selected index to be
  fully scanned.
- Index build skips records which are corrupt instead of giving up entirely.
- Support named databases in one BDB file.
- Add index repair method.
- Fix automatic replication repair which might sometimes throw IllegalStateException.

1.1 to 1.1.2
-------------------------------
- Fixed query engine rule which sometimes favored index with incorrect ordering.
- Fixed replication repair bug which threw an IllegalStateException for insert
  repair if only alternate keys were specified.
- Fixed query descending sort order bug which produced ascending results.
- Fixed bug in GroupedCursor which discarded last group if it had one element.
- Fixed transaction leak caused when calling update, if an update trigger
  exists, and no properties were dirty.

1.1 to 1.1.1
-------------------------------
- Fixed spurious IllegalArgumentException from StorableGenerator.
- Fixed bug which prevented updating Oracle BLOB of length 2000 to 4000.
- Fixed IllegalArgumentException with optimized join queries of the form
  "a.b = ? & (a.c = ? | a.d = ?)".

1.1-BETA11 to 1.1 (release)
-------------------------------
- Only minor comment changes.

1.1-BETA10 to 1.1-BETA11
-------------------------------
- Fixed bug when decoding old Storable generations - new properties must be
  cleared. Otherwise, indexes on newly added properties might not get updated.
- Added system properties to control performance characteristics of MergeSortBuffer.
- Fixed verify error in generation of markPropertiesDirty.
- ReplicatedRepository installs user triggers on the replica again, but it now
  disables all triggers during resync to prevent errors. When triggers were on
  master, downstream triggers would not see changes made by earlier triggers.
- Index creation does a better job of picking up where it left off, avoiding
  unnecessary delete/insert pairs.
- JDBCRepository is more lenient with primary key validation. This allows
  Storables to be more easily mapped to views.
- IndexedRepository supports optional and throttled index repair.

1.1-BETA9 to 1.1-BETA10
-------------------------------
- JDBCSupportStrategy cleans up database product name before using it to
  determine custom support strategy class name.
- Added additional index selection tie-breaker if index is most likely defined
  to support desired ordering.
- Support mapping JDBC numeric column to short or byte.
- Index removal is now batched - reducing memory requirements when removing
  large indexes.
- Fixed bug when filtering against negative floating point values.
- Fixed multiple cursor implementations to be extra paranoid and close the
  cursor when an exception is thrown.
- Fixed JDBC cursor implementation to close the connection when an exception is
  thrown during cursor construction.

1.1-BETA8 to 1.1-BETA9
-------------------------------
- Fixed bug in JDBC repository which caused cursor skip to skip everything.
- Fix for getting supplied filter values when duplicate property filters exist.
- Fixes for bugs found using FindBugs.

1.1-BETA7 to 1.1-BETA8
-------------------------------
- Removed call to get index metadata in JDBC repository. Oracle bug causes a
  table analyze to run.
- When a property evolves from a boxed primitive to an unboxed primitive, null
  is converted to zero or false instead of throwing a NullPointerException.
- Support write-no-sync mode for Sleepycat repositories.

1.1-BETA6 to 1.1-BETA7
-------------------------------
- Added @Authoritative annotation.
- ReplicatedRepository installs user triggers on the master, not the
  replica. This fixes errors caused by resync running user triggers.

1.1-BETA5 to 1.1-BETA6
-------------------------------
- Added automatic repair for broken layout metadata.
- Add Storable to CorruptEncodingException when loading from index.
- Fix conversion of null lobs.
- Query filter constants appear as SQL constants.

1.1-BETA4 to 1.1-BETA5
-------------------------------
- More fixes in resync corruption repair logic.
- Fixed deadlock when using unsupported Storage for the first time.

1.1-BETA3 to 1.1-BETA4
-------------------------------
- Added additional repair logic in resync if replica entries are corrupt.
- ConstraintException thrown when inserting uninitialized properties now
  includes property names in the exception message.

1.1-BETA2 to 1.1-BETA3
-------------------------------
- Fixed exception when printing join plan with blank parameters.
- Added isolation level of "none" to indicate that transaction is auto-commit.

1.1-BETA to 1.1-BETA2
-------------------------------
- Inner joins in generated SQL use more compliant syntax.
- Fixed deadlocks during replicated respository resync.