Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

releases.moxie 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. #
  2. # ${project.version} release
  3. #
  4. r27: {
  5. title: ${project.name} ${project.version} released
  6. id: ${project.version}
  7. date: ${project.buildDate}
  8. note: ~
  9. html: ~
  10. text: ~
  11. security: ~
  12. fixes:
  13. - Fix column mapping on wildcard select JOIN statements
  14. changes:
  15. - Add support for PostgreSQL 9.5 UPSERT syntax
  16. additions: ~
  17. dependencyChanges: ~
  18. contributors:
  19. - James Moger
  20. }
  21. #
  22. # 1.6.2 release
  23. #
  24. r26: {
  25. title: Iciql 1.6.2 released
  26. id: 1.6.2
  27. date: 2015-05-11
  28. note: ~
  29. html: ~
  30. text: ~
  31. security: ~
  32. fixes:
  33. - Reverted change which keyed DataTypeAdapters by the target Java type
  34. changes: ~
  35. additions: ~
  36. dependencyChanges: ~
  37. contributors:
  38. - James Moger
  39. }
  40. #
  41. # 1.6.1 release
  42. #
  43. r25: {
  44. title: Iciql 1.6.1 released
  45. id: 1.6.1
  46. date: 2015-05-11
  47. note: Re-spin of 1.6.0
  48. html: ~
  49. text: ~
  50. security: ~
  51. fixes:
  52. - Fix column inheritance from superclasses (pr-14)
  53. - Use webapp classloader rather than global classloader (pr-12)
  54. - Fix deserialization of null values
  55. changes:
  56. - Improve SQLite dialect based on upstream JDBC improvements
  57. - Key DataTypeAdapters by target Java type
  58. - Drop precision and length from SQL->Java type determination
  59. - Improve readability of the generated performance benchmark table
  60. - Added Derby TCP benchmark test
  61. additions: ~
  62. dependencyChanges:
  63. - SQLite 3.8.10
  64. contributors:
  65. - James Moger
  66. - Pierre Templier
  67. - Maaartinus
  68. - Constantin Nickel
  69. }
  70. #
  71. # 1.6.0 release
  72. #
  73. r24: {
  74. title: Iciql 1.6.0 released
  75. id: 1.6.0
  76. date: 2015-05-11
  77. note: ~
  78. html: ~
  79. text: ~
  80. security: ~
  81. fixes:
  82. - Fix column inheritance from superclasses (pr-14)
  83. - Use webapp classloader rather than global classloader (pr-12)
  84. - Fix deserialization of null values
  85. changes:
  86. - Improve SQLite dialect based on upstream JDBC improvements
  87. - Key DataTypeAdapters by target Java type
  88. - Drop precision and length from SQL->Java type determination
  89. - Improve readability of the generated performance benchmark table
  90. - Added Derby TCP benchmark test
  91. additions: ~
  92. dependencyChanges:
  93. - SQLite 3.8.10
  94. contributors:
  95. - James Moger
  96. - Pierre Templier
  97. - Maaartinus
  98. - Constantin Nickel
  99. }
  100. #
  101. # 1.5.0 release
  102. #
  103. r23: {
  104. title: Iciql 1.5.0 released
  105. id: 1.5.0
  106. date: 2014-11-10
  107. note: ~
  108. html: ~
  109. text: ~
  110. security: ~
  111. fixes:
  112. - Fix SQLite INTEGER PRIMARY KEY AUTOINCREMENT mapping
  113. changes:
  114. - Improved automatic date conversions
  115. - Revised data type adapters to be specified separately with the @TypeAdapter annotation
  116. additions:
  117. - Add runtime mode support (DEV, TEST, & PROD)
  118. - Add a DAO feature similar to JDBI
  119. - Added Gson, XStream, and SnakeYaml type adapters
  120. dependencyChanges: ~
  121. contributors:
  122. - James Moger
  123. }
  124. #
  125. # 1.4.0 release
  126. #
  127. r22: {
  128. title: Iciql 1.4.0 released
  129. id: 1.4.0
  130. date: 2014-11-05
  131. note: ~
  132. html: ~
  133. text: ~
  134. security: ~
  135. fixes: ~
  136. changes:
  137. - Table constraints are now defined as part of CREATE TABLE instead of afterwards with indivudual ALTER TABLE statements. This is more portable across database backends.
  138. additions:
  139. - Support for specifying custom data type adapters in @IQColumn and Define.typeAdapter()
  140. - Added com.iciql.SQLDialectPostgreSQL.JsonStringAdapter
  141. - Added com.iciql.SQLDialectPostgreSQL.XmlStringAdapter
  142. - Added com.iciql.JavaSerializationTypeAdapter to (de)serialize objects into a BLOB column
  143. - Added an SQLite dialect
  144. dependencyChanges:
  145. - SQLite 3.8.7
  146. contributors:
  147. - James Moger
  148. }
  149. #
  150. # 1.3.0 release
  151. #
  152. r21: {
  153. title: Iciql 1.3.0 released
  154. id: 1.3.0
  155. date: 2014-10-22
  156. note: ''
  157. If you are upgrading and using EnumId mapping you will have to update your enums to define the target class for the EnumId interface since it is now generified.
  158. Switching to using generic types with the EnumId interface allows you to implement alternative enum-type mappings which may make more sense for your business logic.
  159. ''
  160. html: ~
  161. text: ~
  162. security: ~
  163. fixes:
  164. - Return null NPE in selectFirst() if list is empty (pr-5)
  165. - Fix Moxie toolkit download URL (pr-6)
  166. - Be more careful with primitive numeric type rollovers (pr-6)
  167. changes:
  168. - Revised EnumId interface to support generic types (pr-6)
  169. additions:
  170. - Add syntax oneOf/noneOf for IN and NOT IN (pr-7)
  171. - Add support for compound nested AND/OR conditions (pr-8)
  172. - Add support for mapping SQL BOOLEAN to primitive numeric types, not just object numeric types
  173. - Add support for customizing EnumId mapping, you can now map enum constants to values of your choice as long as they are a standard type
  174. dependencyChanges:
  175. - H2 1.4
  176. - HSQLDB 2.3
  177. - Derby 10.11
  178. - MySQL 5.6
  179. - PostgreSQL 9.3
  180. contributors:
  181. - James Moger
  182. - Kazunobu Raita
  183. - Sotaro Suzuki
  184. }
  185. #
  186. # 1.2.0 release
  187. #
  188. r20: {
  189. title: Iciql 1.2.0 released
  190. id: 1.2.0
  191. date: 2013-03-25
  192. html: '''
  193. <span class="alert alert-success">
  194. Iciql artifacts may now be retrieved by your favorite Maven 2-compatible build tool from <a href="http://gitblit.github.com/iciql/maven">here</a>.
  195. </span>
  196. '''
  197. fixes:
  198. - Fixed case-sensitivity bug on setting a compound primary key from an annotation (issue 12)
  199. - Fixed order of DEFAULT value in create table statement (issue 11)
  200. - Fixed password bug in model generator (issue 7)
  201. changes:
  202. - ''
  203. Support inheriting columns from super.super class, if super.super is annotated.
  204. This allows for an inheritance hierarchy like:
  205. @IQTable class MyTable -> @IQView abstract class MyBaseView -> @IQView class MyConstrainedView
  206. ''
  207. additions:
  208. - ''
  209. Implemented readonly view support. (issue 8)
  210. View models may be specified using the IQView annotation or Iciql.define(). Views can either be created automatically as part of a query of the view OR views may be constructed from a fluent statement.
  211. ''
  212. - Support inheritance of IQVersion for DbUpgrader implementations (issue 10)
  213. - Added @IQConstraintForeignKey annotation (issue 13)
  214. - Added MS SQL Server dialect (issue 14)
  215. }
  216. #
  217. # 1.1.0 release
  218. #
  219. r19: {
  220. title: Iciql 1.1.0 released
  221. id: 1.1.0
  222. date: 2012-08-20
  223. changes:
  224. - All bulk operations (insert all, update all, delete all) now use JDBC savepoints to ensure atomicity of the transaction
  225. }
  226. #
  227. # 1.0.0 release
  228. #
  229. r18: {
  230. title: Iciql 1.0.0 released
  231. id: 1.0.0
  232. date: 2012-07-14
  233. fixes:
  234. - Fixed bug in using 0L primitive values in where clauses. These were confused with the COUNT(*) function. (Github/kc5nra,issue 5)
  235. changes:
  236. - Issue CREATE TABLE and CREATE INDEX statements once per-db instance/table-mapping
  237. additions:
  238. - ''
  239. Added support for single column subquery
  240. select name, address from user_table where user_id in (select user_id from invoice table where paid = false)
  241. ''
  242. - Added support for left outer join (Github/backpaper0)
  243. }
  244. #
  245. # 0.7.10 release
  246. #
  247. r17: {
  248. title: Iciql 0.7.10 released
  249. id: 0.7.10
  250. date: 2012-01-27
  251. fixes:
  252. - Fixed default String value bug where a default empty string threw an IndexOutOfBounds exception
  253. }
  254. #
  255. # 0.7.9 release
  256. #
  257. r16: {
  258. title: Iciql 0.7.9 released
  259. id: 0.7.9
  260. date: 2012-01-24
  261. additions:
  262. - ''
  263. Added toParameter() option for SET commands and allow generating parameterized UPDATE statements
  264. String q = db.from(t).set(t.timestamp).toParameter().where(t.id).is(5).toSQL();
  265. db.executeUpdate(q, new Date());
  266. ''
  267. }
  268. #
  269. # 0.7.8 release
  270. #
  271. r15: {
  272. title: Iciql 0.7.8 released
  273. id: 0.7.8
  274. date: 2012-01-11
  275. fixes:
  276. - Replaced non-threadsafe counter used for assigning AS identifiers in JOIN statements with an AtomicInteger
  277. - Prevent negative rollover of the AS counter
  278. - Fixed bug in Query.select(Z z) which assumed that Z must always be an anonymous inner class which may not always be true. This allows for specifying an existing alias to force table or identifier usage in the generated select list. This is very useful for DISTINCT JOIN statements where only the columns of the primary table are of interest.
  279. additions:
  280. - Added optional alias parameter to Query.toSQL and QueryWhere.toSQL to force generated statement to prefix an AS identifier or, alternatively, the tablename.
  281. - Query.toSQL(boolean distinct, K alias)
  282. - QueryWhere.toSQL(boolean distinct, K alias)
  283. }
  284. #
  285. # 0.7.7 release
  286. #
  287. r14: {
  288. title: Iciql 0.7.7 released
  289. id: 0.7.7
  290. date: 2012-01-05
  291. changes:
  292. - ''
  293. Disallow declaring and explicitly referencing multiple instances of an enum type within a single model.
  294. A runtime exception will be thrown if an attempt to use where/set/on/and/or/groupBy/orderBy(enum) and your model has multiple fields of a single enum type.
  295. ''
  296. additions:
  297. - added Query.toSQL() and QueryWhere.toSQL() methods which, when combined with the following new methods, allows for generation of a parameterized, static sql string to be reused with a dynamic query or a PreparedStatement.
  298. - QueryCondition.isParameter()
  299. - QueryCondition.atLeastParameter()
  300. - QueryCondition.atMostParameter()
  301. - QueryCondition.exceedsParameter()
  302. - QueryCondition.lessThanParameter()
  303. - QueryCondition.likeParameter()
  304. - QueryCondition.isNotParameter()
  305. }
  306. #
  307. # 0.7.6 release
  308. #
  309. r13: {
  310. title: Iciql 0.7.6 released
  311. id: 0.7.6
  312. date: 2011-12-21
  313. changes:
  314. - Iciql now tries to instantiate a default value from an annotated default value IFF the field object is null, it is specified nullable = false, and a defaultValue exists. This only applies to db.insert or db.update.
  315. }
  316. #
  317. # 0.7.5 release
  318. #
  319. r12: {
  320. title: Iciql 0.7.5 released
  321. id: 0.7.5
  322. date: 2011-12-12
  323. fixes:
  324. - Iciql now identifies wildcard queries and builds a dynamic column lookup. Otherwise, the original field-position-based approach is used. This corrects the performance regression released in 0.7.4 while still fixing the wildcard statement column mapping problem.
  325. }
  326. #
  327. # 0.7.4 release
  328. #
  329. r11: {
  330. title: Iciql 0.7.4 released
  331. id: 0.7.4
  332. date: 2011-12-06
  333. fixes:
  334. - Fixed JOIN ON primitives
  335. - Fixed GROUP BY primitives
  336. - Fixed primitive references when selecting into a custom type with primitives
  337. - ''
  338. Fixed inherited JaQu bug related to model classes and wildcard queries (select *).
  339. Iciql maps resultset columns by the index of the model class field from a list. This assumes that all columns in the resultset have a corresponding model field definition. This works fine for most queries because iciql explicitly selects columns from the table (select alpha, beta...) when you execute select().
  340. The problem is when iciql issues a dynamic wildcard query and your model does not represent all columns in the resultset: columns and fields may fail to correctly line-up.
  341. Iciql now maps all fields by their column name, not by their position.
  342. ''
  343. changes:
  344. - Disallow declaring and explicitly referencing multiple primitive booleans in a single model. A runtime exception will be thrown if an attempt to use where/set/on/and/or/groupBy/orderBy(boolean) and your model has multiple mapped primitive boolean fields.
  345. additions:
  346. - Added list alternatives to the varargs methods because it was too easy to forget list.toArray()
  347. - Db.executeQuery(Class<? extends T> modelClass, String sql, List<?> args)
  348. - Db.executeQuery(String sql, List<?> args)
  349. - Query.where(String fragment, List<?> args)
  350. }
  351. #
  352. # 0.7.3 release
  353. #
  354. r10: {
  355. title: Iciql 0.7.3 released
  356. id: 0.7.3
  357. date: 2011-12-06
  358. fixes:
  359. - Fixed JOIN ON primitives
  360. - Fixed GROUP BY primitives
  361. - Fixed primitive references when selecting into a custom type with primitives
  362. changes:
  363. - Improved fluent/type-safety of joins
  364. }
  365. #
  366. # 0.7.2 release
  367. #
  368. r9: {
  369. title: Iciql 0.7.2 released
  370. id: 0.7.2
  371. date: 2011-11-30
  372. changes:
  373. - generated models are now serializable with a default serial version id of 1
  374. dependencyChanges:
  375. - H2 1.3.162
  376. - HSQLDB 2.2.6 (100% of unit tests pass)
  377. }
  378. #
  379. # 0.7.1 release
  380. #
  381. r8: {
  382. title: Iciql 0.7.1 released
  383. id: 0.7.1
  384. date: 2011-08-31
  385. fixes:
  386. - Fix to PostgreSQL dialect when creating autoincrement columns
  387. - Fix to default dialect when creating autoincrement columns
  388. changes:
  389. - Undeprecated interface configuration
  390. - Interface configuration now maps ALL fields, not just public fields
  391. - Overhauled test suite and included more database configurations
  392. - Documented POJO configuration option (limited subset of interface configuration)
  393. additions:
  394. - Added @IQIgnore annotation to explicitly skip fields for interface configuration
  395. - Created additional Define static methods to bring interface configuration to near-parity with annotation configuration
  396. - Added Db.open(url) method
  397. }
  398. #
  399. # 0.7.0 release
  400. #
  401. r7: {
  402. title: Iciql 0.7.0 released
  403. id: 0.7.0
  404. date: 2011-08-17
  405. changes:
  406. - Finished MySQL dialect implementation. MySQL 5.0.51b passes 100% of tests.
  407. - Renamed StatementLogger to IciqlLogger
  408. - Overhauled test suite and included more database configurations
  409. additions:
  410. - Added PostgreSQL dialect. PostgreSQL 9.0 passes all but the boolean-as-int tests.
  411. - Added Db.dropTable(T) method
  412. - Added IciqlLogger.warn method
  413. - Added IciqlLogger.drop method
  414. }
  415. #
  416. # 0.6.6 release
  417. #
  418. r6: {
  419. title: Iciql 0.6.6 released
  420. id: 0.6.6
  421. date: 2011-08-15
  422. changes:
  423. - Disabled two concurrency unit tests since I believe they are flawed and do not yield reproducible results
  424. additions:
  425. - Implemented HSQLDB MERGE syntax. HSQL 2.2.4 fails 1 test which is bug-3390047 in HSQLDB.
  426. - Added Derby database dialect. Derby 10.7.1.1 and 10.8.1.2 pass 100% of tests.
  427. dependencyChanges:
  428. - H2 1.3.159
  429. }
  430. #
  431. # 0.6.5 release
  432. #
  433. r5: {
  434. title: Iciql 0.6.5 released
  435. id: 0.6.5
  436. date: 2011-08-12
  437. fixes:
  438. - fixed failure of db.delete(PrimitiveModel) and db.update(PrimitiveModel)
  439. }
  440. #
  441. # 0.6.4 release
  442. #
  443. r4: {
  444. title: Iciql 0.6.4 released
  445. id: 0.6.4
  446. date: 2011-08-12
  447. fixes:
  448. - do not INSERT primitive autoIncrement fields, let database assign value
  449. changes:
  450. - @IQTable.createIfRequired -> @IQTable.create
  451. - 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.
  452. - java.lang.Boolean now maps to BOOLEAN instead of BIT
  453. - expressions on unmapped fields will throw an IciqlException
  454. - expressions on unsupported types will throw an IciqlException
  455. - moved dialects back to main package
  456. - moved create table and create index statement generation into dialects
  457. - renamed _iq_versions table to iq_versions since leading _ character is troublesome for some databases
  458. - @IQColumn(allowNull=true) -> @IQColumn(nullable=true)
  459. - All Object columns are assumed NULLABLE unless explicitly set @IQColumn(nullable = false)
  460. - All Primitive columns are assumed NOT NULLABLE unless explicitly set @IQColumn(nullable = true)
  461. - changed @IQTable.primaryKey definition to use array of column names (@IQTable( primaryKey = {"name", "nickname"}) )
  462. additions:
  463. - full support for primitives in all clauses
  464. - DECIMAL(length, scale) support
  465. - improved exception reporting by including generated statement, if available
  466. - improved automatic dialect determination on pooled connections
  467. - added HSQL dialect. HSQL fails 4 out of 50 unit tests. (2 failures are unimplemented merge, 1 is a bug-3390047 in HSQLDB, 1 is a concurreny issue)
  468. - added untested MySQL dialect
  469. - allow defining table create DEFAULT values from default object values (Date myDate = new Date(100, 1, 1); => CREATE TABLE ... myDate DATETIME DEFAULT '2000-02-01 00:00:00')
  470. }
  471. #
  472. # 0.6.3 release
  473. #
  474. r3: {
  475. title: Iciql 0.6.3 Released
  476. id: 0.6.3
  477. date: 2011-08-08
  478. changes:
  479. - Moved dialects into separate package
  480. - finished enum support (issue 4)
  481. additions:
  482. - added UUID type support (H2 databases only)
  483. - added partial primitives support (primitives may not be used for compile-time condition clauses)
  484. - added between(A y).and(A z) condition syntax
  485. }
  486. #
  487. # 0.6.2 release
  488. #
  489. r2: {
  490. title: Iciql 0.6.2 Released
  491. id: 0.6.2
  492. date: 2011-08-05
  493. fixes:
  494. - fix to versioning to support H2 1.3.158+
  495. changes:
  496. - @IQSchema(name="public") => @IQSchema("public")
  497. - @IQDatabase(version=2) => @IQVersion(2)
  498. - @IQTable(version=2) => @IQVersion(2)
  499. - @IQIndex annotation simplified to be used for one index definition and expanded to specify index name
  500. - @IQColumn(maxLength=20) => @IQColumn(length=20)
  501. - @IQColumn(trimString=true) => @IQColumn(trim=true)}
  502. additions:
  503. - added BLOB support (issue 1)
  504. - added java.lang.Enum support (issue 2)
  505. - allow runtime flexible mapping of BOOL columns to Integer fields
  506. - allow runtime flexible mapping of INT columns to Boolean fields
  507. - added @IQIndexes annotation to specify multiple IQIndex annotations
  508. }
  509. #
  510. # 0.5.0 release
  511. #
  512. r1: {
  513. title: Iciql 0.5.0 Released
  514. id: 0.5.0
  515. date: 2011-08-03
  516. note: ~
  517. text: Initial release of blessed JaQu fork
  518. changes:
  519. - deprecated model class interface configuration
  520. - added Db.open(Connection conn) method, changed constructor to default scope
  521. - added Db.registerDialect static methods to register custom dialects
  522. - added Query.where(String fragment, Object... args) method to build a runtime query fragment when compile-time queries are too strict
  523. - added Db.executeQuery(String query, Object... args) to execute a complete sql query with optional arguments
  524. - added Db.executeQuery(Class modelClass, String query, Object... args) to execute a complete sql query, with optional arguments, and build objects from the result
  525. - added Db.buildObjects(Class modelClass, ResultSet rs) method to build objects from the ResultSet of a plain sql query
  526. - added ThreadLocal<T> com.iciql.Utils.newThreadLocal(final Class<? extends T> clazz) method
  527. - added optional console statement logger and SLF4J statement logger
  528. - refactored dialect support
  529. - throw IciqlException (which is a RuntimeException) instead of RuntimeException
  530. - synchronized Db.classMap for concurrent sharing of a Db instance
  531. - Database/table versioning uses the _iq_versions table, the _ jq_versions table, if present, is ignored
  532. - ''
  533. Changed the following class names:
  534. org.h2.jaqu.Table => com.iciql.Iciql
  535. org.h2.jaqu.JQSchema => com.iciql.IQSchema
  536. org.h2.jaqu.JQDatabase => com.iciql.IQDatabase
  537. org.h2.jaqu.JQIndex => com.iciql.IQIndex
  538. org.h2.jaqu.JQTable => com.iciql.IQTable
  539. org.h2.jaqu.JQColumn => com.iciql.IQColumn
  540. ''
  541. - ''
  542. Changed the following method names:
  543. org.h2.jaqu.Table.define() => com.iciql.Iciql.defineIQ()
  544. QueryConditon.bigger => QueryCondition.exceeds
  545. QueryConditon.biggerEqual => QueryCondition.atLeast
  546. QueryConditon.smaller => QueryCondition.lessThan
  547. QueryConditon.smallEqual => QueryCondition.atMost
  548. ''
  549. }
  550. #
  551. # Release log data
  552. #
  553. release: &r26
  554. snapshot: &r27
  555. releases: &r[1..26]