Blame view

Changelog.md 18.9 KB
fef31883   Arek W   Disable cache by ...
1
2
3
  ### v2.2.0
  - Singleton/cache disabled by default (#672)
  
dce8b1cd   Arek W   Fix noisy mysql d...
4
5
6
  ### v2.1.27
  - Fix noisy mysql debug output (#642)
  
d596ce60   Arek W   Add 'instance.sav...
7
8
9
10
  ### v2.1.26
  - Add `instance.saveAssociationsByDefault` setting
  - Bump node-sql-query version to v0.1.26
  
ce152b75   Arek W   Bump version
11
12
13
14
  ### v2.1.25
  - Fix `pool` and `debug` query options boolean check (#638)
  - Add `hasOne(field: 'userId', mapsTo: 'user_id')` option (#638)
  
5f3004bd   Arek W   Bump sql-query ve...
15
16
17
  ### v2.1.24
  - Bump dependencies; Allow left/right joins in underlying db.driver.query
  
f501d2d4   Arek W   Update doco & bum...
18
19
20
21
22
23
  ### v2.1.23
  - Green tests on io.js & node 0.12 (#618)
  - Don't crash on null dates if timezone is set (#618)
  - Fix wrong error when module is missing (#593)
  - Fix key field when using `mapsTo` and cache (#580)
  
3b13f19b   Arek W   v2.1.22
24
25
26
  ### v2.1.22
  - Fix ignorecase unique scope for hasOne property (#603)
  
4ff9f193   Arek W   Update changelog
27
28
29
30
31
  ### v2.1.21
  - Fix mixed case uniqueness constraint on postgres (#597)
  - Fix mongo adapter association delete (#543)
  - Fix mongo ne/eq comparators for _id key (#586)
  
defb7354   Arek W   Version bump
32
33
34
35
  ### v2.1.20 - 19 Nov 2014
  - Exposing dirty properties array on the instance (#575)
  - Bump node-enforce version (#562)
  
f4dd1972   Arek W   Fix Chain find & ...
36
37
  ### v2.1.19 - 21 Aug 2014
  - Fix Chain.find().remove() & Chain.find.count() with mapsTo keys (#530)
2324d34d   Arek W   v2.1.19
38
  - Add not_like comparator
f4dd1972   Arek W   Fix Chain find & ...
39
  
06333079   Arek W   v2.1.18
40
41
42
43
44
  ### v2.1.18 - 29 Jul 2014
  - Add `alwaysValidate` flag (#540, #352)
  - Fix mongo hasMany wrong instance bug (#479)
  - Fix mysql index bug (dresende/node-sql-ddl-sync#19)
  
eccf733c   Arek W   Bump version
45
46
47
  ### v2.1.17 - 24 Jul 2014
  - Fix postgres & sqlite driver conversion of floats and ints.
  
da2142d0   Arek W   Fix hasOne requir...
48
49
50
51
52
53
  ### v2.1.16 - 15 Jul 2014
  - Fix Model.create missing properties bug
  - Add missing `var` (#523)
  - Fix hasOne `required: true` when `instance.returnAllErrors` is true.
    This also makes hasOne required validations messages consistent with other validation messages.
  
559bfb9a   Arek W   Version bump
54
55
56
57
58
59
  ### v2.1.15 - 05 Jun 2014
  - Feature: Enable plugging in custom third-party drivers (now known as adapters) (#512)
  - Add Instance.set() so that properties of type object can have their properties set and mark model as dirty (#517)
  - Add Instance.markAsDirty(propName) to force a properties state to dirty/changed.
  - Enable Property.mapsTo for keys (#509)
  - Fix hasMany join tables with custom key columns (#510)
c6c6628a   Arek W   Fix hasMany custo...
60
  
1cd44d87   Arek W   Fix Property.mapsTo.
61
  ### v2.1.14 - 22 May 2014
7234015d   Arek W   Allow specifying ...
62
  - Allow explicitly specifying `key: true` on properties rather than passing in an array of ids.
1cd44d87   Arek W   Fix Property.mapsTo.
63
  - Fix Property.mapsTo (#506)
7234015d   Arek W   Allow specifying ...
64
  
4c668a1c   Arek W   Update changelog
65
66
67
68
  ### v2.1.13 - 21 May 2014
  - Dont modify array passed to execQuery
  
  ### v2.1.12 - 20 May 2014
095fb518   Arek W   Add custom type s...
69
  - Add custom-type support to hasMany extra properties.
8e8ce964   Arek W   Fix SQLite index ...
70
  - Fix SQLite index name collisions (#499)
095fb518   Arek W   Add custom type s...
71
  
b7607373   Arek W   Fix hasMany.getAc...
72
73
74
75
76
77
  ### v2.1.11 - 19 May 2014
  - Fix hasMany.getAccessor().count()
  
  ### v2.1.10 - 09 May 2014
  - Fix sqlite Dialect.clear - resets incremental counters (#497)
  
41ee165c   Arek W   v2.1.9: (#456, #3...
78
79
80
  ### v2.1.9 - 06 May 2014
  - Add basic PostGIS support - (#456, #375)
  - Allow mapping model properties to differently named columns (#273, #495)
c679a6f8   Arek W   Add error code de...
81
  
0c4e5d85   Arek W   Update changelog
82
83
84
  ### v2.1.8 - 28 Apr 2014
  - Fix '.omit' (#491)
  
44d432b2   Arek W   Add explicit inte...
85
86
87
88
  ### v2.1.7 - 25 Apr 2014
  - Add explicit 'integer' type to avoid confusion.
    `type: 'number', rational: false` will auto convert to `type: 'integer'`.
  
5e6c480f   Arek W   Add ChainFind.omit
89
90
91
92
  ### v2.1.6 - 23 Apr 2014
  - Add '.omit' to chain find - opposite of '.only'
  
  ### v2.1.5 - 08 Apr 2014
e62e09c5   Arek W   Fix duplicate key...
93
94
  - Don't create indexes for primary/composite keys; they are created automatically (#484)
  
b3705a7b   Arek W   Add date to chang...
95
  ### v2.1.4 - 19 Mar 2014
f8e31583   Arek W   Update changelog
96
97
98
99
100
101
102
103
  - Fix TypeScript module declaration (#362)
  - Fixes reversed hasOne.getAccessor when called without callback (#267)
  - Fixes default pool value (#366)
  - Fixes erroneous misformatting of top-level $and/$or clauses (#365)
  - Fix and improve TypeScript declaration (#369)
  - Use local as default timezone, pass timezone option to Query (#325)
  - Postgres: always save object as Buffer (#378)
  - Postgres: fix queries for prop create index, and for primary keys (#377)
f8e31583   Arek W   Update changelog
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  - Typo in property definition (#382)
  - Implement eager loading - huge performance win (#393)
  - Make model methods defined by `defineProperty` writable so they can be mocked (#399)
  - Allow composite keys when calling remove. (#345, #358)
  - Fixed bug on like expression using MongoDB (#403)
  - Fixes pool and debug settings always true (#405)
  - Update express middleware for express.io (#413)
  - Allow HasMany.setAccessor to take an empty array
  - Fix DML if object value is null, JSON.stringify return string 'null' (#380)
  - Correct sqlite log statement (#452)
  - Make association methods writable so they can be mocked (#451)
  - Throw ORM errors rather than generic ones (#455)
  - Fix sqlite3 driver with config object on windows (#461)
  - Fix 'No associations defined' error (#398)
  - Don't modify connection object (#469)
  - Don't fire afterSave hooks when calling save with no changes (#457)
  - Fix reverse has one association findBy* (#450)
  - Auto cast hasMany extra properties with types like 'Object' (#466)
  - Add example full featured express app - AnonTXT
  
d6f4c1c3   Diogo Resende   2.1.3
124
125
126
127
128
129
130
131
132
133
134
135
136
  ### v2.1.3 - 14 Oct 2013
  
  - Fixes connection strings being parsed by url module to don't forget about port :) (#355)
  - Fixes tests common.getConnectionString to use common.getConfig
  - Converts indentation from spaces:2 to tabs
  - Removes unnecessary path requirement in ORM.js
  - Changes user methods to be writeable property instances (fixes #296)
  - Fixes afterAutoFetch next(err) bubling up just like afterLoad (#301)
  - Fixes cache for hasOne associations (#339)
  - Adds findByAssociation to extendsTo (#314)
  - Fixes Model.extendsTo autoFetch not working (throwing) (#323)
  - Adds hasMany hooks.beforeSave (#324)
  
7ceb1201   Diogo Resende   2.1.2
137
138
139
140
141
142
  ### v2.1.2 - 16 Sep 2013
  
  - Fixes stack overflow on instance.save() with a reversed hasOne association (#338)
  - Reverts should dev dependency to 1.2.2 (newer version was causing problems)
  - When using postgres you can now use pg@2.6.2 (unless when connecting to Heroku - use 2.5.0)
  
dc466159   Diogo Resende   2.1.1
143
144
  ### v2.1.1 - 13 Sep 2013
  
195e4793   Arek W   Update Changelog.md
145
  - Add TypeScript interface
195e4793   Arek W   Update Changelog.md
146
  - Allow custom join tables (#276)
dc466159   Diogo Resende   2.1.1
147
148
  - Fixes stack overflow when saving auto-fetched model with relations (#279)
  - Unique validator can be scoped and case insensitive (#288)
195e4793   Arek W   Update Changelog.md
149
  - Allow async express middleware (#291)
dc466159   Diogo Resende   2.1.1
150
151
152
  - Allow finding by associations (#293)
  - Fix sqlite find with boolean (#292)
  - Fix `afterLoad` hook error handling (#301)
195e4793   Arek W   Update Changelog.md
153
  - Allow auto-escaping for custom queries (#304)
dc466159   Diogo Resende   2.1.1
154
  - Add support for custom property types (#305)
d30122ab   Arek W   Reference issues
155
  - Allow ordering by raw sql - .orderRaw() when chaining (#308, #311)
195e4793   Arek W   Update Changelog.md
156
  - Fix saving Instance.extra fields (#312)
dc466159   Diogo Resende   2.1.1
157
  - Fix `NaN` handling (#310)
195e4793   Arek W   Update Changelog.md
158
  - Fix incorrect SQL query (#313)
dc466159   Diogo Resende   2.1.1
159
160
161
162
163
164
165
166
167
168
169
170
  - Deprecated `PARAM_MISSMATCH` ErrorCode in favour of correctly spelt `PARAM_MISMATCH` (#315)
  - Add promises to query chain (#316)
  - Adds a test for hasMany.delAccessor with arguments switched (#320)
  - Allow passing timezone in database connection string, local timezone is now default (#325, #303)
  - Adds ability to call db.load() with multiple files (closes #329)
  - For mysql driver, when using pool, use con.release() instead of con.end() (if defined) (closes #335)
  - Passes error from afterLoad hook to ready event
  - Most errors now have a model property
  - Adds connection.pool and connection.debug settings
  - Fixes throw when calling ChainFind.first() or .last() and it has an error
  - Removes upper limit on VARCHAR column size
  - Allows multi-key models to support hasMany
195e4793   Arek W   Update Changelog.md
171
  
ed28bb0d   Diogo Resende   2.1.0
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
  ### v2.1.0 - 3 Aug 2013
  
  - Adds License (MIT) file (closes #271)
  - Make Model.get respect Model autoFetch default value (#277)
  - Changes the way ":" is added to sqlite db paths (#270)
  - Fixes duplicated debug lines for postgres (#258)
  - Fixes not saving associations if no changes (other than associations) are made (#256)
  - Fixes autoFetch being discarded in Model.get options (closes #266)
  - Adds beforeDefine to plugins (#263)
  - Allows user to pass an object to extendsTo.setAccessor instead of an instance (detected via #250)
  - Changes autoFetch to avoid autofetching if instance is not saved (it's new!) (#242)
  - Changes validations and predefined validators to use enforce@0.1.1
  - Adds support for setting properties.association_key to be a function (name, field)
  - Passes connection settings to database drivers
  - Creates initial mongodb driver and 'mongo' driver alias
  - Allow querying chainfind with sql conditions
  - Allow passing extra options to extended models
  - Allow big text fields
  - Allow before* hooks to modify the instance
  - Fixes #226 - hasOne delAccessor not working
  - Adds Utilities.getRealPath to look for the real path to load based on the file where it was called from (for db.load and db.use)
  - Fixes Model.aggregate().call() to accept no arguments except function name
  - Fix problem with extendsTo and custom key types
  - Better association typing and multikey support
  
1f385197   Benjamin Pannell   Intelligent assoc...
197
  ### v2.0.15 - 10 July 2013
52972e3f   Diogo Resende   2.0.15
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
  
  - Support for 'point' type as a property (#221)
  - .call() in aggregates for generic functions (#204)
  - Adds hook afterAutoFetch triggered after extending and auto fetching (if any) associations (#219)
  - Adds predefined validator .password()
  - Adds ability to have the afterLoad hook blocking (#219)
  - Changes Model.create() to wait for createInstance callback instead of using the returned value
  - Fixes problem with hasOne associations for none persisted instances and autoFetch active just blocking
  - Refactored Model.hasOne() constructor to be able to mix parameters
  - Fixes reversed hasOne association on the reversed model not being correctly saved (#216)
  - Changes Model.hasMany.addAccessor to throw just like .setAccessor when no associations are passed
  - Adds ability to pass an Array to hasMany.hasAccessor and also not passing any instance to hasAccessor and have it check for any associated item
  - Exposes Model methods to change hooks after model definition
  - Fixes postgres driver not returning numbers for number columns
  - Fixes passing json object instead of instances to Model.create() associations (#216)
  - Passes Model to Instance directly, changes Instance to use Model.properties instead of opts.properties
  - Exposes Model.properties
  - Removes old Property.js throw error in favour of new one
  - Adds initial Model.extendsTo(name, properties[, opts])
  - Avoids redefining properties in instances
  - Adds ErrorCodes.NOT_DEFINED
  - Adds db.drop() - similar to db.sync()
  - Changes hasMany.getAccessor to support order as string (closes #196)
  - Handle django string formatted sqlite datetime
  - Many bug fixes
  
fcedc3f3   Diogo Resende   2.0.14
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
  ### v2.0.14 - 27 June 2013
  
  - Changes many errors to use the ErrorCodes generator (#206)
  - Changes Model.aggregate() to support multiple orders when calling .order() (#207)
  - Changes Readme.md sqlite3 version and adds warning.
  - Fix wrong import of debug output for aggregate functions
  - Fix orm when running on node v0.6 (at least) and module not found error has no code property
  - Adds model.namePrefix setting (#203)
  - Fixes bug when passing an array (object) of ids but no options object
  - Only mark model as dirty if a property has _really_ changed
  - Fix hasOne infinite loop
  - WIP: Fix hasOne infinite loop & migrate tests to mocha
  - Fixes ipv4 predefined validator match string (it was not matching correctly!)
  - Fixes Model.get() when passing cache: false and model has cache: true
  - Creates Singleton.clear() to clear cache, exports singleton in orm
  - Fix required property model.save only threw a single error with returnAllErrors = true
  - Fixes some hasMany association usage of Association.id to check for real id property name (#197)
  - Changes db.load() to return value from loaded and invoked function (#194)
  - Adds possibility to add a callback to ChainFind.find() (#190)
  - Adds .findByX(...) to .hasOne("X", ...)
  - Allow db.load() to work outside of module.exports
  - Fix mysql driver for non-autoincrement key
  - Test framework moving to mocha, not complete yet
  - Adds `make cov` to make for a test coverage
  - Many other bug fixes
  
62d5bcb8   Diogo Resende   2.0.13
250
251
252
253
254
255
256
257
  ### v2.0.13 - 5 June 2013
  
  - Avoids throwing when calling db.close() without a callback and using pool in mysql (fixes #180)
  - Adds initial code to support passing associations when creating new instances (#162)
  - Changes Model.exists() to allow array or object passing
  - Allows passing an object instead of an instance as an hasOne asssociation
  - Fixes bug introduced in 2.0.12 forcing extra properties being ignored (fixes #183)
  
87649811   Diogo Resende   2.0.12
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
  ### v2.0.12 - 30 May 2013
  
  - New plugin: orm-paging
  - Adds Model.one() as an alias for Model.all().limit(1) (#148)
  - Changes Model.one() to return only one instance (or null) instead of an Array (#148)
  - Allow passing a single object to Model.create() (#159)
  - Fixes passing unknown properties to new instances (fixes #178)
  - Adds AggregateFunctions.limit() (#172)
  - Checks for driver debug flag and prints debug lines in AggregateFunctions (#171)
  - Added Hook 'beforeValidation' prior to _all_ validations
  - Avoids JSON parsing values when they are already objects (and not string buffers) (#168)
  - Changes beforeRemove, beforeCreate, beforeSave and beforeValidation to use Hooks.wait() (sync or async hooks) (#167)
  - Support specifying size of number columns
  - Many more bug fixes
  - More tests added
  - Many documentation improvements
  
7c9b1bb5   Diogo Resende   2.0.11
275
276
277
278
279
280
281
282
283
  ### v2.0.11 - 3 May 2013
  
  - Changes orm.connect() to return an EventEmitter
  - Avoids saving an instance if a property is null and is marked as required (#142)
  - Avoids passing property validations if property is null and is not required (#142)
  - Fixes documentation where user should be used instead of username in connection options (closes #145)
  - Adds postgresql schema support
  - Fixes autoFetchLimit and cascadeRemove options not being used when set to 0 or false (fixes #144)
  
4d7e64b4   Diogo Resende   2.0.10
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
  ### v2.0.10 - 25 Apr 2013
  
  - Adds ChainFind.where() as a link to ChainFind.find()
  - Adds support for -property on ChainFind.order()
  - Reduces the size of mysql driver
  - Adds initial support for multi primary key models
  - Updates DB.define() and Model.get() to support tables with multiple primary keys (#135)
  - Creates Model.all() as alias to Model.find(), adds simple example
  - Fixes autoFetch option not being considered in Model.find() (#120)
  - Adds support for chaining and rechaining with ChainFind
  - Fixes bug about connection config object not having query key (fixes #130)
  - Adds initial plugin architecture - .use() (#121)
  - Fixes some bugs
  - Adds more tests
  
1d18b526   Diogo Resende   2.0.9
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
  ### v2.0.9 - 18 Apr 2013
  
  - Correct 'returnAllErrors' setting behaviour
  - Adds default settings properties.required = false (#110)
  - Changes instance.save() to support an hash of changes before saving (#111)
  - Adds setting connection.reconnect (default=false) to auto-reconnect (only mysql for now) (#112)
  - Adds possibility of .order() to aggregate method (#114)
  - Adds .select() aggregate function to support additional properties to be selected (#114)
  - Adds .as() aggregate function to define alias to previous function (#123)
  - Adds .distinct() aggregate function to all drivers (#123)
  - Changes model.find() queries to specify columns instead of selecting * from tables (#106)
  - Changes hasMany.addAccessor to support arrays of instances (#97)
  - Adds support for descending ordering using "-property" (#115)
  - Adds pool support to postgres driver
  - Removes postgres axomic driver
  - Updates redshift driver to use new postgres driver
  - Adds .validate() model to instances
  - Adds more tests
  - Some documentation updates
  - Some bug fixes
  
7160fb4a   Diogo Resende   2.0.8
320
321
322
323
324
325
326
327
328
329
330
331
  ### v2.0.8 - 8 Apr 2013
  
  - Adds more aggregate functions to the several drivers
  - Adds groupBy to aggregate methods (#99)
  - Adds possibility to use "-property" to indicate a descending order in Model.find()
  - Adds setting instance.returnAllErrors (default: true)
  - Changes hasMany.setAccessor to support passing an array of instances (#97)
  - Fixes property defaultValue not being set if property is null (closes #104)
  - Adds support for indexes on properties that are no associations (#98)
  - Adds a new option to add multi-column indexes to models (#98)
  - Bug fixes
  
a0a1f007   Diogo Resende   2.0.7
332
333
334
335
336
337
338
339
340
341
  ### v2.0.7 - 3 Apr 2013
  
  - Fixed SQLite driver writing to console when it should not
  - Changes Express middleware to wait for connections (errored or not) before processing requests (#92)
  - Avoids loosing previously set limit (if set) on Model.fin() (#93)
  - Fixes hasMany getAccessor when using an Array as only argument (specific properties)
  - Adds ChainFind .last() (similar to .first())
  - Fixes hasMany acessor names to correctly convert prop_name to PropName (underscores)
  - Adds hasMany hasAcessor conditional to ChainFind (#94)
  
eefe1b70   Diogo Resende   2.0.6
342
343
344
345
346
347
348
349
350
351
352
353
354
355
  ### v2.0.6 - 22 Mar 2013
  
  - Changes orm.connect to check connection url/opts to avoid throwing some errors about missing protocol or database (#75)
  - Hardens some validators againt null/undefined, changes match validator to avoid compiling regex everytime it's called
  - Changes back default instance properties to null instead of undefined
  - Changes Express middleware to be able to have more than one connection (#76)
  - Changes Singleton to avoid cache if save_check option is enabled and cached instance is not saved (#78)
  - Adds Model.aggregate()
  - Adds 'required' option to hasOne associations
  - Changes singleton uid creation to use driver uid (#86)
  - Changes Model.drop and Model.sync to be resistive to no callback
  - Changes ORM.sync() to also be resistant to no callback
  - Many bug fixes
  
d64ee77c   Diogo Resende   2.0.5
356
357
358
359
360
361
362
363
364
365
366
  ### v2.0.5 - 13 Mar 2013
  
  - Uses sql-query for SQL query building
  - Adds initial middleware for Express
  - Moves beforeCreate to near beforeSave so people can change instance just like beforeSave (#69)
  - Fixes bug when creating Models without all data (#69)
  - Changes drivers.count() to be able to pass options (related to #68)
  - Changes postgres DDL to create ENUM types before table (#71)
  - Changes hasOne.getAccessor to be able to fetch instance before association (if needed)
  - Adds support for Object property type in DDL drivers (#72)
  
cf6c629d   Diogo Resende   2.0.4
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
  ### v2.0.4 - 7 Mar 2013
  
  - Changes db.load() to behave like builtin require()
  - Moves hook beforeSave to before checking validations (#66)
  - Changes postgres driver to support ssl flag and pass it to pg driver
  - Adds possibility to add order to hasMany getAccessor (#58)
  - Fixes hasOne reversed associations not having setAccessor
  - Adds db.ping() (#57)
  - Changes db.load to avoid throwing and just create the error
  - Added "afterRemove" hook
  - Added "afterCreate" hook
  - Support Model.find({ prop: null }) (closes #59)
  - Adds LIKE operator
  - Many bug fixes
  
b9882481   Diogo Resende   2.0.3
382
383
384
385
386
387
388
389
390
391
392
  ### v2.0.3 - 26 Feb 2013
  
  - Fixes postgresql integer columns (#52)
  - Adds boolean support for sqlite (#50)
  - Fixes an issue where hasMany association properties were not being checked (#49)
  - Changes hasMany associations to be able to make some call without callback
  - Makes Instances trigger beforeRemove event
  - Creates default option for instance.cascadeRemove (true)
  - Fixes unique validator not using Model id property name (was using hard coded "id")
  - Updated documentation
  
89255b00   Diogo Resende   2.0.2
393
394
395
396
397
398
399
400
  ### v2.0.2 - 21 Feb 2013
  
  - Forces hasMany association changes to check for instance saved (to ensure the instance has an id property)
  - Fixes some bugs when not using "id" as instance id property
  - Adds default setting instance.cache = true so people can tweak it globally
  - Adds autoFetch and autoSave options to default settings
  - Adds more documentation about Hooks, fixes Model options list ending
  
59adae58   Diogo Resende   Adds first Changelog
401
402
403
404
405
406
407
408
409
410
411
412
  ### v2.0.1 - 21 Feb 2013
  
  - Changes singleton to support cache value as a number (timeout in seconds)
  - Fixes bug when escaping boolean values in postgres
  - Fixes bug on Model.sync (postgres) when property has default value (using wrong path to escape method)
  - Fixes DDL drivers creating duplicated field in reversed hasOne associations
  - Changes Model instanciation to extend association properties
  - Adds support to Amazon Redshift based on PostgreSQL driver
  
  ### v2.0.0 - 21 Feb 2013
  
  - Initial release