-
Notifications
You must be signed in to change notification settings - Fork 2
/
ChangeLog
1874 lines (1109 loc) · 56.9 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
2021-02-01 Berend de Boer <[email protected]>
* Postgresql: -iso8601date was enabled by default, but should be false by default.
2020-11-04 Berend de Boer <[email protected]>
* Postgresql: using the -iso8601date would emit all extended
attributes for "get t1" when no attributes were
specified. But extended attributes should not be included by default.
2020-09-12 Berend de Boer <[email protected]>
* Release 5.6.
* Postgresql: attempt to guess column output for user function
called "coalesce" better. Probably we need to support coalesce in
Xplain, just more shorthand than writing if statements.
* Postgresql: renamed column name was not used as name in the
function type.
2020-08-15 Berend de Boer <[email protected]>
* extend: an extend on a type that had a self-reference, and that
referenced itself via the per property generated incorrect SQL.
* Postgresql: incorrect output for inserts when used outside
stored procedures.
2020-05-29 Berend de Boer <[email protected]>
* Release 5.5.
* Postgresql: fix to avoid generating incorrect SQL created
different function types, so making the generated code
incompatible with earlier releases. Implemented a better fix.
2020-05-28 Berend de Boer <[email protected]>
* Release 5.4.
* xplain2sql.xml: mutation statements inside if statement were not
written to XML output.
* Release 5.3. See NEWS.
2020-05-27 Berend de Boer <[email protected]>
* Postgresql: Xplain now allows you to write if statements in a
procedure. This reduces the amount of SQL code that otherwise
would have to be written in upsert style procedures, and that
makes the code more readable, as ther is now only Xplain to deal with.
2020-02-08 Berend de Boer <[email protected]>
* Release 5.2. See NEWS.
2020-02-04 Berend de Boer <[email protected]>
* Release 5.1.
2020-01-22 Berend de Boer <[email protected]>
* extend max: the default when there are no rows is now the
minimum possible according to the domain restriction. For example
if your domain and domain restrictions are "(I4) (1..*)" it will
now return 1 as the minimum, and no longer "-9999".
* extend min: the default when there are no rows is now the
minimum possible according to the domain restriction. For example
if your domain and domain restrictions are "(I4) (1..4)" it will
now return 4 as the maximum, and no longer "9999".
* xplain2sql.xml: add the minInclusive and maxInclusive
attributes to represent the corresponding XML Schema data type
attributes.
2020-01-20 Berend de Boer <[email protected]>
* Validate length of A enumerations.
* Postgresql 9.5: indexes are now created with the ' if not
exists' clause.
2020-01-17 Berend de Boer <[email protected]>
* xplain2sql.xml: procedure parameters can now take the
*optional* keyword. This does do nothing for the output
(parameters are null at least in PostgreSQL), but the output now
has the indication this intended to be an optional parameter.
2020-01-09 Berend de Boer <[email protected]>
* xplainsql.xml: attribute returns="int4" and such on the
<storedProcedure> element if the function returns a scalar value
instead of a row set.
* xplain2slq.xml: attribute value="true" on the <select> if we
are selecting a single value.
* xplain2sql.xml: attribute instance="true" on the <select> if we
are selecting at maximum a single instance.
2020-01-03 Berend de Boer <[email protected]>
* xplain2sql.xml: add <enum> tags inside a column if the base type
has a text enumeration.
* xplain2sql.xml: emits <insert>, <update> and <delete> tags
inside a <storedProcedure> if the procedure executes any of these
statements. This allows you to distinguish between procedures that
query or mutate data.
* Postgresql 9.5: Added option -iso8601date to force all dates to
be emitted in ISO 8601 format. This date format is compatible with
what AppSync expects. No need to add custom SQL functions to
output to get the right date, which also has the problem that the
date type disappears and becomes a generic string. Now everything
is still seen as a date, and returned properly.
2020-01-02 Berend de Boer <[email protected]>
* Postgresql 9.5: created function output time now has a better
name if you used the advanced feature of calling a custom SQL
function. For example: "select $`to_json'(created) from mytable"
will now emit the nicer "created" field for this type instead of
"to_json". Previously you had to use: "select $`to_json'(created)
as created from mytable".
* Postgresql 9.5: now emits "create table if not exists", more
compatible with how functions are created, and makes it easier to
rerun a script if the tables themselves have not changd.
2020-01-01 Berend de Boer <[email protected]>
* Added -version option to print the current version.
2018-01-09 Berend de Boer <[email protected]>
* Release 5.0.
* Microsoft SQL: incorrect code for an existential extend.
* SQLite: incorrect code generated when an expression instead of
constant was used as default value for an attribute.
* DB2: incorrect code generated when updating an attribute from an extend.
* Add option -noextendview so updateable extends are generated
outside a stored procedure.
* xplain2sql compiles with gec again.
2017-09-04 Berend de Boer <[email protected]>
* Microsoft SQL: Add support for SQL Server 2016/Azure SQL
Database: generate drop table if exist and drop procedure if exist.
2017-08-29 Berend de Boer <[email protected]>
* Microsoft SQL: doesn't like it when a value got redeclared in a
stored procedure, which could happen if we think the type has
changed. But in a stored procedure we should never redeclare a
value.
2017-05-09 Berend de Boer <[email protected]>
* Postgresql 9.5: picture data type is now a bytea.
2017-05-08 Berend de Boer <[email protected]>
* Postgresql 9.5: The real() function maps to the numeric data
type with no specified limits on the before/after precision. This
more closely maps Xplain expected behaviour, and avoids casting
issues.
* If an extend has an explicit representation, the resulting
column is cast to that representation, instead of relying upon
what the particular SQL implementation decides the resulting type
will be.
* Postgresql 7.3 and up: add support for Xplain's newdate function.
* Postgresql 9.5: experiment: let procedure that returns just a
value, return that as a value, no longer as a set. This may become
an option, as it is quite a break from previous behaviour, and
makes code inconsistent across various databases.
* value expression in procedures: values could not freely use
parameters in expressions.
* constant value assignment: now properly rejects a value being
used in an expression. Also a constant cannot be given a new value.
2017-05-06 Berend de Boer <[email protected]>
* PostgreSQL 9.5: support named parameters.
2017-02-10 Berend de Boer <[email protected]>
* Fix error where we wrongly complained value was set again, but not when a base or type was redefined.
2017-02-09 Berend de Boer <[email protected]>
* PostgreSQL: generated stored procedure was incorrect when it
contained a get using division on an integer property: the
generated type should have been a float, but was still an integer.
2017-02-08 Berend de Boer <[email protected]>
* Didn't determine properly when a property wasn't part of a type,
leading subsequent crash.
2016-05-27 Berend de Boer <[email protected]>
* Updated all Eiffel code to latest standard.
2016-04-23 Berend de Boer <[email protected]>
* Beta release 4.1.3.
2014-08-14 Berend de Boer <[email protected]>
* Fixed bug: view was always created inside stored procedure, but
should have stayed a temporary table.
2014-06-07 Berend de Boer <[email protected]>
* Extend: now generates view instead of (temporary) table when not used inside a procedure.
2011-12-19 Berend de Boer <[email protected]>
* Beta release 4.1.0.
2010-06-14 Berend de Boer <[email protected]>
* Assertion output was still incorrect with new extend
optimisation. Should use a left join when retrieving attributes.
2010-05-11 Berend de Boer <[email protected]>
* Extend output was incorrect with new extend optimisation when
extend contained a where clause with or.
* Assertion code was incorrect with new extend optimsation.
2010-01-30 Berend de Boer <[email protected]>
* Extend with logical expression code optimisation.
2010-01-29 Berend de Boer <[email protected]>
* Extend with any/nil function code optimisation in
case the extended attribute is not update in a procedure.
2009-12-04 Berend de Boer <[email protected]>
* MySQL 5: proper support for some function as limit can be used in
subqueries as well.
2009-12-01 Berend de Boer <[email protected]>
* PostgreSQL: minimum value for a date was set to 0000-01-01, but
that date is rejected with version 8.4. So minimum value is now
0001-01-01.
2009-06-15 Berend de Boer <[email protected]>
* extend with any/nil now emits a '1' instead of a column name in
the subselect. Works much better with MySQL's 'optimiser'.
2009-05-29 Berend de Boer <[email protected]>
* string(): when string() cast function was used in a string
concatenation, SQL output was incorrect.
2009-05-19 Berend de Boer <[email protected]>
* Assertion in SQL select was done with an inner join instead of a
left outer join. Inner join is incorrect when the assertion is a
some function as there might be no data.
2009-04-20 Berend de Boer <[email protected]>
* Supported purge of assertions.
2009-02-11 Berend de Boer <[email protected]>
* Optimized output for any/nil: they're now done with a left outer
join, instead of a subselect. This gives a huge performance boost
under MySQL.
2008-12-04 Berend de Boer <[email protected]>
* Extend optimization: if extend not updated, generate optimized
output. Does wonders for MySQL 5. Also fixed bug where extra
temporary table step was inserted unnecessarily.
2008-11-28 Berend de Boer <[email protected]>
* Didn't generate a proper column name for get max/get min.
2008-11-06 Berend de Boer <[email protected]>
* MySQL 5: now drops procedures before creating them, so running
the script against an existing database is easier.
2008-11-03 Berend de Boer <[email protected]>
* MySQL 5: now drops views create for asserts, so running the
script against an existing database is easier.
2008-10-22 Berend de Boer <[email protected]>
* value statement didn't accept systemdate or loginname.
2008-10-16 Berend de Boer <[email protected]>
* MySQL: it seems the dual table doesn't really behave like a
table with a single row. The output now generates a dual itself
and uses that.
2008-10-10 Berend de Boer <[email protected]>
* MySQL: extend with where claused caused a self select against a
temporary table which MySQL doesn't support.
2008-08-22 Berend de Boer <[email protected]>
* Value inside stored procedure would not get proper type if it
was initialised by assigning a parameter.
* When a value was purged, it was still listed as being in use,
so when reusing it again or using it inside stored procedures it
was not properly redeclared.
2008-08-19 Berend de Boer <[email protected]>
* release 4.0.1 of xplain2sql.
* xplain2sql identified itself as 3.9.0-rc2.
* Fixed parser bug in value definition: the expression inside an
integer/datef/real/string cast could only be a constant. But any
expression should be allowed actually.
2008-08-19 Berend de Boer <[email protected]>
* release 4.0.0.
2008-08-01 Berend de Boer <[email protected]>
* XML output: emit unique="true" when an attribute has the unique
property.
2008-07-24 Berend de Boer <[email protected]>
* release 3.9.0 (rc1 for release 4.0):
* DB2: set correct string concatenation operator to ||.
2008-07-17 Berend de Boer <[email protected]>
* SQLite 3: set correct string concatenation operator
to ||.
* InterBase/FireBird: set correct string concatenation operator
to ||.
2008-07-08 Berend de Boer <[email protected]>
* SQL code generation: output for update with where statement that
had an or in it, could have updated all rows in table as
parenthesis were missing. Example:
update t "1" its a1 = "test" where a2 = "0" or a3 = "0".
2008-07-07 Berend de Boer <[email protected]>
* Firebird 2.1: fixed another situation where output
failed. Basically have to sprinle commits now and then.
2008-06-28 Berend de Boer <[email protected]>
* FireBird 2.1 now uses coalesce.
2008-06-26 Berend de Boer <[email protected]>
* Beta release 3.1.2.
* Added support for FireBird 2.1. Output works, and support for
global tempory table added. Also emits create sequence instead of
create generator.
* Changed license to MIT.
2008-06-03 Berend de Boer <[email protected]>
* PostgreSQL 8.2: start with PostgrSQL 8.2 specific output. One
change is that the drop type now adds if exists to cut down on the
number of errors.
2008-05-29 Berend de Boer <[email protected]>
* SQL code generation: new left outer join SQL was incorrect when
a count extend had a where clause that used extends or attributes
in other tables.
* SQL code generation: didn't emit parenthesises for an extend of
the form:
extend t with e = (not (b1 or b2)).
This was translated to SQL as if the user had written:
extend t with e = (not b1 or b2).
Which obviously is very different.
2008-04-08 Berend de Boer <[email protected]>
* PostgreSQL: Date type is now emitted as timestamp with time
zone. This will be done for all other dialects as far as they
support this as it allows a database where users in various time
zones can see times in their local time without needing conversion
of those times by other software.
2008-03-21 Berend de Boer <[email protected]>
* The parser now finds names as "week 1 date" a valid name. Names
still have to start with a character, but numbers in names now
accepted as well. Leads to less contrived names in some cases.
2008-02-23 Berend de Boer <[email protected]>
* Xplain combine function now takes any number of operands,
making it more convenient to use.
2008-02-19 Berend de Boer <[email protected]>
* MySQL 5: string concatenation was done with "+", should have
been using the concat operator.
2008-01-24 Berend de Boer <[email protected]>
* XML output: if an attribute is marked as optional, the optional
attribute is now set to true.
2008-01-02 Berend de Boer <[email protected]>
* PostgreSQL: combine function now correctly generates the
PostgreSQL string concatenator.
* Value definition parsing did not allow an and/or of two
values. So a statement like:
v1 = true.
v2 = false.
v3 = v1 and v2.
was forbidden. Solving this added a shift/reduce conflict, but
seems harmless at the moment.
2007-12-29 Berend de Boer <[email protected]>
* Improved error message when per property clause is incorrect.
* Fixed a long standing bug (from the beginning?) where an extend
would not use a long enough column name, if there was a value
statement somewhere before it, and the column name had to be
larger than 250 characters. After the value statement, the maximum
number of characters was always 250.
* xplain2sql didn't handle absolute paths in include or use. It
does now for unix style paths.
* Slightly optimized output when an extend is created in a procedure.
* The like operator was only used when a property was compared
with a string and the string contained the "%" character. But if
you use the combine function and one of the strings has a "*" in
it, the like operator will now also be used instead of the
equals.
2007-12-28 Berend de Boer <[email protected]>
* It's now possible to use if then else in a property list, such
as :
get t1 its if a1 then "yes" else "no".
Due to parsing issues an if instruction cannot occur as part of an
expression so things like 1 + if a1 then 2 else 3 won't work.
2007-12-24 Berend de Boer <[email protected]>
* Boolean parameters to a procedure generated a parsing error when
used in a logical expression.
2007-12-21 Berend de Boer <[email protected]>
* beta release 3.1.1. More testing done.
* Fixed bug in MySQL5 where update of extend using a literal
produced wrong code (bug introduced after last official release).
* Fixed bug where output of function using left outer joins was
wrong when another extension was involved.
2007-12-20 Berend de Boer <[email protected]>
* XML output for the columns of a table has two new attributes:
references is the type to which the attribute references if the
attribute is a generalization. sqlReferences is the table name in
that case.
2007-12-18 Berend de Boer <[email protected]>
* Domain (C2) emitted a varchar instead of char (Fidel).
2007-12-13 Berend de Boer <[email protected]>
* Value definition did not support the type cast functions like
real. Having those is really useful when calling externaly
functions for which xplain2sql doesn't have the type information
so they are always defined as varchar(255). But by adding an
explicit cast the value will have the correct type.
2007-12-10 Berend de Boer <[email protected]>
* PostgreSQL: can now create special procedure "trigger
procedure" instead of just "procedure" which generates output so
the stored procedure can be used as a trigger.
* beta release 3.1.0. However has undergone minimal testing.
* Literal SQL expression wasn't allowed in a value definition.
2007-10-12 Berend de Boer <[email protected]>
* MySQL 5: return a value from within a stored procedure returned
an ugly column name, something as @"last_customer". Now the column
name looks better, but this change might break existing code.
2007-07-03 Berend de Boer <[email protected]>
* XML output: crash when a get with a function used an expression
to calculate the total (total t its a * 2).
* PostgreSQL: crash when a get with a function used an expression
to calculate the total (total t its a * 2).
2007-05-30 Berend de Boer <[email protected]>
* PostgreSQL: breaking change: PostgreSQL doesn't really support
identifiers with spaces, for example if you have a sequential
primary key column with a space in it, PostgreSQL will generate an
implicit sequence which will have a name also with a space in
it. But you won't be able to access that sequence ever, PostgreSQL
will give the strange warning 'invalid name syntax'. So PostgreSQL
no longer emits spaces for names, they're always replaced by
underscores, until this issue gets fixed.
* PostgreSQL 8.1: plsql code stored procedures is no longer
emited in a quoted block but it uses the $$ characters as
delimiter.
* PostgreSQL: get max t its some_date emitted incorrect SQL when
used inside a procedure.
* crash when extending a type twice with the same attribute name,
instead of a proper error message.
2007-05-28 Berend de Boer <[email protected]>
* xplain2sql didn't handle an init of the form:
init t its b = (name = "boss").
This was due to the fact that this was illegal syntax according to
the Xplain BNF, but there's not reason to forbid it, it's probably
an oversight in the official manual. Because of parsing issues,
logical expressions need to be between parenthesis.
* SQL optimization: most optimizers handle joins better than
subselect these days, especially mysql handles subselect pretty
badly. xplain2sql now emits (left outer) joins + a group by for
the count, min, max and total functions, leading to much better
code. The some function could be optimized in certain cases as
well, but that's not yet done.
2007-05-25 Berend de Boer <[email protected]>
* Xplain extension to mimick SQL insert into ... select:
get type1 its attribute1, attribute2
insert type2 its attribute3, attribute4.
It allows multiple inserts into a destination table from a
source table. Useful for backups or copying configurations to an
order for example.
2007-05-24 Berend de Boer <[email protected]>
* assertion statement generated wrong code with a function
expression.
2007-05-21 Berend de Boer <[email protected]>
* PostgreSQL: if an Xplain function called a user procedure to
return the value of an attribute, xplain2sql would crash if that
statement appeared inside a procedure.
42007-05-14 Berend de Boer <[email protected]>
* assert statement generated wrong code when its expression
used another asserted attribute.
2007-05-07 Berend de Boer <[email protected]>
* Crash when reading file from stdin (thanks Josh Purinton), as
in xplain2sql < ../samples/test.ddl.
2007-04-19 Berend de Boer <[email protected]>
* Support added for extension with explicit domain. Useful when
representation cannot be calculated, for example if you extend by
calling a user defined SQL function.
2007-04-02 Berend de Boer <[email protected]>
* MySQL 5: support for using extended attributes in where clause
of delete.
* SQL Server: if-then-else expression generated incorrect code.
* SQL Server: complex update fix, columns in set expression were
not properly prefixed, if two tables had the same column name an
ambiguous column name message would result.
* SQL Server: complex update of an extension generated a left
outer join in from clause instead of inner join.
* PostgreSQL 8.1 support added. Default pgsql is now PostgreSQL
8.1.
* All dialects should now allow updating of attributes
with any value, be it another extended attribute or an its list.
* All dialects should now allow updating of extended attributes
with any value, be it another extended attribute or an its list.
2007-03-10 Berend de Boer <[email protected]>
* release 3.0.
2007-03-08 Berend de Boer <[email protected]>
* XML output now includes the best matching XML Schema data type.
* MySQL 5: temporary tables were not dropped at the end of a
procedure, so explicit drops added before creating them.
* MySQL 5: wrong default value "-" when an init statement assigned
systemdate to a date.
2007-03-02 Berend de Boer <[email protected]>
* beta 2.5.1.
2007-02-09 Berend de Boer <[email protected]>
* MySQL 5: emit drop if exists statement before creating a table.
2007-01-22 Berend de Boer <[email protected]>
* Oracle: extend output changes: no index created for temporary
extend table. And preserves rows accross commits, because it is
somewhat unclear what a commit is. It empties the table too soon
without it, better to retain the data.
* SQLite: assert output did not emit the proper view dialect.
* Oracle: init [default] support.
* if-then-else support in init [default] statements for dialects
that support triggers.
2007-01-22 Berend de Boer <[email protected]>
* beta 2.5.0.
* Oracle output postcondition violation when compiled with ISE
5.6 for type representation (I10).
* Some example Eiffel classes and style sheets added to generate
Eiffel middleware code using ECLI, see ecli_instance.xsl.
* Additional chapter in manual detailing how to use xplain2sql i
a legacy environment.
* DB2: output for procedure containing get with function was
incorrect.
2007-01-20 Berend de Boer <[email protected]>
* Error reporting improved in certain cases.
* Full assertion supported added for all dialects, including
complex and functions.
2006-12-18 Berend de Boer <[email protected]>
* SQL: conversion for "- (a + b)" with explicit parentheses would
also lead to incorrect output.
* SQL: serious issue with translation: output emitted additional
parentheses, but that doesn't work in the case of: 5 - 3 + 3. The
anser is five, but xplain2sql turned this into 5 - (3 + 3), giving
-1 as the answer...
No implicit parentheses are added anymore unless explicitly provided.
2006-11-28 Berend de Boer <[email protected]>
* Ugly hack added: you can now use '{' the insert SQL at any point
in an expression. The SQL is taken literally and inserted.
2006-09-13 Berend de Boer <[email protected]>
* Slightly different output for PostgreSQL stored
procedures. Names of parameters are now prefixed with 'a_' instead
of 'my_'.
* Value statement now also support calling existing SQL functions.
2006-09-07 Berend de Boer <[email protected]>
* Support added for dialects that do not support a join clause in
the delete statement. A subselect is now emitted for such dialects.
2006-09-05 Berend de Boer <[email protected]>
* if an attribute has been marked as optional, the SQL output now
does a left outer join. You shouldn't use the optional keyword in
applications developed from scratch in Xplain, but to support
legacy apps with an Xpain layer this can be quite valuable.
2006-09-02 Berend de Boer <[email protected]>
* PostgreSQL: any value which was updated, was declared twice.
2006-08-04 Berend de Boer <[email protected]>
* inserted keyword did not handle incorrect type.
2006-07-28 Berend de Boer <[email protected]>
* Warning is now given when a parameter to a stored procedure is
not used.
* Min or max function required a property, if one was absent the
parser would still accept it, but crash later one for particular
dialects. Now the parser generates a proper error message.
* PostgreSQL: procedures with a get with function (i.e. get count
something) were not implemented and when used, generated incorrect
sql.
2006-07-22 Berend de Boer <[email protected]>
* XML output for identifier and ncname was incorrect when the name
started with a number. This is possible when using quoted
names. But the result isn't a valid identifier in most languages.
2006-06-24 Berend de Boer <[email protected]>
* PostgreSQL 7.3: generated stored procedures for update and
delete had a "return 0" statement which isn't valid for PostgreSQL
8 when a function returns void.
2006-06-23 Berend de Boer <[email protected]>
* XML output: select statement now contains the name of the table
where the select came from.
2006-06-21 Berend de Boer <[email protected]>
* INSTALL file listed incorrect requirements (Roger Browne).
2006-06-16 Berend de Boer <[email protected]>
* release 2.4.
2006-06-15 Berend de Boer <[email protected]>
* if attribute listed after per was a known base or type, but not
the proper attribute of the type in question, a precondition
violation occurred. This did not affect the release version.
2006-06-05 Berend de Boer <[email protected]>
* PostgreSQL: incorrect code was emited when using values in a
stored procedure.
2006-05-25 Berend de Boer <[email protected]>
* PostgreSQL 7.3: name and time column names don't need to be
treates specially as they did in earlier versions. PostgreSQL 7.2
output still renames a column name to "name_".
2006-05-24 Berend de Boer <[email protected]>
* PostgreSQL: index on extend wasn't create inside a stored
procedure due to a wrongly inserted if statement.
2006-05-08 Berend de Boer <[email protected]>
* New option -pkformat. Next argument is the format of the primary
key. By default the primary key is "id_<type name>" but with:
-pkformat '$s_id'
this can be changed to "<type name>_id" for example. Useful when
trying to emulate output for an existing database. Note: in
Makefiles use something -pkformat '$$s_id'.
2006-01-07 Berend de Boer <[email protected]>
* PostgreSQL output now removes the generated return type for a
procedure that returns a result set. If this does not exist, a
warning message will be printed that can be ignored. Unfortunately
one cannot suppress this warning, but the resulting output is much
easier to copy and paste when one just wants to replace a stored
procedure.
2005-12-12 Berend de Boer <[email protected]>
* init expression that was a literal or constant was treated as an
init default expression, i.e. it could be overwritten at insert
time.
* Warning if an insert statement contains an assignment to an
attribute for which an init expression has been specified.
* Check if trajectory's lower value is higher than the upper value
in case the trajectory's numbers are 32 bit integers.
* Check if real trajectory fits in real domain.
* Check if integer enumeration fits in specified integer domain.
* Better error message if trajectory ("..") is used in an
enumeration.
2005-12-06 Berend de Boer <[email protected]>
* Init [default] expressions didn't work for many dialects when a
expression was used that involved multiplication or a
function. For example:
init default sale its discount = price * 0.10
would give incorrect SQL.
2005-12-02 Berend de Boer <[email protected]>
* beta release 2.3.
* An unrecognised command-line option is now treated as a fatal
error.
2005-12-01 Berend de Boer <[email protected]>
* Microsoft SQL output for a non literal init default was treated
as an init.
* InterBase 6 output treated a non constant init default as init.
* InterBase 6 emitted incorrect SQL in case an init expression was
not a constant.
* DB2 has now full init (default) support, i.e. anything
else than a constant value is now supported as well.
* An init (not an init default) other than a constant is now
converted slightly differently for some dialects. If such an init
had been specified, previously the column would allow a null
value. Now a default is specified and the trigger should set the
column to a proper value. Proper dialects check the null status of
a column after the trigger has been fired. In such cases the
column will always be not null. If dialects check the null status
of a column before firing the trigger, the column will still be
null.