Revision History for AbaPerls – Details

This page lists all changes to the AbaPerls tools and documentation from the first public release L1.0.0009 and on. (OK, not all changes, but the level of detail is fairly high.) The horizontal lines divide external public releases from each other. For a compact history for the external releases, see this page.


2010-10-24

The seventh public release of AbaPerls,  label L1.0.0190.

2010-09-01

AbaPerls now supports table types and XML schema collections. They can be defined in the file types .TBLTYP and .XMLSC  respectively. These files resides in the TYPE directory. In DBBUILD and DBUPDGEN, XML schema collections are loaded before regular types (.TYP files), whereas table types are loaded after. You can also define a table type or an XML schema collection in a .SP or .SQLFUN file, if the type/schema is to be used by this procedure only. In this case the name must follow certain rules. See further in the section about the SP directory on the Structure page.

AbaPerls now supports CREATE TYPE to define type. EXEC sp_addtype is still supported.

You can now create an assembly directly through a source file written in C# or Visual Basic .Net. To do this, you need to supply the $COMPILE directive in the .ASSEM file. You find more information on the CLR page. As a consequence of this change, version-checks now also include .ASSEM files.

If you run DBBUILD -rebuild for a single subsystem, AbaPerls now clears the settings configuration settings only for that subsystem, and  leaves global settings and settings for other subsystems unchanged. Note also that the subsystem is rebuilt using the global configuration settings.

When you had expressions with .nodes(), AbaPerls could produce a internal error about too many iterations. This problem has been fixed.

I'm doing a minor overhaul of the design of the manual pages, and in a transitional period, the design between different pages will vary.

2010-05-25

ABASQL now masks any password when printing the command-line options.

2010-04-28

Added two new macros $DBPERM and $SERVERPERM that permits you to encapsulate permissions that can not be handled with regular ownership chaining. Examples include use of dynamic SQL and BULK INSERT. See the new topic Modules with Special Permissions for more details.

Added an argument to the $DLLINCLUDE macro where you can specify the permission set for the assembly. Using this directive, you can install unsafe assemblies on databases that are not marked as trustworthy. See the topic Privileged Assemblies on the CLR page for details.

2010-03-23

Fixed bug in RUNSPS which caused RUNSPS to loop indefinitely if you did not supply any parameter definition at all, for instance because the procedure does not have any.

2010-03-03

Added the option -tablesfirst to DBBUILD. This option specifies an alternate build order where tables and views in all subsystem are built before any functions or procedures are loaded.

Augmented the AbaPerls file-lookup order, so that AbaPerls now looks for the file in a subsystem directory before trying a an AbaPerls SQL directory structure on the same level.

2010-02-26

AbaPerls now supports use of WHERE clauses in the definition of index and statistics, so-called filtered indexes.

2009-11-25

RUNSPS is now able to read regular Excel books, and is not constraint to CSV files. Older CSV files still work with RUNSPS, as long as Excel can read them.

2009-05-18

DBBUILD and DOBCP now use the -q option with BCP to set the setting QUOTED_IDENTIFIER (which for some reason is not on by default with BCP.)

2009-02-09

DBUPDGEN no longer complains if the -VSS option disagrees with the project in the file, if the only difference is that one of them has /SQL and the other not.


2009-01-02

The sixth public release of AbaPerls, label L1.0.0091.

The tool PREPRC has been dropped.

2008-11-12

Fixed bug in aba_check_column, so that it now correctly returns 0 when -noexec is in effect.

2008-10-13

DBUPDGEN now generate update scripts that sets an error status on DOS level (i.e. %ERRORLEVEL%) if there are objects with names starting in old_ before the update starts, or when the update has completed.

2008-08-26

The rules for ABASQL in the version-check in the AbaPerls file-loading process have been modified. Previously AbaPerls required that when a file was loaded from SourceSafe that the path was the same as when the file was most recently loaded. This has been changed so that the check is now performed against the SourceSafe path the subsystem was most recently loaded from. The check is only effective if the ABAPERLS subsystem in the database is upgraded to label L1.0.0081. For older versions of the ABAPERLS subsystem, the old version check is retained.

