forked from darold/ora2pg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
changelog
3606 lines (3241 loc) · 184 KB
/
changelog
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
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2017 01 29 - v18.0
This new major release adds several new useful features and lot of
improvements.
* Automatic rewrite of simple form of (+) outer join Oracle's
syntax. This major feature makes Ora2Pg become the first free
tool that is able to rewrite automatically (+) outer join in
command line mode. This works with simple form of outer join
but this is a beginning.
* Add export of Oracle's virtual column using a real column and
a trigger.
* Allow conversion of RAW/CHAR/VARCHAR2 type with precision in
DATA_TYPE directive. Useful for example to transform all RAW(32)
or VARCHAR2(32) columns into PostgreSQL special type uuid.
* Add export NOT VALIDATED state from Oracle foreign keys and check
constraints into NOT VALID constraints in PostgreSQL.
* Replace call to SYS_GUID() with uuid_generate_v4() by default.
* Add "CREATE EXTENSION IF NOT EXISTS dblink;" before an autonomous
transaction or "CREATE EXTENSION IF NOT EXISTS pg_background;".
* Major rewrite of the way Ora2Pg parse PL/SQL to rewrite function
calls and other PL/SQL to plpgsql replacement. There should not
be any limitation in rewriting when a function contains a sub
query or an other function call inside his parameters.
* Refactoring of ora2pg to not requires any dependency other than
the Perl DBI module by default. All DBD drivers are now optionals
and ora2pg will expect an Oracle DDL file as input by default.
* Add export of Oracle's global variables defined in package. They
are exported as user defined custom variables and available in
a session. If the variable is a constant or have a default value
assigned at declaration, ora2pg will create a new file with the
declaration (global_variables.conf) to be included in the main
configuration file postgresql.conf file.
* Create full text search configuration when USE_UNACCENT directive
is enabled using the auto detected stemmer or the one defined in
FTS_CONFIG. For example:
CREATE TEXT SEARCH CONFIGURATION fr (COPY = french);
ALTER TEXT SEARCH CONFIGURATION fr ALTER MAPPING FOR
hword, hword_part, word WITH unaccent, french_stem;
CREATE INDEX place_notes_cidx ON places
USING gin(to_tsvector('fr', place_notes));
Changes and incompatibilities from previous release:
* FTS_INDEX_ONLY is now enabled by default because the addition of
a column is not always possible and not always necessary where a
simple function-based index is enough.
* Remove use to setweigth() on single column FTS based indexes.
* Change default behaviour of Ora2Pg in Full Text Search index
export.
A new command line option and some configuration directive have
been added:
* Option -D | --data_type to allow custom data type replacement
at command line like in configuration file with DATA_TYPE.
* UUID_FUNCTION to be able to redefined the function called to
replace SYS_GUID() Oracle function. Default to uuid_generate_v4.
* REWRITE_OUTER_JOIN to be able to disable the rewriting of Oracle
native syntax (+) into OUTER JOIN if rewritten code is broken.
* USE_UNACCENT and USE_LOWER_UNACCENT configuration directives to
use the unaccent extension with pg_trgm with the FTS indexes.
* FTS_INDEX_ONLY, by default Ora2Pg creates an extra tsvector column
with a dedicated triggers for FTS indexes. Enable this directive
if you just want a function-based index like:
CREATE INDEX ON t_document USING
gin(to_tsvector('pg_catalog.english', title));
* FTS_CONFIG, use this directive to force the text search stemmer
used with the to_tsvector() function. Default is to auto detect
the Oracle FTS stemmer. For example, setting FTS_CONFIG to
pg_catalog.english or pg_catalog.french will override the auto
detected stemmer.
There's also lot fixes of issues reported by users from the past two
months, here is the complete list of changes:
- Fix return type in function with a single inout parameter and a
returned type.
- Prevent wrong rewrite of empty as null when a function is used.
Thanks to Pavel Stehule for the report.
- Add the UUID_FUNCTION configuration directive. By default Ora2Pg
will convert call to SYS_GUID() Oracle function with a call to
uuid_generate_v4 from uuid-ossp extension. You can redefined it
to use the gen_random_uuid function from pgcrypto extension by
changing the function name. Default to uuid_generate_v4. Thanks
to sjimmerson for the feature request.
- Add rewrite of queries with simple form of left outer join syntax
(+) into the ansi form.
- Add new command line option -D | --data_type to allow custom data
type replacement at command line like in configuration file with
DATA_TYPE.
- Fix type in ROWNUM replacement expression. Thanks to Pavel Stehule
for the report.
- Add replacement of SYS_GUID by uuid_generate_v4 and allow custom
rewriting of RAW type. Thanks to Nicolas Martin for the report.
- Fix missing WHERE clause in ROWNUM replacement with previous patch
thanks to Pavel Stehule for the report.
- Fix ROWNUM replacement when e sub select is used. Thanks to Pavel
Stehule for the report.
- Fix wrong syntax in index creation with DROP_INDEXES enabled.
Thanks to Pave Stehule for the report.
- Remove replacement of substr() by substring() as PostgreSQL have
the substr() function too. Thanks to Pavel Stehule for the report.
- Move LIMIT replacement for ROWNUM to the end of the query. Thanks
to Pavel Stehule for the report.
- Fix text default value between parenthesis in table declaration.
Thanks to Pavel Stehule for the report.
- Fix return type when a function have IN/OUT parameter. Thanks to
Pavel Stehule for the report.
- Mark uuid type to be exported as text. Thanks to sjimmerson for
the report.
- Add EXECUTE to open cursor with like "OPEN var1 FOR var2;". Thanks
to Pavel Stehule for the report.
- Fix replacement of local type ref cursor. Thanks to Pavel Stehule
for the report.
- Add EXECUTE keyword to OPEN CURSOR ... FOR with dynamic query.
Thanks to Pavel Stehule for the report.
- Fix case sensitivity issue in FOR .. IN variable declaration
replacement. Thanks to Pavel Stehule for the report.
- Fix wrong replacement of cast syntax ::. Thanks to Pavel Stehule
for the report.
- Reactivate numeric cast in call to round(value,n).
- Close main output data file at end of export.
- Add virtual column state in column info report, first stage to
export those columns as columns with associated trigger.
- Fix unwanted replacement of REGEXP_INSTR. Thanks to Bernard
Bielecki for the report.
- Allow rewrite of NUMBER(*, 0) into bigint or other type instead
numeric(38), just set DATA_TYPE to NUMBER(*\,0):bigint. Thanks to
kuzmaka for the feature request.
- Export partitions indexes into PARTITION_INDEXES_....sql separate
file named. Thanks to Nicolas Martin for the feature request.
- Fix fatal error when schema CTXSYS does not exists. Thanks to
Bernard Bielecki for the report.
- Fix missing text value replacement. Thanks to Bernard Bielecki
for the report.
- Fix type replacement in declare section when the keyword END was
present into a variable name.
- Export NOT VALIDATED Oracle foreign key and check constraint as
NOT VALID in PostgreSQL. Thanks to Alexey for the feature request.
- Add object matching of regex 'SYS_.*\$' to the default exclusion
list.
- Fix UTF8 output to file as the open pragma "use open ':utf8';"
doesn't works in a global context. binmode(':encoding(...)') is
used on each file descriptor for data output.
- Improve parsing of tables/indexes/constraints/tablespaces DDL from
file.
- Improve parsing of sequences DDL from file.
- Improve parsing of user defined types DDL from file.
- Export Oracle's TYPE REF CURSOR with a warning as not supported.
- Replace call to plsql_to_plpgsql() in Ora2Pg.pm by a call to new
function convert_plsql_code().
- Move export of constraints after indexes to be able to use USING
index in constraint creation without error complaining that index
does not exists.
- Add "CREATE EXTENSION IF NOT EXISTS dblink;" before an autonomous
transaction or "CREATE EXTENSION IF NOT EXISTS pg_background;".
- Improve parsing of packages DDL from file.
- When a variable in "FOR varname IN" statement is not found in the
DECLARE bloc, Ora2Pg will automatically add the variable to this
bloc declared as a RECORD. Thanks to Pavel Stehule for the report.
- Major rewrite of the way Ora2Pg parse PL/SQL to rewrite function
calls and other PL/SQL to plpgsql replacement. There should not
be limitation in rewriting when a function contains a sub query
or an other function call inside his parameters.
- Fix unwanted SELECT to PERFORM transformation inside literal
strings. Thanks to Pavel Stehule for the report.
- Fix bug in DEFAULT value rewriting. Thanks to Pavel Stehule for
the report.
- Fix replacement of DBMS_OUTPUT.put_line with RAISE NOTICE.
- Reset global variable storage for each package.
- Improve comment parsing in packages and prevent possible infinite
loop in global variable replacement.
- Add the REWRITE_OUTER_JOIN configuration directive to be able to
disable the rewriting of Oracle native syntax (+) into OUTER JOIN
if it is broken. Default is to try to rewrite simple form of
right outer join for the moment.
- Export types and cursors declared as global objects in package
spec header into the main output file for package export. Types
and cursors declared into the package body are exported into the
output file of the first function declared in this package.
- Globals variables declared into the package spec header are now
identified and replaced into the package code with the call to
user defined custom variable. It works just like globals variables
declared into the package body.
- Add auto detection of Oracle FTS stemmer and disable FTS_CONFIG
configuration directive per default. When FTS_CONFIG is set its
value will overwrite the auto detected value.
- Create full text search configuration when USE_UNACCENT directive
is enabled using the auto detected stemmer or the one defined in
FTS_CONFIG. For example:
CREATE TEXT SEARCH CONFIGURATION fr (COPY = french);
ALTER TEXT SEARCH CONFIGURATION fr ALTER MAPPING FOR
hword, hword_part, word WITH unaccent, french_stem;
CREATE INDEX place_notes_cidx ON places
USING gin(to_tsvector('fr', place_notes));
- Remove CONTAINS(ABOUT()) from the migration assessment, there no
additional difficulty to CONTAINS rewrite.
- Add ANYDATA to the migration assessment keyword to detect.
- Allow conversion of CHAR/VARCHAR2 type with precision in DATA_TYPE
directive. For example it's possible to transform all VARCHAR2(32)
columns only into PostgreSQL special type uuid by setting:
DATA_TYPE VARCHAR2(32):uuid
Thanks to sjimmerson for the feature request.
- Update year in copyrights
- Fix creation of schema when CREATE_SCHEMA+PG_SCHEMA are defined.
- Fix renaming of temporary file when exporting partitions.
- Move MODIFY_TYPE to the type section
- Update documentation about globals variables.
- Add export of Oracle's global variables defined in package. They
are exported as user defined custom variables and available in
a session. Oracle variables assignment are exported as call to:
PERFORM set_config('pkgname.varname', value, false);
Use of these variable in the code is replaced by:
current_setting('pkgname.varname')::global_variables_type;
the variable type is extracted from the pacjkage definition. If
the variable is a constant or have a default value assigned at
declaration, ora2pg will create file global_variables.conf with
the definition to include in postgresql.conf file so that their
values will already be set at database connection. Note that the
value can always modified by the user so you can not have exactly
a constant.
- Fix migration assessment of view.
- Remove call to FROM SYS.DUAL, only FROM DUAL was replaced.
- Replace call to trim into btrim.
- Improve rewrite of DECODE when there is function call inside.
- Add function replace_right_outer_join() to rewrite Oracle (+)
right outer join.
- Improve view migration assessment.
- Create a FTS section in the configuration file dedicated to FTS
control.
- Add USE_UNACCENT and USE_LOWER_UNACCENT configuration directives
to use the unaccent extension with pg_trgm.
- Do not create FTS_INDEXES_* file when there is no Oracle Text
indexes.
- Update query test score when CONTAINS, SCORE, FUZZY, ABOUT, NEAR
keyword are found.
- Remove use to setweigth() on single column FTS based indexes.
Thanks to Adrien Nayrat for the report.
- Update documentation on FTS_INDEX_ONLY with full explanation on
the Ora2Pg transformation.
- Refactoring ora2pg to not requires any dependency other than the
Perl DBI module by default. All DBD drivers are now optionals and
ora2pg will expect to received an Oracle DDL file as input by
default. This makes easiest packaging or for any distribution that
can not build a package because of the DBD::Oracle requirement.
DBD::Oracle, DBD::MySQL and DBD::Pg are still required if you want
Ora2Pg to migrate your database "on-line" but they are optional
because Ora2Pg can also convert input DDL file, this is the
default now. Thanks to Gustavo Panizzo for the feature request and
the work on Debian packaging.
- Remove String::Random dependency in rpm spec file, it is no used
even if it was mentioned into a comment.
- Exclude internal Oracle Streams AQ JMS types from the export.
Thanks to Joanna Xu for the report.
- Fix some other spelling issues. Thanks to Gustavo Panizzo for the
patch.
- Fix some spelling errors. Thanks to Gustavo Panizzo for the patch.
- Revert patch 697f09d that was breaking encoding with input file
(-i). Thanks to Gary Evans for the report.
- Add two new configuration directive to control FTS settings,
FTS_INDEX_ONLY and FTS_CONFIG.
2016 11 17 - v17.6
This release adds several new features:
* Adds export of Oracle Text Indexes into FTS or pg_trgm
based indexes,
* Add export of indexes defined on materialized views
* Allow export of materialized views as foreign tables
when export type is FDW.
* Add replacement of trim() by btrim().
Two new configuration directives have been added:
* USE_INDEX_OPCLASS: when value is set to 1, this will force
Ora2Pg to export all indexes defined on varchar2() and char()
columns using *_pattern_ops operators. If you set it to a value
greater than 1 it will only change indexes on columns where the
character limit is greater or equal than this value.
* CONTEXT_AS_TRGM: when enabled it forces Ora2Pg to translate
Oracle Text indexes into PostgreSQL indexes using pg_trgm
extension. Default is to translate CONTEXT indexes into FTS
indexes and CTXCAT indexes using pg_trgm. Some time using
pg_trgm based indexes is enough.
There's also some fixes of issues reported by users, here is the
complete list of changes:
- Fixed non-use of custom temp_dir (-T). Thanks to Sebastian
Albert for the patch.
- Make export of FTS indexes from materialized view work as
for tables.
- Fix drop of indexes during export of data when DROP_INDEXES
is enabled.
- Remove double quote in function and procedure name from an input
file to avoid creating a file with double quote in its name.
- Fix export of unique index associated to a primary key.
- Move OPTION (key "yes") of FDW table before NOT NUL constraint
and default clause.
- Fix some encoding issue during data export into file.
- Rename FTS indexes prefix output file into FTS_INDEXES and
export CTXCAT Oracle indexes as GIN pg_trgm indexes instead of
FTS indexes.
- Add export of indexes of type CTXCAT as FTS indexes.
- Export triggers and update order for FTS indexes to separate file
prefixed with FTS_INDEXES.
- Exclude from export synonyms starting with a slash that correspond
to incomplete deleted synonyms. Thanks to Nouredine Mallem for the
report.
- Add export of indexes defined on materialized views. Thanks to
Nouredine Mallem for the report.
- Fix export of foreign key and FTS indexes when looking at dba_*
tables and multiple different schemas have the same fk or context
indexes definition. Thanks to Nouredine Mallemfor the patch.
- Fix export of CONTEXT or FULLTEXT Oracle index into PostgreSQL
FTS with trigger and initial update statement.
- Add configuration directive USE_INDEX_OPCLASS to force Ora2Pg to
export all indexes defined on varchar2() and char() columns using
those operators. A value greater than 1 will only change indexes
on columns where the character limit is greater or equal than
this value.
- Fix FDW export of mysql tables. Thanks to yafeishi for the report.
- Fix decode() rewrite. Thanks to Jean-Yves Julliot for the report.
- Fix regression introduced into the export of NUMBER to integer
like PG types.
- Show partition name in progress bar instead of main table name.
2016 10 20 - v17.5
This is a maintenance release to fix several issues reported by users.
There is also some major improvement and new feature.
There is a new configuration directive or change default behavior:
* Fix export of CLOBs and NCLOB that was truncated to 64 Kb.
* PG_BACKGROUND : when enabled autonomous transactions will be
built using Robert Haas extension pg_background instead of dblink.
Default is to still used dblink as pg_background is available
only for PostgreSQL >= 9.5.
* All Perl I/O now use the open pragma instead of calling method
binmode(). This will force input and output to utf8 using the
Perl pragma:
use open ':encoding(utf8)';
when configuration directive BINMODE is not set or NLS_LANG is
set to UTF8.
* Ora2Pg will now export empty lob as empty string instead of NULL
when the source column has NOT NULL constraint and that directive
EMPTY_LOB_NULL is not activated.
* Improve and fix progress bar especially when using JOBS/-J option.
* Allow LOAD action to apply all settings defined in the input file
on each opened session, this allow to use LOAD with export schema
enabled. If settings are not set in the input file encoding and
search_path is set from the ora2pg configuration settings.
* NUMBER(*,0) is now exported as numeric(38) as well as a NUMBER
with DATA_SCALE set to 0, no DATA_PRECISION and a DATA_LENGTH
of 22. The last correspond to Oracle type INTEGER or INT.
* Allow conversion of type with precision in DATA_TYPE directive.
For example it is possible to transform all NUMBER(12,2) only
into numeric(12,2) by escaping the comma. Example:
DATA_TYPE NUMBER(12\,2):numeric(12\,2);...
* Write data exported into temporary files (prefixed by tmp_) and
renamed them at end of the export to be able to detect incomplete
export and override it at next export.
* Add export of type created in package declaration.
* Export foreign key when the referenced table is not in the
same schema.
* Enabled by default PG_SUPPORTS_CHECKOPTION assuming that your Pg
destination database is at least a 9.4 version.
* Add 12 units to migration assessment report per table/column
conflicting with a reserved word in PostgreSQL to reflect the
need of code rewriting.
* Output a warning when a column has the same name than a system
column (xmin,xmax,ctid,etc.)
* Replace SYSDATE by a call to clock_timestamp() instead of a call
to LOCALTIMESTAMP in plpgsql code.
* Add missing documentation about DISABLE_PARTITION directive used
to not reproduce partitioning into PostgreSQL and only export
partitioned data into the main table.
* Show partition name in progress bar instead of main table name.
Here is the complete list of other changes:
- Fix broken parallel table export (-P option).
- Fix export of CLOBs and NCLOB that was truncated to 64Kb. Thanks
to Paul Mzko for the patch.
- Fix database handle in error report.
- Fix use of wrong database handle to set search_path. Thanks to
Paul Mzko for the report.
- Ora2pg doesn't export schema ForeignKey constraint when connected
as different DBA user. Thanks to Paul Mzko for the patch.
- Fix Perl I/O encoding using open pragma instead of calling method
binmode(). Thanks to Gary Evans for the report.
- Force input to utf8 using Perl pragma: use open ':encoding(utf8)';
when BINMODE is not set or NLS_LANG is UTF8.
- Force ora2pg to export empty lob as empty string instead of NULL
when the source column has a NOT NULL constraint and directive
EMPTY_LOB_NULL is not activated. Thanks to Valeriy for the report.
- Fix missing CASCADE attribute on fkey creation during data export
when DROP_FKEY was enabled. Thanks to ilya makarov for the report.
- Fix issue on converting NUMBER(*,0) to numeric, should be ported
to numeric(38). Thanks to ilya makarov for the report.
- Correct query for ForeignKey export from oracle. Thanks to ilya
makarov for the patch.
- Fix schema change in direct import of data to PostgreSQL.
- Change query for foreign key extraction to keep the column order.
Thanks to ilya makarov for the report.
- Write data exported into temporary files (prefixed by tmp_) and
renamed them at end of the export to be able to detect incomplete
export and override it at next export. Thanks to Paul Mkzo for
the feature request.
- Fix infinite loop in blob extraction when error ORA-25408 occurs
during ora_lob_read() call. Thanks to Paul Mzko for the report.
- Fix order of columns in foreign keys definition. Thanks to ilya
makarov for the report.
- Fix export of partition by range on multicolumn. Thanks to Rupesh
Admane for the report.
- Update reserved keywords list. Thanks to Nicolas Gollet for the
report.
- Add ON DELETE NO ACTION on foreign key creation (DROP_FKEY) to
obtain the same output than during constraints export.
- Fix export of foreign key that was duplicating the columns in both
part, local and foreign. Thanks to ilya makarov for the report.
- Remove call to to_char(datecol, format) when exporting date and
timestamp. This formating is no more needed as we are now forcing
NLS_DATE_FORMAT and NLS_TIMESTAMP_FORMAT when opening a connection
to Oracle using:
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS
and
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS
This may result on some speed improvment during data export.
- Fix parsing of packages from input file.
- Add export of type created in package declaration. Thanks to
dezdechado for the report.
- Fix converting of procedures with out arguments. Thanks to
dezdechado for the report.
- Update documentation about project management.
- Fix replacement of = NULL by IS NULL in update statement.
Thanks to dezdechado for the report.
- Fix parsing of trigger from file that was broken and new line
removed. Thanks to dezdechado for the report.
- Fix erasing of quotes from text in triggers. Thanks to dezdechado
for the report.
- Fix "return new" on trigger function when there is exception.
Thanks to dezdechado for the report and solution.
- Fix conversion of INTEGER and INT into numeric(38) instead of
numeric without precision. Thanks to dezdechado for the report.
- Fix export of foreign key when the referenced table is not in the
same schema. Thanks to Juju for the report.
- Fix ddl create schema when EXPORT_SCHEMA and CREATE_SCHEMA are
enabled but no schema is specified.
- Fix export of NCHAR that was converted as char but was loosing its
length definition. Thanks to lgerlandsen for the report.
- Fix parsing of views using WITH statements. Thank to dezdechado
for the report.
- Fix case that breaks views/triggers definition when a semicolon
is encountered in a string value when reading definition from
file. Thanks to dezdechado for the report.
- Fix included/excluded of sequences when using ALLOW/EXCLUDE
directives. Thanks to Roman Sindelar for the report.
- prepare options modified with some escaping improvements. Thanks
to ioxgrey for the patch.
- It seems that for a NUMBER with a DATA_SCALE set to 0, no
DATA_PRECISION and a DATA_LENGTH of 22 in ALL_TAB_COLUMNS, Oracle
use a NUMBER(38) instead. This correspond to Oracle type INTEGER
or INT. I don't really understand the reason of this behavior,
why not just using a data length of 38? ALL_TAB_COLUMNS and Ora2Pg
reports a data length of 22, now Ora2Pg will report NUMBER(38) like
the resulting type of the DESC command.
The following Oracle table:
CREATE TABLE TEST_TABLE ( FIELD_1 INTEGER, FIELD_2 NUMBER );
will be exported as follow by Ora2Pg:
[1] TABLE TEST_TABLE (owner: HR, 0 rows)
FIELD_1 : NUMBER(38) => numeric
FIELD_2 : NUMBER(22) => bigint
Oracle data type INTEGER and INT will be exported as numeric by
default instead of an integer.
- Fix parsing of function/procedure from file with comments after
BEGIN statement.
- Remove DEFERRABLE INITIALLY DEFERRED from CHECK constraints when
parsed from file. Thanks to Felipe Lavoura for the report.
- Fix double parenthesis in index definition when parsing index
creation from file. Thanks to Felipe Lavoura for the report.
- Fix parsing of COMMENT from file.
- Fix undetected native Oracle type bug. Thanks to kvnema for the
report.
- Fix unwanted text formatting with bind value in INSERT action
with direct import to PostgreSQL. Thanks to Oleg for the report.
- Fix inversion of UPDATE_RULE and DELETE_RULE in foreign key
creation for MySQL export. Thanks to Sebastian Albert for the
report.
- Update documentation about DEFER_FKEY and DROP_FKEY to report
the new behavior.
- Remove call to SET CONSTRAINTS ALL DEFERRED with direct import.
- Fix use of NULL value in bind parameter that should be undefined
(INSERT export mode only). Thanks to Oleg barabaka for the report.
- Remove replacement of direct call to functions with PERFORM, there
is too much false positive. Thanks to dezdechado for the reports.
- Fix a typo in SYSDATE replacement. Thank to dezdechado for report.
- Remove rewrite of concatenation in RAISE EXCEPTION. Thanks to
dezdechado for the report.
- Fix replacement of raise_application_error() when first argument
is a variable. Thanks to dezdechado for the report.
- Fix wrong insertion of PERFORM before some function calls. Thanks
to dezdechado for the report.
- Replace SYSDATE by a call to clock_timestamp() instead of call to
LOCALTIMESTAMP in plpgsql code. Thanks to aleksaan for the report.
- Allow use of comma for object name list separator instead of space
as workaround on Window OS.
- Fix documentation about MODIFY_TYPE. Thanks to Nicolas Gollet for
the report.
- Add missing documentation about DISABLE_PARTITION directive used
to not reproduce partitioning into PostgreSQL and only export
partitioned data into the main table. Thanks to Nicolas Gollet
for the report.
- Add information about how to export LONG RAW data type. They need
to be exported as BLOB before into Oracle to be exported as BYTEA.
- Fix case where select was wrongly replaced by perform in INSERT
INTO with SELECT statement. Thanks to dezdechado for the report.
- Fix links to ora2pg presentation. Thanks to Daniel Lenski for the
patch.
- Fix input parameters after one with a default value must also have
defaults. Thanks to v.agapov fot the patch.
- Fix debug mode that was interromping the last running table dump.
Thanks to calbiston for the report.
2016 04 21 - v17.4
Errata in first release attempt.
- Fix previous patch that does not handle blob case but just clob
- Forgot to change back the query when EMPTY_LOB_NULL is not activated.
- Put parenthesis around AT TIME ZONE expression
This is a maintenance release to fix several issues reported by users.
There is also some major data export speed improvement thanks to the
work of PostgreSQL Pro and a new RPM spec file provided by Devrim
Gündüz to be able to build RPM package for Ora2Pg.
There is a new configuration directive:
- EMPTY_LOB_NULL: when enabled force empty_clob() and empty_blob()
to be exported as NULL instead as empty string.
Here is the complete list of other changes:
- Add EMPTY_LOB_NULL directive to force empty_clob() and empty_blob()
to be exported as NULL instead as empty string. This might improve
data export speed if you have lot of empty lob. Thanks to Alex
Ignatov for the report.
- Fix import_all.sh script to import grant and tablespace separately
as postgres user and just after indexes and constraints creation.
- Add parsing of tablespace from "alter table ... add constraint"
with DDL input file. Thanks to Felipe Lavoura.
- Remove --single-transaction in import_all.sh script with TABLESPACE
import. Thanks to Guillaume Lelarge for the report.
- Fix Makefile.PL to used with latest spec file from Devrim Gündüz
and following the advice of calbiston.
- Update spec file to v17.6 and latest change to Makefile.PL
- Replace ora2pg.spec by postgressql.org spec file by Devrim Gunduz.
- Generate man page to avoids rpmbuild error.
- Fix Windows install. Thanks to Lorena Figueredo for the report.
- Remove "deferrability" call for mysql foreign keys. Thanks to
Jean-Eric Cuendet for the report.
- Fix issue in restoring foreign key for mysql data export. Thanks
to Jean-Eric Cuendet for the report.
- Remove connection test to PostgreSQL instance as postgres or any
superuser in import_all.sh
- Fix creation of configuration directory.
- Fix Makefile to dissociate CONFDIR and DOCDIR from PREFIX or
DESTDIR. Thanks to Stephane Schildknecht for the report.
- Fix date_trunc+add_month replacement issue. Thanks to Lorena
Figueredo for the report.
- Do not replace configuration directory in scripts/ora2pg if this
is a RPM build. Thanks to calbiston for the report.
- Return empty bytea when a LOB is empty and not NULL.
- Regular expressions and conditions checks improvement in method
format_data_type() to make it a bit faster on huge tables. Thanks
to Svetlana Shorina for the patch.
- Fix INSERT using on the fly data import with boolean values.
Thanks to jecuendet for the report.
- Allow MySQL data type to be converted into boolean. Thanks to
jecuendet for the report.
- Fix export of BIT mysql data type into bit bit varying. Thanks
to jecuendet for the report.
- Fix call to escape_copy/escape_insert function call.
2016 03 26 - v17.3
This release fix two regressions introduced in latest release.
* Fix major bug in data export. Thanks to Frederic Guiet for the report.
* Fix another regression with character data that was not escaped. Thanks
to Frederic Guiet for the report.
2016 03 24 - v17.2
This is a maintenance release to fix several issues reported in new
LOB extraction method. There is also some feature improvement:
* Allow NUMBER with precision to be replaced as boolean.
* Allow full relocation of Ora2Pg installation using for
example: perl Makefile.PL DESTDIR=/opt/ora2pg
Here is the complete list of other changes:
- Allow NUMBER with precision to be replaced as boolean. Thanks
to Silvan Auer for the report.
- Force empty LOB to be exported as NULL when NO_LOB_LOCATOR is
activated to have the same behavior.
- Fix case where a LOB is NULL and ora2pg reports error :
DBD::Oracle::db::ora_lob_read: locator is not of type OCILobLocatorPtr
LOB initialised with EMPTY_CLOB() are also exported as NULL
instead of \\x
- Fix replacement with PERFORM after MINUS. Thanks to Stephane
Tachoires for the report.
- Comment DBMS_OUTPUT.ENABLE calls. Thanks to Stephane Tachoire for
the report.
- Fix wrong replacement of SELECT by PERFORM after EXCEPT. Thanks
to Stephane Tachoire for the report.
- Apply ORACLE_COPIES automatic predicate on custom queries set with
REPLACE_QUERY if possible. Thanks to pawelbs for the report.
- Fix install of ora2pg.conf file in /etc/ instead of /etc/ora2pg/.
Thanks to pawelbs for the report.
- Add debug information before searching for custom type.
- Attempt to fix error "ORA-01002: fetch out of sequence" when exporting
data from a table with user defined types and ORACLE_COPIES. Thanks to
pawelbs and Alex Ignatov fir the report.
- Fix replacement of path to configuration file in scripts/ora2pg
- Remove report sample from documentation about migration assessment
report and replace it with a href link. Fix comment about export of
domain index.
- Always prefix table name with schema in Oracle row count, to prevent
failure when the schema is not the connexion default.
- Add pattern TOAD_PLAN_.* to the internal table exclusion list.
- Fix modification of database owner search_path in import_all.sh auto
generated script. Thanks to Stephane Tachoire for the report.
2016 02 29 - v17.1
This is a maintenance release to fix several issues reported in new
TEST action. There is also some feature improvement:
* Add OPTIONS (key 'true') on table FDW export when a column is
detected as a primary key.
* Add DELETE configuration directive that allow a similar feature
than the WHERE clause to replace TRUNCATE call by a "DELETE FROM
table WHERE condition". This feature can be useful with regular
"updates". Thanks to Sebastien Albert for the feature request.
Here is the complete list of other changes:
- Fix the counter of user defined types and sequences in TEST action
- Fix COPY import of data from column with user defined type with
NULL value.
- Fix DBD::Pg segmentation fault with direct INSERT import from
column with user defined type.
- Fix TEST action with multiple PG_SCHEMA export. Thanks to Michael
Vitale for the report.
- Fix documentation about PG_SCHEMA
2016 02 22 - v17.0
This new major release adds a new action type TEST to obtain a count
of all objects at both sides, Oracle and PostgreSQL, to perform a
diff between the two database and verify that everything have been
well imported. It also fixes several issues reported by users.
A new ora2pg command line option have been added to ora2pg script:
* Add --count_rows command line option to perform a real row count
on both side, Oracle and PostgreSQL, in TEST report.
Here is the complete list of changes and bugfixes:
- Prefix direct call to function with a call to PERFORM. Thanks to
Michael Vitale for the feature request.
- Fix revoke call on function with multiline parameters declaration.
- Fix auto setting of internal schema variable with mysql.
- Define ORACLE_HOME with the corresponding environment variable in
generic configuration when available and --init_project is used.
Thanks to Stephane Tachoires for the report.
- Fix documentation about exporting view as table.
- Remove some obsolete code and display information when a view is
exported as table.
- Fix empty LOB data export with Oracle Lob locator (NO_LOB_LOCATOR
set to 0).
- Fix data export of partitions with single process mode and when
FILE_PER_TABLE is enabled.
- Fix export of RAW data type.
- Fix missing $ to call to self variable. Thanks to NTLIS and Sirko
for the report.
- Force FKey to be initially immediate when deferred is not set.
Thanks to Stephane Tachoire for the report.
- Fix count of check constraint when a schema is forced.
- Allow TEST action on mysql database too with some improvements
and bug fix on the feature.
- Fix index column renaming in mysql export.
- Fix dblink extraction query when an exclusion is set.
- Fix sequence name auto generation for mysql serial number.
- Add --count_rows command line option to make optional the real
row count in TEST report. This is useful when you have lot of
data and do not want to loose time in call to count(*).
- Update documentation about the TEST action and usage, see
chapter "Test the migration".
- Apply schema context on PostgreSQL side with TEST action.
- Add TEST action type to ask Ora2Pg to count rows and all objects
at both sides, Oracle and PostgreSQL, to verify that everything
have been well imported.
- Fix missing export of foreign keys on multiple columns, ex:
ALTER TABLE products ADD CONSTRAINT fk_supplier_comp
FOREIGN KEY (supplier_id,supplier_name)
REFERENCES supplier(supplier_id,supplier_name)...
- Fix import of BLOB data using INSERT statements into the bytea.
Thanks to rballer for the patch.
- Fix missing export of FK when no schema is provided.
2016 01 13 - v16.2
This release fixes several issues, is more accurates on migration
assessment report and adds some new ora2pg command line options:
* Add --pg_dsn, --pg_user and --pg_pwd to be able to set the
connection to import directly into PostgreSQL at command line.
* Add -f option to script import_all.sh to force to not check
user/database existing and skip their creation.
Potential backward compatibility issues:
* PG_SUPPORTS_CHECKOPTION is now enabled by default, you may want
to migrate to PostgreSQL 9.4 or above.
* Remove modification of CLIENT_ENCODING in generic configuration
file with --init_project, use the default instead.
* Remove modification of directive NLS_LANG to AMERICAN_AMERICA.UTF8
in generic configuration file with --init_project, use the default
instead.
Here is the complete list of other changes:
- Adjust DBMS_OUTPUT calls to the migration assessment count.
- Fix migration assessment count of call to cursor%ISOPEN and
cursor%ROWCOUNT.
- Replace zero date also with prepared statement with online
PostgreSQL import and INSERT action. Thanks to Sebastian Albert
for the report.
- Remove REFERENCING clause in conditional triggers. Thanks to Raqua
for the report.
- Fix position of TG_OP condition when an exception is defined.
Thanks to Raqua for the report.
- Fix wrong replacement of SELECT with PERFORM when a comment was
found between an open parenthesis and the select statement.
Thanks to Raqua for the report.
- Fix procedure return type with OUT and INOUT parameter. Thanks to
Raqua for the report.
- Fix rewrite of triggers with referencing clause. Thanks to Raqua
for the report.
- Fix default number of --human_days_limit in usage.
- Fix replacement of placeholder %TEXTVALUE-d% to hide text string
in query during function call rewrite. Thanks to Lorena Figueredo
for the report.
- Fix progress bar when a WHERE clause is used to limit the number
of row to export.
- Fix error "DBD::Pg::db do failed: SSL error: decryption failed or
bad record mac" with pararellel table export (-P) and direct
import to PostgreSQL via a ssl connection. Thanks to pbe-axelor
for the report.
- Fix missing index name in indexes creation. Thanks to Raqua for
the report.
- Fix pg DSN in import_all.sh autogenerated script.
- Fix extraction of trigger. When the name of a column or something
contained INSERTING, DELETING or UPDATING was converted to TG_OP
= 'INSERT' or corresponding event. Thanks to Stanis¿aw Jankowski
for the patch.
- Fix multiple use of same column in check constraint and indexes
of partitions when there was several schema with the same objects.
- Fix default value for HUMAN_DAY_LIMIT to 5 when it is not defined
in ora2pg.conf.
- Fix double quote on column name in COPY export of partition tables
Thanks to Chris Brick for the report.
- Prevent case with several time same column in multicolumns unique
constraints. Fix typo in previous patch.
- Fix double quoted name with auto incremented sequence exported as
serial.
- Fix syntax error with MySQL data export with a WHERE clause using
LIMIT.
2015 11 30 - v16.1
This release fixes several issues and adds some very useful features:
* Generate automatically a new import_all.sh shell script when using option
--init_project to help automate all import into PostgreSQL.
See sh import_all.sh -? for more information.
* Export Oracle bitmap index as PostgreSQL btree_gin index. This require the
btree_gin extension and PostgreSQL >= 9.4. This is the default.
* Auto set DEFINED_PK to the first column of a table that have a unique key
defined that is a NUMBER. This allow data of any table with a numeric
unique key to be extracted using multiple connexions to Oracle using -J
option. Tables with no numeric unique key will be exported with a single
process.
* Improve BLOB export speed by using hex encoding instead of escape. This
might speed up be BLOB export by 10.
* Allow use of LOB locator to retrieve BLOB and CLOB data to prevent having
to set LONGREADLEN. Now LONGREADLEN is set to 8KB. Old behavior using
LONGREADLEN can still be enabled by setting NO_LOB_LOCATOR to 0, given
for backward compatibility. Default is to use LOB locator.
* Ora2Pg will also auto detect table with BLOB and automatically decrease
DATA_LIMIT to a value lower or equal to 1000. This is to prevent OOM.
* Improving indexes and constraints creation speed by using the LOAD action
and a file containing SQL orders to perform. It is possible to dispatch
those orders over multiple PostgreSQL connections. To be able to use this
feature, PG_DSN, PG_USER and PG_PWD must be set. Then:
ora2pg -t LOAD -c config/ora2pg.conf -i schema/tables/INDEXES_table.sql -j 4
will dispatch indexes creation over 4 simultaneous PostgreSQL connections.
This will considerably accelerate this part of the migration process with
huge data size.
* Domain indexes are now exported as b-tree but commented to let you know
where possible FTS are required.
* Add number of refresh ON COMMIT materialized view in detailed report.
* Allow redefinition of numeric type, ex: NUMBER(3)::bigint to fix wrong
original definition in Oracle.
* Allow export of all schemas from an Oracle Instance when SCHEMA directive
is empty and EXPORT_SCHEMA is enabled. All exported objects will be
prefixed with the name of their original Oracle schema or search_path will
be set to that schema name. Thanks to Magnus Hagander for the feature
request.
* Allow use of COPY FREEZE to export data when COPY_FREEZE is enabled. This
will only works with export to file and when -J or ORACLE_COPIES is not
set or default to 1. It can be used with direct import into PostgreSQL
under the same condition but -j or JOBS must be unset or default to 1.
Thanks to Magnus Hagander for the feature request.
Some new configuration directives:
* BITMAP_AS_GIN: enable it to use btree_gin extension to create bitmap
like index with pg >= 9.4. You will need to create the extension by
yourself: "create extension btree_gin;". Default is to create GIN index,
when disabled, a btree index will be created.
* NO_LOB_LOCATOR: to disable use of LOB locator and extract BLOB "inline"
using a less or more high value in LONGREADLEN.
* BLOB_LIMIT: to force the value of DATA_LIMIT for tables with BLOB. Default
is to automatically set this limit using the following code:
BLOB_LIMIT=DATA_LIMIT; while (BLOB_LIMIT > 1000) BLOB_LIMIT /= 10
* COPY_FREEZE: use it to use COPY FREEZE instead of simple COPY to speedup
import into PostgreSQL.
Here is the complete list of other changes:
- Limite package function name rewrite to call with parenthesis after the
function name to avoid rewriting names of other objects.
- Fix extra replacement of function name with package prefix. On some
condition it was done multiple time.
- Set REPLACE_ZERO_DATE to -INFINITY in generic configuration when --mysql
is enabled.
- Fix extraction of partition with MySQL that was not limited to a single
database.
- Do some replacement on ORACLE_DNS and SCHEMA into generic configuration
when --mysql is used for better understanding.
- Add call to round() on -J parallelization when the auto detected column
is a numeric with scale.
- Add COMMIT to the difficulties migration assessment keywords as it need
context analyzing.
- Add call to cursor's %ROWCOUNT, %ISOPEN and %NOTFOUND to difficulties
migration assessment keywords.
- Replace call to CURSOR%ROWTYPE by RECORD. Thanks to Marc Cousin for the
report.
- Fix ALTER FUNCTION ... OWNER TO ... and REVOKE statement where functions
parameters were missing.
- Add Get_Env to the Oracle functions list for migration assessment.
- Disable variable NO_LOB_LOCATOR and set LONGREADLEN to 8192 bytes to use
LOB locators to extract BLOB in generic configuration file.
- Fix call method "disconnect" on unblessed reference at line 9998. Thanks
to Stephane Tachoires for the report.
- Exclude from export objects name matching /.*\$JAVA\$.*/ and /^PROF\$.*/.
- Fix migration assessment report when created during the package export.
- Force writing Oracle package body in separate files when FILE_PER_FUNCTION
is enabled and PLSQL_PGSQL disable to obtain package source code.
- Fix case where sequence max value is lower than start value, in this case,
set max value = start value.
- Fix missing newline after each package file to import in global package.sql
file when FILE_PER_FUNCTION is enabled.
- Remove export of user PUBLIC in GRANT export.
- Set DISABLE_TRIGGERS to 1 in generic configuration file auto generated when
ora2pg option --init_project is used.
- Remove call to quote_reserved_words() with index column when it we detect
a function based index, too much false positive are rewritten with SQL code
like CASE...WHEN.
- Update export_schema.sh to remove .sql files when there is not such object
leaving export directory empty.
- Prevent creating TBSP_INDEXES_tablespace.sql when no tablespaces are found
- Update documentation on WHERE clause on how to limit the number of tuples
exported for Oracle and MySQL to test data import.
- Fix unlisted spatial indexes in assessment report.
- Fix double quote on index name with index renaming and reserved keyword.
- Do not try to export tablespaces, privileges and audited queries as non DBA
user when USER_GRANT is enabled.
- Remove carriage return from list file.
- Force SCHEMA to database name with MySQL migration.
- Fix missing declaration of _extract_sequence_info(). Thank to Yannick DEVOS
for the report.
- Add documentation about COPY_FREEZE directive and add a note about export
of all schema.
- Remove systematic schema name appended to table name on KETTLE export, this
must only be true when EXPORT_SCHEMA is enabled.
- Fix TO_NUMBER() wrong replacement when a function is called as a parameter.
- Fix non converted DECODE() when they was called in an XMLELEMENT function.
- Suppress MDSYS.SDO_* from MDSYS call in migration assessment cost.
- Remove use of DBMS_STANDARD called with raise_application_error function
- Fix STRING type replacement
- Recreate README as a text file, not a man page.
- Reformat changelog to 80 characters.
- Add -t | --test command line option to ora2pg_scanner to be able to test
all connections defined into the CVS list file.
2015 10 15 - v16.0
This major release improve PL/SQL code replacement, fixes several bugs and
adds some major new features:
* Full migration of MySQL database, it just work like with Oracle database.
* Full migration assessment report for MySQL database.
* New script, ora2pg_scanner, to perform a migration assessment of all
Oracle and MySQL instances on a network.
* Add technical difficulty level in migration assessment.
* Allow migration assessment on client queries extracted from AUDIT_TRAIL
(oracle) or general_log table (mysql).
* Ora2Pg has a "made in one night" brand new Web site (still need some work).
See http://ora2pg.darold.net/
Example of technical difficulty level assessment output for the sakila database
with some more difficulties:
Total 83.90 cost migration units means approximatively 1 man-day(s).
Migration level: B-5
Here are the explanation of the migration level code:
Migration levels:
A - Migration that might be run automatically
B - Migration with code rewrite and a human-days cost up to 10 days
C - Migration with code rewrite and a human-days cost above 10 days
Technical levels:
1 = trivial: no stored functions and no triggers
2 = easy: no stored functions but with triggers, no manual rewriting
3 = simple: stored functions and/or triggers, no manual rewriting
4 = manual: no stored functions but with triggers or views with code
rewriting
5 = difficult: stored functions and/or triggers with code rewriting
This is to help you to find the database that can be migrated first with small
efforts (A and B) and those who need to conduct a full migration project (C).
This release has also some new useful features:
* Export type SHOW_TABLE now shows additional information about table type
(FOREIGN, EXTERNAL or PARTITIONED with the number of partition).
* Connection's user and password can be passed through environment variables
ORA2PG_USER and ORA2PG_PASSWD to avoid setting them at ora2pg command line.
* Improve PL/SQL replacement on ADD_MONTH(), ADD_YEAR(), TRUNC(), INSTR() and
remove the replacement limitation on DECODE().
* Add detection of migration difficulties in views, was previously reserved
to functions, procedures, packages and triggers.
* Replace values in auto generated configuration file from command line
options -s, -n, -u and -p when --init_project is used.
* Adjust lot of scores following new functionalities in Ora2Pg, ex: dblink or
synomyms are now easy to migrate.
There is some new command line options to ora2pg script:
* -m | --mysql : to be used with --init_project and -i option to inform
ora2pg that we work with a MySQL format
* -T | --temp_dir : option to be able to set a distinct temporary directory
to run ora2pg in parallel.
* --audit_user : option to set the user used in audit filter and enable
migration assessment report on queries from AUDIT_TRAIL (oracle) or
general_log table (mysql).
* --dump_as_sheet and --print_header options to be able to compute a CSV
file with all migration assessment from a list of oracle database.