forked from dbsrgits/sql-translator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
513 lines (416 loc) · 22.1 KB
/
Changes
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
162
163
164
165
166
167
168
169
170
171
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
197
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
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
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
Changes for SQL::Translator
0.11018 2013-10-31 🎃
* Revert "Fix AUTOINCREMENT in SQLite"
0.11017 2013-10-30
* Apply quotes to fix tables that are reserved words, DBI::SQLServer (Jonathan C. Otsuka)
* Add DECIMAL_DIGITS to field size for scale info, DBI::SQLServer (Jonathan C. Otsuka)
* De-linkify XML namespace in docs (RT#81838)
* Allow both single and double quotes for values in MySQL parser
* Fix diff for altering two things per column - add ; at the end
* Call all diff methods in list context (it can be merged later)
* Fix Pg diff issue with drop constraint on primary keys
* SQLite support for SET NULL, SET DEFAULT and NO ACTION in FK clauses
* Clean up properly after Parser::DBI::PostgreSQL tests
* Fix typos in error messages
* Add SQL_TINYINT and SQL_BIGINT to the type map in
SQL::Translator::Schema::Field
* Add JSON parser and producer (Jon Jensen)
* Clean up TTSchema doc some (Gavin Shelley)
* Fix AUTOINCREMENT in SQLite (Rafael Porres Molina)
0.11016 2012-10-09
* Allow passing an arrayref to SQLT->filename (lost in Mooification)
0.11015 2012-10-05
* Fix stupid missing version number in SQL::Translator::Schema::Object
0.11014 2012-10-05
* Relicense under Perl 5 terms
0.11013_03 2012-09-25
* Remove SQL::Translator::Schema::Graph as announced in 0.11011
* Remove a number of no longer needed deps
0.11013_02 2012-09-23
* Fix missing dep (List::MoreUtils)
0.11013_01 2012-09-22
* Convert SQL::Translator, ::Schema and ::Schema::* to Moo
* Fix leaks by weakening circular references between schema objects
0.11013 2012-09-22
* Make MySQL producer add NULL after every nullable field, conforming to SQL
standard, and avoiding MySQL bugs
0.11012 2012-07-02
* Fix/update quoting in PostgreSQL producer
* Add missing quote function to SQLServer producer
* Fix incorrect Parser::DBI documentation (RT#60878)
0.11011 2012-05-09
[ INCOMPATIBLE CHANGES ]
* SQLT no longer supports setting separate conflicting values for the now
deprecated 'quote_table_names' and 'quote_field_names'. Instead their values
are proxied to the new 'quote_identifiers'. If 'quote_identifiers' is
supplied, the legacy settings are ignored (with a warning). If nothing is
specified the default is TRUE as before. If only one is specified - default
to its value for everything, and if both are specified with a conflicting
value an exception is thrown.
* Partial quoting support has been added in SQLite. It is currently disabled by
default, you need to request is explicitly with quote_identifiers => 1. In a
future version of SQL::Translator *THIS DEFAULT BEHAVIOR WILL CHANGE*.
If you do NOT WANT quoting, set quote_identifiers to a false value to
protect yourself from changes in a future release.
* Bump the default MySQL parser version to MySQL 4.0
[ OTHER CHANGES ]
* script/sqlt-graph now accepts a --trace option
* Fixes to SQLite foreign keys production (patch from Johan Viklund)
closes RT#16412, RT#44769
* ON DELETE/UPDATE actions for SQLite (patch from Lukas Thiemeier)
closes RT#70734, RT#71283, RT#70378
* Fix data preservation on SQLite diffs involving adding/dropping columns
* Support for triggers in PostgreSQL producer and parser
* Correct Data Type in SQLT::Parser::DBI::PostgreSQL (patch from Andrew Pam)
* Fix index issue in SQLT::Parser::DBI::PostgreSQL
* Add column and table comments in SQLT::Parser::DBI::PostgreSQL(patch from Andrew Pam)
* Stop the DBI parser from disconnecting externally supplied DBI handles (RT#35868)
* Fixed alter_drop_constraint for foreign keys and applying multiple changes
via alter_field to a column in Postgres Producer
* Added a working mechanism for naming foreign keys in the PostgreSQL producer
* Fix PostgreSQL ignoring default values with specified data type
* Fix PostgreSQL parser support for (N)::int defaults (patch by Tina Müller)
* Fix possible name duplication in SQLlite producer
* Oracle does not accept ON DELETE/UPDATE RESTRICT (though it is the actual default)
fix by not adding the ON DELETE/UPDATE clause at all
* Changed dependency on Digest::SHA1 to the core-bundled Digest::SHA (RT#67989)
* Support for double quoted and bit strings as default values in MySQL parser
* Improved VIEW support in MySQL parser
* Proper handling of CURRENT_TIMESTAMP default values in MySQL parser (RT#65844)
* Check in MySQL parser to avoid trying to parse a table defined twice in the same
file as indices (and probably other things) get messed up
* Workaround for some MySQL quirks on primary key definitions
* Fix dropping primary keys in MySQL diffs (RT#62250, patch from Nick Bertrand)
* MySQL producer does not attempt to write out non-existent unique constraint names
* MySQL parser correctly differentiates between signed and unsigned integer column
display sizes
* Replace Class::Accessor::Fast dependency with already-included Moo
* Entire codebase is now free of tabs and trailing whitespace
* Spellfixes (RT#68912)
* Fix Diagram Producer POD (RT#71397, RT#71398)
* Fix Diagram Producer to use correct binmode on output (RT#71399)
* Fix ignored option to script/sqlt-diagram (RT#5992)
* Fix t/17sqlfxml-producer.t failures due to whitespace differences introduced by
environment config snippets (RT#70786)
* Fix assembly of Table objects with numbered columns being added out of order
(RT#74771) (based on patch from Jonathan Otsuka)
* Fix syntax error in SQL::Translator::Producer::Latex (RT#74953)
* Deprecate SQL::Translator::Schema::Graph and the as_graph() schema method
* Bump minimum supported perl version to 5.8.1 (mostly due to Moo)
0.11010 2011-10-05
* Add "if exists" to drop view statements in Pg.
0.11009 2011-09-02
* Fix MySQL producer to properly quote all table names on output (patch from geistteufel)
0.11008 2011-05-04
* Correctly create and parse FK constraints in SQLite
* Correct postgis geography type insertion and linebreak fix for multiple geometry/geography columns
* made PostgreSQL producer consistent with other producers in terms of
quoting and allowing functions in constraints and indices
* Add distinction of autoinc and regular primary keys to the GraphViz producer
* Fix odd invocation of Test::More::pass() in t/36-filters.t (RT#64728)
* Quote everything in SQL Server
* Turn off constraints before dropping tables in SQL Server
* Make true unique constraints if needed in SQL Server
* Fixed Producer::PostgresSQL to output array type after type size,
i.e. varchar(64)[] rather than varchar[](64)
0.11007 2010-11-30
* Fix POD typo in SQL/Translator/Schema/Trigger.pm
* Add explicit Scalar::Util to the deplist for really old perls
* Add support for PostGIS Geometry and Geography data types in the Pg producer
* Some minor fixes to squash warnings on new perls
* Support a custom_type_name hint when creating enum types in PostgreSQL
* Fix sqlt options/pod mismatch (RT#58318)
* Oracle Producer multicolumn constraint support
* Add support for triggers in the MySQL producer
* Fix unstable order of View's in MySQL parser
0.11006 2010-06-03
* Fix Producer::Oracle varchar2 without size def (ORA-00906: missing right
parenthesis)
* Fix Producer::Oracle translate float and double to float instead of number
* Fix Producer::Oracle generation of too long unique constraint names
* Fix Producer::SQLite when generating VIEWs with add_drop_table => 1
* Fix Producer::MySQL not quoting index names when requested (RT#56173)
* Fix Producer::MySQL wrapping extra ()s around VIEW SELECT-ors (RT#56419)
* Fix Field::default_value to behave like a real accessor (allow undef as
an unsetting argument)
* Fix Mysql/Pg/SQLite/MSSQL producers to properly *not* quote numeric default
values (RT#57059)
* Producer::Oracle tests now use Test::Differences
* Prettify output of SQLite producer (less bogus newlines)
* Augment SQLite and Pg producers to accept a perl-formatted (%d.%03d%03d)
and regular no-leading-zero (X.X.X) *_version producer args
0.11005 2010-02-24
* Fix Parser::DBI::Oracle reading too many tables (RT#49413)
* Fix Parser::MySQL tripping up on PRIMARY KEY ... USING (currently value is ignored) (RT#50468)
* Fix runaway debug trace (RT#52276)
* Fix Parser::PostgreSQL choking on commit; statements in DDL (#RT52277)
* Producer::Oracle now respects quote_field|table_names, and
no longer does name munging of reserved table names
* Producer::Oracle now correctly outputs databse-unique index names
0.11004 2010-02-14
* Fix PG producer numeric precision regression (RT#49301)
* Add DB2 producer numeric/decimal precision output
* Fix Oracle producer creating numeric precision statements that the test case expects (no whitespace)
* Add Oracle producer creating drop view statements like PG producer does
* Fix SQL::Translator::Diff to use producer_args instead of producer_options
0.11003 2009-09-28
* Pg parser fixes to deal properly with MATCH <type>
* Pg parser fixes to parse timestamp attributes correctly
* Fix broken default detection in script/sqlt (RT#27438)
* Fix dependency issues with LibXML and TT
0.11002 2009-08-30
* Depend on fixed Parse::RecDescent
* Added skip-tables and skip-tables-like options to Diagram
0.11001 2009-08-18
* Removed last use of Readonly
* Adjusted YAML dependency
0.11000 2009-08-18
* Re-add version numbers to files, else cpan's "upgrade" gets very confused
* Replaced code using Readonly, since most of the rest uses constant, and thats already a dep
* Moved YAML and XML::LibXML back to recommends, the tests for both now skip if not installed
* Bumped to 0.11000 to supercede 0.10 which has incorrect numbering scheme
0.10 2009-08-13
* Resolved the following RT bugs (thanks to everyone for reporting!):
- 25791 does not recognize PostgreSQL ON_ERROR_STOP
- 29265 sqlt-diagram: --natural-join needs Graph::Directed
- 37814 SQLite translator failing to parse schema
- 42548 Producer::PostgreSQL incorrectly inserts the size in
'time(stamp)? with(out) time zone' fields
- 43173 SQL::Translator::Parser without versionnumber - will install
old 0.09002
- 46805 (No subject)
- 47026 META.yml is not packaged due to MANIFEST.SKIP (easyfix)
- 32130 Move from XML::XPath to XML::LibXML::XPathContext
- 22261 MySQL parse
- 13915 missing optional prerequisite cause make test to fail
- 8847 Diagram.pm: BINMODE missing in printing of graphic file.
- 21065 GraphViz producer fails on tables named 'node'
- 35448 Producer::PostgreSQL types without size
- 22026 sqlt-diagram uses -f arg twice
- 47897 [PATCH] Fix uninitialized value within @_ in (uc|lc)
- 47668 Mysql Parser doesn't recognize key types
- 46448 sqlt-graph errors out on MySQL DDL with btree keys
- 47176 Add Foreign Key support to Parser::DBI::PostgreSQL.pm
- 48025 MySQL Producer: Case inconsistency between elements in
@no_length_attr and $data_type
- 48569 sqlt-diagram fails to load SQLite schema
- 48596 SQL::Translator::Diff::schema_diff should produce a list in
list context
- 44907 SQL::Translator::Producer::PostgreSQL produce() in list context
should return a list of statements
0.09007 2009-06-25
* Fixed Pg parser - caching the compiled P::RD schema is a *very*
bad idea
* Fix MSSQL handling of ON UPDATE/DELETE RESTRICT
* Delay MSSQL FK constraint deployment until after all CREATE TABLE
statements
* Coerce other engine's bytea/blob/clob datatypes to VarBinary
0.09006 2009-06-10
* Multiple test and dependency adhustments to make smokers happy
* Fix YAML producer wrt extra attribute
* Added support for "time(stamp) (p) with time zone" for Pg producer (mo)
0.09005 2009-06-08
* Add parser support for MySQL default values with a single quote
* Properly quote absolute table names in the MySQL producer
* Added CREATE VIEW subrules for mysql parser (wreis)
* Many fixes to code and tests for trigger's "database_events"
* Added semi-colon for (DROP|CREATE) TYPE statements in the Pg producer (wreis)
* ALTER TABLE/ALTER COLUMN/DROP DEFAULT support in Pg producer (mo)
* XML parser support for multi-event triggers
* SQLite producer support for multi-event triggers
* XML parser switched from XML::XPath to XML::LibXML
* Pg producer ALTER TABLE/COLUMN and DROP DEFAULT support
* MySQL producer skips length attribute for columns which do not support that
attribute. Currently following column types are added to that list:
date time timestamp datetime year
* Switch to Module::Install (mandates minimum perl 5.005)
* Major cleanup of GraphViz proucer
* Massive amount of fixes to SQLite/Pg/Mysql/MSSQL parsers/producers
Fix most of the problems uncovered by the roundtrip test framework
Some highlights:
- Rewind exhausted globs before attempting a read
- Do not add xml comment header if no_comments is set
- table/field counts are held per schema object, not globally
- no more variable table and column names in SQLite and MSSQL
- VIEW support for Pg parser, also some cleanups
- The way we generate Pg create view statements was not standards compliant
(per RhodiumToad in #postgresql)
- Disable MSSQL view/procedure production - they never worked in the first place
- SQLite/MSSQL improvements:
- Support parsing of all DROP clauses
- Support parsing of field-level comments
- When producing do not append table names to constraint/index names
0.09004 2009-02-13
* Add support for temporary tables in Pg (nachos)
* Create Trigger support for SQLite
* GraphViz producer improvements
0.09003 2009-02-07
* <BORKED RELEASE DELETED OFF CPAN>
0.09002 2008-12-05
* parsing MySQL CURRENT_TIMESTAMP as scalar ref so it can be produced without
quotes (jgoulah)
* Add ignore_opts parser arg (to ignore table options) in Parser::MySQL (jgoulah)
* Skip tests for buggy Spreadsheet::ParseExcel versions (rbo)
* Add support for skip tables parser arg in Parser::DBI::MySQL (jgoulah)
* Changed behaviour of ::Producer::Oracle when returning an array of statements
to make it compatible to DBI->do()
* Fixed a few bugs in ::Producer::Oracle
* Applied patch from jgoulah to support mysql's MERGE option
* Applied patch from rbo to add support of multiple database events on a trigger
* Applied patch from lukes to allow drop if exists in sqlite producer, with
version >= 3.3
* Applied patch from rjbs with minor changes, now we support scalar refs in
default values!
* Fixed SQLite producer to end index statements in newlines, in scalar context
* Decreed that all list context statements shall not end in ; or ;\n
* Fixed SQLite, Diff and MySQL producers to agree with Decree.
* Added support for CREATE VIEW + tests in the Pg producer (wreis)
* Added support for CREATE VIEW + tests in the sqlite producer (groditi)
* Added proper argument parsing and documentation to MySQL Parser and
Producer (ribasushi)
* Using DROP VIEW instead of OR REPLACE clause in the Pg producer, as replace
only allows replacement with identical set of columns (wreis)
* Added support for DROP VIEW and fixed CREATE VIEW statement in the sqlite
producer (wreis)
* Removed source_db and target_db accessors from Diff (throwback to old version,
only output_db is used)
* Support for longer varchar fields in MySQL
0.09001 2008-08-19
* Added support for CREATE VIEW + tests in the mysql producer (groditi)
* Added support for SET fields in the mysql producer + test (groditi)
* Added support for proper booleans in the mysql producer, when a mysql version
of at least 4.x is supplied
* Added support for proper enums under pg (as of 8.3), with pg version check,
and deferrable constraints
* Added support to truncate long constraint and index names in the mysql
producer, because of a change to DBIx::Class to produce such long names in
some cases.
0.09000 2008-02-25
* Fix Pg produces idea of which field types need a size param (wreis)
* Add support for COLLATE table option to MySQL parser
* Allow DEFAULT CHARACTER SET without '=' (as produced by mysqldump)
0.0899_02 2008-01-29
* Major refactoring of SQL::Translator::Diff again:
* Diff is no longer one huge monolithic function.
* Added more tests for diff
* When producing diffs for MySQL you will (by default) get single alter
statements per table
* SQLite can also do remove columns (by creating a temp table as shown in
http://sqlite.org/faq.html#q11
* Columns can be renamed if the new schema is from a form that can have metadata
(which is pretty much anything but an SQL file.) It does this by looking at
renamed_from in the $field->extra
* Updated Oracle and Postgres producers
* More tests!
0.0899_01 2007-10-21
* SQL::Translator::Diff now uses the ::Producer modules to create diffs
This *will* break back-compatibility
Use sqlt-diff-old for the previous one, and fix producers!
0.08001 2007-09-26
* Patched to ignore all TT versions >= 2.15 until TT is fixed :(
0.08 2006-12-07
* Patched 18ttschema-producer.t and 33tt-table-producter.t to skip on TT 2.15,
thanks Ash!
0.08_04 2006-11-10
* Patched MySQL producer to name constraints sanely, thanks Ash
* Added patch to Producer::DB2 to avoid dependency issues with foreign keys
* Added patch to remove single quotes for numeric default values in Producer::DB2
* Fixed Parser::SQLite to require a semicolon after a create trigger statement
* Added patch from avinash to add CASCADE to pg table drops
0.08_03
* Added patch to use default values for Pg timestamp fields
0.08_02 2006-11-03
* Added patch from Ash to separate DROP statements in mysql producer in
list-context
* Fixed up SQLites usage of no-comments
0.08_01 2006-07-23
* Made Trigger check that a give table exists in on_table - castaway
* Split some producers (DB2, MySQL, SQLite, PostgreSQL) into sub methods (others
to follow) - castaway
* Add alter_* methods to some Producers and docs to Producer.pm (for use by Diff
later) - castaway
* Made changes to allow producers to return a list of statements - castaway
* Split sqlt-diff into script and module - castaway
* Added quote_table_names and quote_field_names patch (omega, zamolxes) - castaway
* Added DB2 Producer - castaway
* Added mysql_character_set for 4.1+ -mda
* New filters, Names and Globals. -mda
* Added the initial work on a template based Dia UML producer. -mda
0.07 2005-06-10
* YAML parser supports extra attributes on tables.
* All schema objects now support the extra attribute, so can
have arbitary name/value data attached to them.
* Refactoring: Added SQL::Translator::Schema::Object - base
class for all Schema objects.
* Changes to MySQL Parser (Dave Howorth)
- ignore INSERT statements
- permit ALTER TABLE ADD FOREIGN KEY
- allow trailing comma on last field in CREATE statements
- collect the database name
* TTSchema Producer
- Can pass extra variables using tt_vars producer arg.
- Can pass extra config using tt_conf producer arg.
- Variables and config can be passed on the command line
with --tt-var and --tt-conf options to sqlt.
* Added schema filters.
* MySQL Producer
- Added 'mysql_table_type' extra attribute on tables.
- Works out InnoDB tables from constraints.
- mysql_charset and mysql_collate extra attributes for tables and fiels.
0.06 2004-05-13
* Added SQL::Translator::Manual
* Installation process now uses Module::Build
* Added new "Dumper" producer
* Changed the native SQL Fairy XML format to a fixed mapping.
*NB:* You should convert your existing XML schema. See the
SQL::Translator::Parser::XML::SQLFairy docs.
* Added producers: TT::Base and TT::Table.
0.05 2004-02-27
* Added "COMMENT ON *" syntax to PostgreSQL parser
* Some fixes to Oracle parser as reported by Gail Binkley
* Added support in PostgreSQL parser for all "ALTER TABLE" statements
* Now distributing sqlt-diff script as it's pretty usable
* Added new options to sqlt-graph and GraphViz producer (Dave Cash)
0.04 2003-11-07
* Increased version of Constants module to 1.41 to avoid a problem
where 0.02 has 1.4 of that file and 0.03 had 1.06 which confused
CPAN
* Hard-coded all the PREREQ_PM modules in Makefile.PL (rather than
setting them dynamically) so that automated tests would pass
0.03 2003-11-06
* Added parsers: XML::SQLFairy, Sybase, SQLite, DBI-MySQL,
DBI-PostgreSQL, DBI-SQLite, DBI-Sybase, Storable, YAML
* Added producers: XML::SQLFairy, TTSchema, Storable, YAML
* HTML producer now uses stylesheets to allow easy customization of colors
* Many bug fixes to most every module
* Added "sqlt-dumper" script to help create a script for dumping
a database a la "mysqldump"
* Reversed the arrowheads on the graphical producers to show the
relationships in a more standard way
* Changes all included script names to start with "sqlt"
* Added capturing and printing most embedded table and field comments
0.02 2003-06-17
* Added parsers for Excel and Oracle
* Removed Sybase parser because it didn't actually work
* Added ClassDBI, Diagram, GraphViz, HTML, POD, SQLite, Sybase producers
* Added Schema classes to represent schema as objects
* Removed "Raw" producer in favor of the Schema classes
* Removed "Validator" class as the Schema classes validate themselves
* Improved all existing parsers and producers, expanding them to
handle foreign keys much better, produce better output, etc.
* Added sqlt-diagram.pl and sqlt-graphviz.pl as CLI frontends to the
graphical producers
* Added sql_translator.cgi as a web-form frontend to graphical producers
* Expanded test suite
0.01 2003-02-27
* Added parsers: XML::SQLFairy, Sybase, SQLite, DBI-MySQL,
DBI-PostgreSQL, DBI-SQLite, DBI-Sybase, Storable, YAML
* Added producers: XML::SQLFairy, TTSchema, Storable, YAML
* HTML producer now uses stylesheets to allow easy customization of colors
* Many bug fixes to most every module
* Added "sqlt-dumper" script to help create a script for dumping
a database a la "mysqldump"
* Reversed the arrowheads on the graphical producers to show the
relationships in a more standard way
* Changes all included script names to start with "sqlt"
* Added capturing and printing most embedded table and field comments