2008-07-29

Important note: to get the updated version of ap_scriptname, you need to run an update script, ap_up_1-0052-0080.pl. However, this script does not run on SQL 2005 RTM and SP1. The script runs on SQL 2000 and earler, SQL 2005 SP2 and SQL 2008. The reason is that sp_rename SQL 2005 RTM/SP1 checks for referencing stored procedures when you rename a type, and ap_scriptname is used by the procedure that loads objects into abasysobjects, resulting in a catch-22 situation.

2008-03-18

ABASQL now requires that you specify -subsystem also for .TBL files. (As failing to do so when you create the table the first time, could buy problems further down the road.)

2008-03-10

INSFILGEN used to insert an extra go after each 40th call. This has been removed. (It was a workaround for problems with the tools in SQL 6.5)

2008-03-05

Added support for synonyms. See the page Using Synonyms for details.

2008-03-02

Bugfix: it was not possible to connect with AbaPerls to databases with space or other special characters in the name.

2008-02-03

Because of changes in SQL 2005 SP2, LISTERRS failed to list calls to missing stored procedure. This has been fixed. Also, AbaPerls also correctly handles the same situations with SQL 2008.

2008-01-12

The fifth external release, L1.0.0060.

When using SourceSafe 2005, DBUPDGEN could crash while reading the object histories. This has been addressed.

AbaPerls is now able to understand Common Table Expressions (CTEs). Support for the MERGE statement in SQL 2008 added.

2008-01-01

There was a problem with SourceSafe that made it impossible to dates with -label in various tools with SourceSafe 2005. AbaPerls now has a workaround for this problem.

It is now possible to use the @ character as separator for site-specific files as an alternate to % which has been outlawed by SourceSafe since 6.0d.

2007-09-17

ABASQL now has the options -noexec and -get, and ABASQL is now able to read SourceSafe information from SS-FILES.LIS, permitting using ABASQL to install files at customer sites to which you have no direct connection.

2007-08-30

