2007-03-10 Berend de Boer * release 3.0. 2007-03-08 Berend de Boer * 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 * beta 2.5.1. 2007-02-09 Berend de Boer * MySQL 5: emit drop if exists statement before creating a table. 2007-01-22 Berend de Boer * 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 * 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 * Error reporting improved in certain cases. * Full assertion supported added for all dialects, including complex and functions. 2006-12-18 Berend de Boer * 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 * 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 * 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 * 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 * 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 * PostgreSQL: any value which was updated, was declared twice. 2006-08-04 Berend de Boer * inserted keyword did not handle incorrect type. 2006-07-28 Berend de Boer * 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 * 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 * 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 * XML output: select statement now contains the name of the table where the select came from. 2006-06-21 Berend de Boer * INSTALL file listed incorrect requirements (Roger Browne). 2006-06-16 Berend de Boer * release 2.4. 2006-06-15 Berend de Boer * 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 * PostgreSQL: incorrect code was emited when using values in a stored procedure. 2006-05-25 Berend de Boer * 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 * PostgreSQL: index on extend wasn't create inside a stored procedure due to a wrongly inserted if statement. 2006-05-08 Berend de Boer * New option -pkformat. Next argument is the format of the primary key. By default the primary key is "id_" but with: -pkformat '$s_id' this can be changed to "_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 * 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 * 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 * 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 * beta release 2.3. * An unrecognised command-line option is now treated as a fatal error. 2005-12-01 Berend de Boer * 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. Note that an init default still produces a column which allows null. This in order to be able distinguish if a user has supplied a value or not. 2005-11-30 Berend de Boer * DB2 output was wrong in case an init was an expression like 33 2. Defaults in DB2 can only be constants. * PostgreSQL treated init default als init. It now treats them appropriately. * Moved trigger support from SQL_GENERATOR to SQL_GENERATOR_WITH_TRIGGERS. 2005-11-28 Berend de Boer * Moved stored procedure support from SQL_GENERATOR to SQL_GENERATOR_WITH_SP. Cleans up code a bit and generators without this don't have to undefine lots what shouldn't trouble them in the first place. * SQLite 3 support. Quite complete. 2005-11-09 Berend de Boer * MySQL 5 support, very complete. Finally looks like a real database! Values are now connection specific. Subselects are supported. User procedures are now supported. 2005-06-21 Berend de Boer * Scanner now uses the new typing stuff introduced by Gobo 3.2. * Updated code to compile with latest rewrite of string formatting routines in Gobo. 2005-06-17 Berend de Boer * assert support for Transact-SQL and InterBase. Only supports simple expressions (like price * quantity) and they are translated to computed columns. The assert's domain restriction is not checked. * SQL Server 2000 support: -tsql or -tsql2000 actives this new target. Be warned that for the (I1) and (I2) data type no longer a tinyint is emitted. A tinyint has a range of 0..255, while in Xplain (I1) and (I2) can be negative as well. The SQL Server 7 target -tsql70 still emits tinyints in order not to break existing code. SQL Server 2000 supports big integers (up to (I19) before switching to the numeric data type). Reals can range from (R1,37) to (R38,0). 2005-06-16 Berend de Boer * If an undeclared parameter is used inside a procedure, an error is now emitted, previously the xplain2sql generated (wrong) code anyway. 2005-06-15 Berend de Boer * InterBase: workaround for missing coalesce function implemented. This means that functions like min or max can now be used safely. 2005-06-13 Berend de Boer * There is now a warning if an integer trajectory exceeds the limit of the defined integer. I.e. if you specify the trajectory (1..100) for (I2). This should be (1..99) to avoid the warning. * InterBase: Boolean domain now includes proper checks that its value can only be null, a 'T' or an 'F'. * InterBase: use of any and nil functions in an extend in InterBase generated incorrect output. The select statement in InterBase needs a from table, and the output didn't use the InterBase equivalent of the Oracle dual table. * InterBase 4: support dropped. 2005-03-01 Berend de Boer * release 2.2. 2005-02-17 Berend de Boer * rename_sp.xsl: stored procedure that emits rename statements for Microsft SQL Server in case one wants to use the new -nospprefix option. 2005-02-03 Berend de Boer * beta 2.1.1 released. * delph_makefile.xsl: new example style sheet that shows how to generate a makefile which generates all the classes that were previously created with the -delphi switch. 2005-01-25 Berend de Boer * InterBase and PostgreSQL index names are global. Method of generating index names for extends could therefore easily generate a non-unique index if the name of the extended attribute was the same for two different tables. Now the table name is included in the name as well. 2005-01-19 Berend de Boer * All stored procedures started with the "sp_" prefix. This seems to have some performance impact with Micrsoft SQL Server as it looks in the master database first. It's unsure if this is noticable, but there is a new option "-nospprefix" that creates stored procedure names without any prefix (Jacco Eerland). * Constraint names now only add a number to the name if the name is not unique. This should help with creating update scripts (Servaas Goossen). Use "-oldconstraintnames" to get the previous behaviour in case the new behaviour doesn't work. 2004-11-30 Berend de Boer * Transact SQL output: use set instead of select to change a value. 2004-10-14 Berend de Boer * Using a value in an expression inside a PostgreSQL stored procedure generated incorrect code. * Code for assigning the result of a set function to a value inside a stored procedure generated incorrect code for Postgres SQL. 2004-10-13 Berend de Boer * xplain2sql now supports giving a value a new value within the same scope. Previously this led to a warning and possibly incorrect code generation. Full support is only provided for SQL dialects that support variables in all cases (not just procedures) or support dropping columns from a table. 2004-08-06 Berend de Boer * It is now possible to create a "recompiled procedure" instead of just a "procedure". Only useful for SQL Server, emits a procedure with the 'with recompile' option. It seems SQL Server 2000 cached execution plans for temporary tables with the same names, although created in different stored procedures and with wildly different content. This leads to havoc in certain cases (execution times of hours). 2004-03-04 Berend de Boer * beta 2.1 released. 2004-03-02 Berend de Boer * Oracle output now forbids updating the primary key. * -view option now properly quotes names (thanks Martin van Dinther). But -view is not an option that adds something at the moment. * Oracle sequence now includes the maximum value allowed for the type that has an auto-generated primary key. Thanks to Martin van Dinther for the suggestions. * The minimum value of an Oracle sequence does not start with 1000 if the primary key is of length 3 or less. * Column number is now reported on errors or warnings. * Line/column number is now counted differently. That fixed a problem where line numbers were incorrect with multi-line strings. 2004-02-12 Berend de Boer * Added support for the four conversion functions integer (), real (), string () and datef(). xplain2sql does no checks yet, so casting a "1" to a date will probably not work. And PostgreSQL doesn't seem to like conversion of varchar columns to integer or floats. 2004-02-06 Berend de Boer * If you had more than one parameter for a PostgreSQL procedure, the output was incorrect. Basically the second and next parameters had the same value as the first parameter. 2004-01-24 Berend de Boer * All mathematical functions are now recognized as keywords. Now code is as yet generated. 2004-01-16 Berend de Boer * PostgreSQL output now empties an existing temporary table. Temporary tables are created when an extend is created. It is now possible to call a stored procedure that creates an extend multiple times per session. Previously the stored procedure would fail the second time, because the extend did already exist and the code tried to create it again. 2004-01-10 Berend de Boer * PostgresSQL output caused a crash for a get statement with an expression (for example a + b) inside a stored procedure. 2003-12-24 Berend de Boer * InterBase code does not generate default values anymore when there is nothing to insert. Could happen in an insert stored procedure. * Fixed crashes in debug mode when using an empty string or when using """". 2003-12-24 Berend de Boer * Microsoft SQL Server wants to see a like operator when comparing a string to a text (memo) field. 2003-12-23 Berend de Boer * Added support for the * and ? operators. When these two characters occur in a constant string, the like operator is used instead of the equality operator. Using wild cards without a special operator is a mistake in my opinion. Perhaps a future version will introduce the like and not like operators. 2003-12-16 Berend de Boer * If a file was included with a .use (i.e. don't generate code for it) and that file had a .include, code was generated for the .include and the last statement before the .include. 2003-11-29 Berend de Boer * An alphanumeric primary key was still created with the char datatype instead of the varchar datatype. Should have switched when (A) was transformed to varchar (thanks to Martin van Dinther). 2003-11-11 Berend de Boer * Transact SQL 7.0 now starts every procedure with set xact_abort on. Any error inside the stored procedure will abort the procedure and rollback the transaction. 2003-11-04 Berend de Boer * Added -pgsql72 switch to emit the older Postgres SQL. Not sure if everything works on 7.2 as it will not be regularly tested against that version. 2003-10-30 Berend de Boer * XML generation now includes whether an attribute is a specialization in the table output and select output in a procedure. 2003-10-28 Berend de Boer * PostgreSQL now supports the some function. John Wiggins notified me that this should work in PostgreSQL 7.3, and it did indeed. 2003-10-27 Berend de Boer * PostgreSQL now allows purging of constants (thanks John Wiggins for the suggestion). * PostgreSQL Procedures that return a result set now use new functionality available in 7.3. The output of xplain2sql is now really limited to postgreSQL 7.3. 2003-10-15 Berend de Boer * Representation listed in xplain2sql.xml for output of the value statement for a character value was erroneously still (V). It is now (A). * Error is now reported when given primary key is not integer for insert on type with integer primary key. * Dropped support old style auto primary key, i.e. "*" instead of just *. * Dropped support for -delphi and -ado. * -inheritkey support dropped. * Extends now always create a unique index on the primary key column of the extended table. Speeds up certain queries enormously. Use -noextendindex to disable this behaviour. 2003-09-15 Berend de Boer * Release 2.0. * Delphi mw_ado.pas file is changed to include ADOInt, the unit supplied with Delphi 5 and higher, instead of ADODB_TLB, a custom generated Delphi wrapper based on the ADO type library. This means that the current unit works with the XSLT script. It does no longer compile with the -delphi -ado output. * Added new script delphi_ado_class.xsl to translate a type in an xplain2sql.xml file to a middleware class for Delphi. This will replace the existing -ado -delphi stuff that was fairly specific for a single company. 2003-09-10 Berend de Boer * Transact-SQL 7 code emited a "distinct top 1" for the some function. That distinct should not be there and in fact, it slowed down queries enormously. * Crash if attempt was made to refer to attribute of extension that was a type. No crash now, you get warning that extension doesn't have that attribute. This should work in a future release. 2003-09-08 Berend de Boer * Quoted strings were not handled correctly. Quoting should be done like this "this "" is a double quote" However, the output did have "" instead of just a single ". 2003-08-28 Berend de Boer * Delphi ADO generator emitted adChar for A data type. Due to change to output of varchar for A data type, it now emits adVarChar. Doesn't seem compatible with the -oldvarchar option I'm afraid. As I no longer use this option, please let me know if this is a problem for anyone. 2003-08-20 Berend de Boer * XML output now emits the insert/update/delete parameter name for every column. 2003-08-16 Berend de Boer * When an A representation was used in the output, the XML representation emitted the obsolete V representation. 2003-08-15 Berend de Boer * release candidate 2, version 1.9.3. 2003-08-14 Berend de Boer * Delphi ADO middleware generation changed so it compiles with Delphi 7. Thanks to Jacco Eerland for suggesting this fix. 2003-08-06 Berend de Boer * Transact SQL update output produced better code because a from clause is now emitted. So no subselects are needed to retrieve information. * Because Transact-SQL supports a from clause in an update and delete statement, the output for selecting a value of an extended column didn't need to use subselects. And subselects are slow in Transact-SQL. 2003-07-29 Berend de Boer * Oracle doesn't have True Booleans as well. Output now turns expressions into the emulated char(1). * Output for Oracle now includes an exit statement at the end. 2003-07-26 Berend de Boer * A count didn't have a coalesce because I thought null values couldn't occur. That's wrong, in the following example attributes can be null and SQL Dialects might complain about discarding null values. get node = prev_node. count node its prev_node. In such cases a coalesce is added to the count and all prev_nodes that are null are counted as a single distinct value. This is unlike SQL where a null isn't equal to any other null. 2003-07-24 Berend de Boer * And there were more cases where a Boolean didn't work correctly for SQL Server. Basic issue is that SQL Server doesn't have a True Boolean data type. I hope I fixed them all now. * Generated code for SQL Server was not correct when a Boolean value was assigned to a value. Example: value v = (1 = 2). Now Boolean expressions should be correctly cast to Booleans in all cases. 2003-07-22 Berend de Boer * Generated SQL for updating an extended attribute with a literal value was not optimal for Microsoft SQL Server. 2003-07-19 Berend de Boer * beta 1.9.2. 2003-07-16 Berend de Boer * Oracle treats empty strings as nulls. As Xplain does not support nulls, empty strings are emitted as a string with a single space. 2003-07-14 Berend de Boer * PostgreSQL does not seem to need a from clause I detected. That's good. * Output for value statement in DB2 stored procedure worked only when the XplainConstant table was created. I've detected the DB2 values statement, so it should work in more cases now. * Now uses SYSIBM.DUMMY1 for DB2 when a table with one row is needed. Users need to have select permissions on this table. * It seems the PostgreSQL setval function takes quoted identifiers. Perhaps earlier versions didn't? Now emits quoted identifers when correcting the auto-generated primary key if you have an insert with an explicit identify. * InterBase output now has correct insert stored procedure code when there are no input parameters. Can happen when there are inits on a type, so the insert can only have default values. As InterBase does not support the default values clause on an insert, the generated code is still incorrect though. * inserted statement (retrieves last auto-generated pk) did not generate code for InterBase. 2003-07-12 Berend de Boer * InterBase now supports stored procedures. For the first time, value statements are now really useful in InterBase. Output of a stored procedure when it emits a value or an instance can be different though. It should be equal, so both should return a result set. But I've no idea if this works at all. 2003-07-03 Berend de Boer * The value output in Transact SQL now has a proper column name, the name of the value itself. Previously the column was unnamed. * XML output now includes a new attribute ncname. This should be the identifier in SQL, without quotes and with spaces replaced by '-'. It is useful as a tag name in XML you might want to generate. 2003-07-02 Berend de Boer * Interbase stored procedure output was incorrect if there were no parameters specified. 2003-06-24 Berend de Boer * It seems there is no Xplain syntax to delete an instance if you have an instance id in a value. Therefore I invented my own. Use the value between parentheses where an idstring is epxected. Example: value my id = 1. delete my type (my id). should now have the desired effect. * Unmanaged parameters had to be base or type names. That sort of defeated its entire purpose. I.e. if you had parameters with :some name some name had to be a known base or type name. In 1.3.1 this was not necessary. And it should not be necessary. 2003-06-10 Berend de Boer * PostgreSQL now supports user procedures. Extends probably do not work. get and value statements are fine. * PostgreSQL output now generates insert/update/delete stored procedures. * This implies that output for PostgreSQL does now use ANSI 92 style joins. * Updated PostgreSQL output to 7.3.3. Support for earlier versions is dropped, but if you really need it and 7.3.3 output doesn't work for you, let me know, and I'll bring it back in. 2003-06-06 Berend de Boer * Boolean otput for SQL Server 7 is changed so it should now return a bit value instead of an integer value. This is done by emitting a cast(1 as bit) instead of just a 1. * It seems that xplain2sql is compilable again with SmartEiffel 1.1rc1. The last version that could do that was 1.0 beta 2. 2003-05-06 Berend de Boer * Delete statement for Transact-SQL can use an its in its where clause. This is not supported for all other dialects, but it wasn't in the docs. 2003-04-19 Berend de Boer * beta release 1.9.1. * license updated to Eiffel Forum License, version 2. This one is GPL and OSF compatible. * Oracle output does now do stored procedures. 2003-03-31 Berend de Boer * Output for column A is now a varchar. Breaks previous behaviour! Use -oldA switch to have the behaviour where just a char was outputted. Use domain C to really get char output instead of varchar. 2003-01-31 Berend de Boer * Added support for comparison to NULL. This is useful when dealing with linked lists and finding the head or tail of it. I'm a bit unsure what the exact Xplain way is to deal with this, but the article "Semantic Modeling of Successive Events Applied to Version Management" led me to believe that these are the only allowed and sensible comparisons: get t its a = null. get t its a != null. Any other comparison, or even order like get t its null = a. get t its a > null. is rejected. 2003-01-30 Berend de Boer * Added function id() which is replaced by the id column of the table. Use of a function like this is probably extremely limited, and any appearance should be viewed with utmost suspicion. * Functions are now only parsed as functions when the next token is a '('. Previously names as 'string' or 'newdate' were forbidden as attribute names, because they would be recognized as functions. This is now allowed. 2003-01-29 Berend de Boer * SQL output for some used a column name that was not prefixed. 2002-12-23 Berend de Boer * First stage of Oracle SQL dialect translation working. 2002-12-18 Berend de Boer * Boolean assignment also didn't work for updates, i.e.: update t its b = (a = 1). failed for Transact SQL as well. Works fine now. 2002-12-17 Berend de Boer * Parser has become very strict where SQL was allowed. SQL code is now only allowed where an Xplain statement is allowed. Previously SQL code was dumped by the scanner, as soon as it was read, to standard output, so it could end up in any place. With this change, SQL code in stored procedures is now also supported. * MS SQL Server output now drops a procedure if it already exists. Makes it easier to rerun scripts. * Added support for extend with a boolean attribute for MS SQL Server. This dialect doesn't have a True Boolean data type, so now the proper mapping is generated to turn a True into a 1 and a False into a 0. 2002-11-06 Berend de Boer * Output for get with function was wrong as it included a from table. So you basically got the functions value times every row in that table. The SQL code for a function has now been rewritten. This also influences the output of extends. Output looks shorter now, but I remember rewriting it already a few times, because of bugs in previous implementations. So perhaps old bugs pop up again )-: 2002-11-05 Berend de Boer * delete supported in stored procedures. * update supported in stored procedures. * Very limited support for updating extended columns. The limit is in the where clause. Basically, no where clause is allowed. Or the where clause should just contain the extended column it self. Updating the extended column of a given single instance also works. * extended columns can now be used in delete statement. 2002-10-11 Berend de Boer * get statement now always outputs an order by clause. The default is the instance id. This is a breaking change for code that relies on some unspecified default sort order. But that code was broken anyway, any change in index could have changed the sort order. 2002-10-09 Berend de Boer * extend names now should be unique, i.e. they should not be the same as an existing base, type, value or constant. The basic reason is a constant or value. For example the following code is ambiguous: constant c (I1). type t (I1) = a. extend t with c = 1. get t where a = c. Does the c refer to the constant or to the extension? To avoid this confusion, xplain2sql now refuses potentially ambiguous extension names. * Obscure -inheritkey option made obsolete. This was the way a predecessor of xplain2sq used to generate SQL. Didn't support multiple inheritance though. As it is not really supported, and I haven't used it for years, I'm phasing it out. * Added support for extend inside stored procedures. 2002-10-08 Berend de Boer * A get statement could be translated into a select statement that returned to many columns. This occurred when a join was needed in the select. I.e. get t. became select * from t while it should have been select t.* from t Not all dialects support prefixing the * with the table name, so this issue is not solved. When a specific dialect has problems, let me know and I attempt to generate better code for that dialect. Also extended columns are not in the output, you have to use its to get them. This might change in the future. * Transact SQL code for advanced inits (that require selects) was not correct, it missed a set nocount, so the insert stored procedure didn't return the correct identifier or something like that. Or perhaps the additional result count disturbed code that read results sets. 2002-10-07 Berend de Boer * If an attribute has an init statement, it is no longer listed as a parameter in the insert stored procedure. If it has an init default statement, it still is listed. 2002-10-04 Berend de Boer * Now literal constants can be used in inserts. Previously a subselect was generated, which wasn't supported by many SQL dialects. 2002-10-03 Berend de Boer * New inserted keyword that returns the last inserted auto-generated primary key, very useful in stored procedures. Use as: insert t * its a = "something". last id = inserted t. Note that many SQL dialects (DB2, Microsoft TSQL) only can return the last inserted key, which is not type specific. * insert statement is supported in stored procedures. * Select of a value had set nocount on for SQL server. Not sure what would happen in that case, probably receiver wouldn't see the row, even if one was there. 2002-08-21 Berend de Boer * Added support for value inside stored procedures. Only Transact SQL and DB2 probably work correctly. On all platforms that do not support temporary tables, value does work correctly only in the single-user case. Note that for DB2 you *must* define an Xplain constant somewhere, because of some trick necessary to retrieve the value. A useful thing is to define a database version constant. * Name of table where Xplain constants were stored, was called XplainVariable. This was from the time I thought constants were variable, i.e. you could change them. That's not true, i.e. constants get there value during the data definition phase, and cannot be changed later. To better reflect this, the table is now called XplainConstant. 2002-08-16 Berend de Boer * Support removed for old construct of instance selection in value selection. See for details the first comment in 1.0.3. Only the correct construct works now. * It seems I got the parsing for insert with automatic identification wrong. I asked the user to specify: insert t "*" its a = 1. This should have been: insert t * its a = 1. The old format is still supported, but a warning is generated. 2002-08-14 Berend de Boer * Added -xml option, outputs description generated code to XML. This can be used in XSLT style sheet to develop code generators. Format of output is in mw_xplain2sql.dtd. * -ecli option removed. In time the -delphi option also will be removed, when I have an XSLT style sheet that does the same as the current code generation does. 2002-08-13 Berend de Boer * Added support for stored procedure. Use the new Xplain keyword procedure to embed statements in a stored procedure. Only the get statement is currently supported. See manual for details. * DB2 inserts where instance identity is specified, should now work correctly. Previously it was possible to insert identities, but they probably would conflict with DB/2 generated values sooner or later. It seems you need Fixpack 2 for this to work. 2002-08-12 Berend de Boer * DB2 outputs now a clob data type instead of a long varchar as that more matches what is meant by a T data type. The long varchar supported just 32700, now up to 1MB is supported, and can easily be extended. How to do this portably, I don't know yet. Perhaps specify a size after the T data type? * DB2 has now insert, update and delete stored procedure output. 2002-08-09 Berend de Boer * DB2 output now uses @ as command separator, else stored procedure support could not be implemented. I didn't have the db2udp function (whatever that is), so to active stored procedure support I had to do this in my db2inst/sqllib/profile directory: ln -s /usr/IBMdb2/V7.1/function/db2udp . * PostgreSQL now outputs serial8 if the primary key is longer as 9 digits. Not all versions of PostgreSQL covered by -postgres support this, perhaps should add a new switch. 2002-08-08 Berend de Boer * Added option -ecli, writes Eiffel classes specific for ecli to a mw subdirectory. This mw subdirectory must exist. This feature is unstable, not ready for general use. * At start of script now outputs which SQL dialect it targets. * Moved to ChangeLog for history, file History is obsolete now.