AbaPerls no longer performs object checking for the pattern ident1.ident2.ident3(. Previously, AbaPerls attempted to verify this as a scalar user-defined function with the database part of the name included. However, in SQL 2005, there is no syntactical difference between the call to a UDF and the invocation of a type method of an XML or CLR UDT column. AbaPerls opts to validate two-part names, but not three-part names, that looks like function calls. As a consequence of this, you need to always use a table or alias prefix with your XML and CLR UDT column when you  need to invoke a method, for instance t.item.value().

A similar issue with the table-valued XML method .nodes has also been addressed. AbaPerls ignores three-part names that ends in nodes and are followed by a right parenthensis.

There was a bug with object checking, so that AbaPerls did not see a scalar function when it appear directly after a keyword. This bug has been fixed.

2007-08-15

Thanks to Koen de Vos, the update scripts generated by DBUPDGEN will now correctly transfer ON DELETE/UPDATE CASCDE and also NOT FOR REPLICATION when moving foreign keys from one table to another.

2007-06-05

DBBUILD and the update scripts generated by DBUPDGEN now accepts an option -User to permit you to specify a different SQL login than sa. AbaPerls verifies that the login you use – SQL login or Windows login – has dbo as the default schema. This applies to ABASQL as well.

DBBUILD and the update scripts generated by DBUPDGEN no longer sets the database in simple recovery, nor do they set a read-only database in read-write mode, but you need to cater for this yourself. As a consequence of this, the update scripts are no longer generated with the -trunctrue option.

2007-05-21

DBBUILD now uses the option -h "CHECK_CONSTRAINTS" with BCP to make sure that constraints trusted. Also added the utility procedure ap_zz_enable_constraints_sp to enable all constraints in a database. Added a note the page for DOBCP about constraint checking.

2006-11-20

2006-10-27

2006-10-19

The tool SPTRITEST has been removed. It was a useful tool on SQL 6.5, but less so on later versions.

2006-10-18

Changes to DOBCP:

2006-09-20

2006-08-25

AbaPerls now reads the real SRCSAFE.INI for the SourceSafe database, and if there is a definition of a journal file, it is copied to the SRCSAFE.INI that AbaPerls creates so that actions from tools like SSREPLACE and NEWSUBSYSVER are journaled appropriately.

2006-02-17

New feature in update scripts from DBUPDGEN: you can now have a final epilogue.

2005-12-28

2005-12-05

Bugfix: ABASQL would incorrectly report file successfully loaded, when it in fact it could not even find the file in SourceSafe.

2005-10-28

LISTERRS now knows how to filter out messages about missing stored procedures that appear later in the script. As a consequence of this DBBUILD no longer by default loads stored procedures twice. There is a new option, -sptwice, to request this in case you want full dependency information. Note that this is only possible to achieve on SQL 2005, due to flaws in SQL 2000 and earlier versions.

2005-10-21

The Preppis directives $MACRO_LONG and $ENDMACRO are now implemented.

2005-10-13

New option for SSGREP, -crossref, that causes SSGREP to print matches per unique string. This is good if you are looking for references to a couple of stored procedures or similar.

2005-04-29

The AbaPerls File-Loading Process now also replaces user-defined data types in schema declarations for OPENXML.

2005-04-27

LISTERRS no longer prints headers for subsystems in which there are no errors.

2005-02-01

The AbaPerls File-Loading Process now also checks for improper comparisons with NULL, e.g. WHERE x = NULL.

2005-01-27

When generating an update script, DBUPDGEN did not add code SET IDENTITY_INSERT ON, if the IDENTITY keyword followed NOT NULL in the table definition. This has been fixed.

2005-01-19

Several checks added/enhanced for the AbaPerls File-Loading Process:

2005-01-14

Added -log option to ABASQL.

2005-01-03

New tool PDREP95 for handling of reports generated by PowerDesigner 9.5.


2004-10-31

The fourth public release, L1.0.0040.

2004-09-10

See more about this on the pages for the, AbaPerls structure, the file-loading process, DBUPDGEN and ABASQL.

2004-07-08

Slight change in the table-updates generated by DBUPDGEN: there is now a variable $batchcol which makes a little easier to change the control column for the INSERT-loop.

2004-07-06

Two options for SSGREP and SSREPLACE: -type and -lang that you can use to constrain the tools to only work with files of certain types. For instance -lang SQL will constraint the search to SQL files.

2004-07-05

The AbaPerls file-loading process could incorrectly gave a style message for a computed column.

In the update scripts generated by DBUPDGEN, the table-updates now use RAISERROR WITH NOWAIT to print their messages, so that they are flushed to the log immediately. The first message for a table-update, which displays the number of rows to copy uses severity level 8, so that you can use LISTERRS to review the copying.

2004-05-19

LISTERRS now supports reading logs from update scripts generated by DBUPDGEN. To this end, there are some minor changes to the logs from DBBUILD and the update scripts.

INSFILGEN and LANGINSGEN now wants to you declare maximum lengths for parameters with string data, to avoid truncation when you run the INSERT-files. You declare these lengths in a MAXLEN section on the Config sheet. To begin with MAXLEN is not mandatory, but the plan is that it will eventually be.See further the INSFILGEN page.

2004-05-07

TBLFIX now formats computed columns nicely.


2004-05-03

The third public release, L1.0.0030.

2004-05-02

New features

Changes:

Bugfixes:

2004-04-28

When running AbaPerls with Perl 5.8.3 (or ActivePerl Build 809), you could get a run-time error in Perl just as ABASQL and similar tools were about to exit. I believe the cause is a bug in Perl, but a workaround is now in place.

2004-03-31

Bugfix in ap_sob_update_sp. When running an update script with name longer than 35 characters, the script failed with "binary or string data would be terminated". This has been fixed, so that the name is truncated to 35 characters when saved in abasubsystems. Since the change is in the stored procedure, you need to deploy this procedure to take benefit of the fix.

2004-02-17

Changes in DBBUILD:

2004-02-11

Changes in DBUPDGEN and for update scripts generated by DBUPDGEN:

2004-01-30

LANGINSGEN now supports multi-column keys.

2004-01-28

When using a config-file, and searching for the labels of the projects in the file where there is no explicit version-designator, the default behaviour of AbaPerls is now to consider only labels that match the standard AbaPerls label format LetterMajor.Middle.Minor. To permit you to override this behaviour, there are two new configuration options, -onlylabel and -notlabel.

2003-12-14

Bugfix: When DBUPDGEN was reading a table definition to generate a table-update, it failed to recognize CREATE TABLE if these words were in lowercase.

2003-11-22

Big news for the AbaPerls file-loading process:

2003-10-01

Object checking now also finds objects in other databases, albeit still with some restrictions. See Known Issues for details. You need to install the user defined function list_to_tbl and stored procedure ap_check_existance_sp in the database for the improved checking to work. Else object checking will revert to the old behaviour.

2003-08-15

INSFILGEN: Added property Postlude to the Config sheet.

2003-08-12

New tool NEWSUBSYSVER that packages the procedure to create new version-subprojects.

2003-07-03

During file-load, AbaPerls now creates a temp table #current$subsystem(subsystem varchar(80) NULL) which holds the name of the current subsystem.

When DBUPDGEN generates code for a table-update, it now adds check that the number of rows in the new table is the same as in the old table. See further the section on table updates in the article on DBUPDGEN.

Fixed header generated by INSFILGEN, so that it does not include entry from check-in of INSFILGEN itself.


2003-04-21

The second public release of AbaPerls, L1.0.0021. The changes down to 2003-11-03 are the changes since first public release. Pay particular attention to the changes 2003-01-22 and 2002-12-05, since they include significant functional changes.

2003-04-11

The -crypt option did not work properly when you used the keywords AFTER or INSTEAD OF in a trigger declaration.

2003-04-10

If a table file had been renamed, DBUPDGEN did not include that file in OBSOLETE-FILES. This had the effect that the objects in the file were not deleted from abasubsystems. Note that if a file is renamed, but the objects are not, this could lead to that the objects are dropped from the database entirely, if the file is loaded in a table-update that appears before OBSOLETE-FILES.

2003-04-05

Documentation fix: if there is a site-specific version of a file, and the main file changes, DBUPDGEN includes all the site-specific versions in the file. This is not a new feature, but the page for DBUPDGEN failed to mention this.

2003-04-04

Two changes for ABASQL, DBBUILD and the update scripts generated by DBUPDGEN:

2003-02-06

The update scripts generated by DBUPDGEN now creates a temp table #update$script that you can test for in triggers, to disable parts of the triggers when running an update script. Use it like this:

   IF object_id('tempdb..#update$script') IS NULL

2003-01-22

Database changes

There are several changes to the AbaPerls system tables. The main purpose of the changes is to permit two subsystems to have labels with the same Major, Middle and Minor, but have different letter and/or leading zeroes.

The new column abasubsystems.sortorder permits you define a sort order to that you can view abasubsystems and get the same order as in the config-file.

Other database changes are mainly of internal nature. See the database documentation for details.

To update the ABAPERLS subsystem to the new format, run the script ap_update_1.0.0020.pl which is in the SQL/SCRIPTS directory of the AbaPerls installation. You run this script as you run any other update script generated by DBUPDGEN.

The database update is not mandatory; that is, the tools will run against both the old format of the database (L1.0.0010) and the new format (L1.0.0020.)

Bug fixes

2003-01-14

TBLFIX now gives UNIQUE constraints unique names.

2002-12-27

News in INSFILGEN:

2002-12-23

Bug fix in INSFILGEN: when more than one single quote appeared in a value, the generated SQL would be syntactically incorrect.

2002-12-17

Some minor changes were made to TBLFIX so that it would handle scripts from PowerDesigner 9.5 without flaws.

2002-12-05

New or changed features

Database changes

Compatibility issues

Documentation issues

Bug fixes

2002-11-04

DBBUILD and the update scripts generated by DBUPDGEN now write a header to the log file with information about who and when and which command-line options that were in use. (Old update scripts will not print command-line options, though. Regenerate them to get this information.)

The header is included in the output from LISTERRS

 


2002-11-03

First public release of AbaPerls.